获取所需文件
你可以从受信任的证书颁发机构获取 SSL 证书,也可以自行生成。对于自签名证书,浏览器会显示证书不受信任的警告。以下是一个使用 Let’s Encrypt 获取免费 SSL 证书的教程
所需的文件有
- 证书(通常扩展名为 .crt)
- 解密后的私钥
前提条件
- 你需要有一个 DNS 多租户设置
- 你的站点应能通过有效域名访问
- 你需要服务器上的 root 权限
- 你需要一个通过受信任的证书颁发机构生成的有效证书,或一个自签名证书。
要从私有机构生成 .crt,通常需要生成一个 CSR(证书签名请求)。如果你已经有证书(.crt)文件,可以跳过此步骤。要生成 CSR 和对应的密钥文件,请运行以下命令:
openssl req -new -newkey rsa:2048 -nodes -keyout mydomain.com.key -out mydomain.com.csr
你需要将此 CSR(.csr)文件上传到私有证书颁发机构(例如 GoDaddy、ComodoSSL),以便据此生成有效的证书(.crt)文件。
如果你有多个证书(主证书和中间证书),则需要将它们拼接起来。例如:
cat your_certificate.crt CA.crt >> certificate_bundle.crt
同时确保你的私钥仅 root 用户可读:
chown root private.key
chmod 600 private.key
将这两个文件移动到合适的位置
mkdir /etc/nginx/conf.d/ssl
mv private.key /etc/nginx/conf.d/ssl/private.key
mv certificate_bundle.crt /etc/nginx/conf.d/ssl/certificate_bundle.crt
设置 nginx 配置
为你的站点设置证书和私钥的路径
bench set-ssl-certificate site1.local /etc/nginx/conf.d/ssl/certificate_bundle.crt
bench set-ssl-key site1.local /etc/nginx/conf.d/ssl/private.key
生成 nginx 配置
bench setup nginx
重新加载 nginx
sudo service nginx reload
或
systemctl reload nginx # 适用于 CentOS 7
现在你已经配置了 SSL,所有 HTTP 流量都将重定向到 HTTPS