配置 HTTPS

获取所需文件

你可以从受信任的证书颁发机构获取 SSL 证书,也可以自行生成。对于自签名证书,浏览器会显示证书不受信任的警告。以下是一个使用 Let’s Encrypt 获取免费 SSL 证书的教程

所需的文件有

  • 证书(通常扩展名为 .crt)
  • 解密后的私钥

前提条件

  1. 你需要有一个 DNS 多租户设置
  2. 你的站点应能通过有效域名访问
  3. 你需要服务器上的 root 权限
  4. 你需要一个通过受信任的证书颁发机构生成的有效证书,或一个自签名证书。

要从私有机构生成 .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