在 Nginx 上部署 HTTPS 证书涉及几个步骤,包括生成密钥和证书签名请求(CSR)、获取 SSL/TLS 证书(可以是自签名证书或从证书颁发机构(CA)获取的证书),然后在 Nginx 配置文件中配置这些证书。以下是一个详细的指南:
生成私钥和CSR
首先,使用 OpenSSL 生成一个私钥(通常命名为 private.key)和一个证书签名请求(CSR,通常命名为 domain.csr)。
bash
生成私钥
openssl genpkey -algorithm RSA -out private.key -pkeyopt rsa_keygen_bits:2048
生成CSR
openssl req -new -key private.key -out domain.csr \
-subj "/C=YourCountry/ST=YourState/L=YourCity/O=YourOrganization/OU=YourOrgUnit/CN=yourdomain.com"
在生成 CSR 的过程中,你需要填写一些信息,如国家(C)、州/省(ST)、城市(L)、组织(O)、组织单位(OU)和常见名称(CN,即你的域名)。
获取SSL/TLS证书
从证书颁发机构(CA)获取证书
将 domain.csr 文件提交给证书颁发机构(例如 Let's Encrypt、DigiCert、GoDaddy 等)。
根据 CA 的要求,可能还需要提供其他文件(如域名验证文件或组织验证文件)。
CA 验证后,你将收到一个 .crt 文件(证书文件)和一个可能的 .ca-bundle 文件(CA 的根证书和中间证书)。
使用Let's Encrypt(免费证书)
Let's Encrypt 提供了方便的自动化工具 Certbot 来获取和续订证书。
bash
安装Certbot(基于Ubuntu/Debian)
sudo apt update
sudo apt install certbot python3-certbot-nginx
使用Certbot获取证书并自动配置Nginx
sudo certbot --nginx
Certbot 会自动处理证书获取和 Nginx 配置更新。
配置Nginx使用HTTPS
编辑你的 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/yourdomain),添加或修改以下部分:
nginx
server {
listen 443 ssl;
server_name yourdomain.com;
证书和私钥文件路径
ssl_certificate /path/to/your/fullchain.crt; # 包含证书和中间证书
ssl_certificate_key /path/to/your/private.key;
SSL设置
ssl_protocols TLSv1.2 TLSv1.3; # 仅使用安全的协议
ssl_ciphers HIGH:!aNULL:!MD5; # 安全的加密算法
ssl_prefer_server_ciphers on; # 使用服务器指定的加密算法
location / {
# 你的其他配置
}
}
如果你还想同时支持HTTP重定向到HTTPS,可以添加以下server块
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
- 测试和重启Nginx
在保存并关闭配置文件后,测试 Nginx 配置是否正确:
bash
sudo nginx -t
如果配置正确,重启 Nginx 以应用更改:
[kod.kashou99.com)
[kod.lemir2.com)
[kod.kyznw.com)
[kod.limve.com)
[kod.ld5166.com)
[kod.lmysw.com)
[kod.lvfl.net)
[kod.malatoday.com)
[kod.makpara.net)
bash
sudo systemctl restart nginx
- 验证HTTPS连接
打开浏览器,访问 https://yourdomain.com,你应该看到一个绿色的锁图标,表示连接是安全的。
注意事项
证书续期:确保定期检查并续订证书,特别是对于从 CA 获取的证书,以避免证书过期导致的服务中断。
备份:定期备份你的私钥和证书文件。
安全性:确保你的 Nginx 配置文件和服务器具有适当的权限和安全性设置。
通过以上步骤,你应该能够在 Nginx 上成功部署 HTTPS 证书。
分类: Linux