本指南将协助您在Nginx上安装SSL证书。以下我们使用Comodo PositiveSSL作为示例。但是,所有SSL的步骤都是相同的。
1. 在您的网站托管的服务器上上传证书。
对于Comodo证书,您应该接收到包含*.crt和*.ca-bundle文件的压缩文件案。
您可以从ZTABOX电子邮件中下载每个证书的完整捆绑文件。该压缩文件将包含您的证书的.crt文件和CA捆绑的.ca-bundle文件。
对于大多数Comodo 域名验证证书(例如PositiveSSL),文件将如下所示:
*youdomainname*.crt
*youdomainname*.ca-bundle
对于Nginx,需要将所有证书(域名的证书和CA证书)合并为单个文件。您的域名证书应该首先列在文件中,然后是CA证书的链。
如果您已经下载了完整的CABundle文件,可以用您下载的文件名替换链接文件的名称。COMODO_DV_SHA-256_bundle.crt是PositiveSSL证书的示例。它应如下所示:
$ cat *yourdomainname*.crt COMODO_DV_SHA-256_bundle.crt >> cert_chain.crt
或
$ cat *yourdomainname*.crt *yourdomainname*.ca-bundle >> cert_chain.crt
3. 编辑您的Nginx虚拟主机文件。
默认情况下,配置文件名为nginx.conf,并放置在/usr/local/nginx/conf、/etc/nginx或/usr/local/etc/nginx目录中。
如果您的虚拟主机中没有443端口的记录,则应手动添加它。
为了简化过程,您可以复制对于80端口的记录(默认情况下应在您的虚拟主机文件中)并将端口80更改为端口443。只需在不安全模块下方添加它。除了更改端口外,您还需要在记录中添加特殊行:
ssl on;
# ssl_certificate应指向包含合并证书的文件(您在第2步中创建的文件)
ssl_certificate /etc/ssl/cert_chain.crt;
# ssl_certificate_key应指向您使用生成CSR代码所生成的私钥,该私钥用于激活证书。
ssl_certificate_key /etc/ssl/*your_private_key*.key;
完成的443端口虚拟主机记录可能如下所示:
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/cert_chain.crt;
ssl_certificate_key /etc/ssl/yourdomainnamekey.key;
server_name
yourdomainname_com;
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
location / {
root /var/www/;
index index.html;
}
}
- 注意:从Nginx版本1.15.0开始,“ssl”指令已过时,应使用“listen”指令的“ssl”参数。因此,此类服务器上的虚拟主机将如下所示:
server {
listen 443 ssl;
ssl_certificate /etc/ssl/cert_chain.crt;
ssl_certificate_key /etc/ssl/yourdomainnamekey.key;
server_name
yourdomainname_com;
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
location / {
root /var/www/;
index index.html;
}
}
否则,您可能会在服务器重新启动后收到警告:
[warn]: "ssl"指令已过时,请使用"listen ... ssl"指令
从Nginx 1.15.0开始,还可以设置单个HTTP/HTTPS服务器。虚拟主机将如下所示:
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/ssl/cert_chain.crt;
ssl_certificate_key /etc/ssl/yourdomainnamekey.key;
server_name
yourdomainname_com;
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
location / {
root /var/www/;
index index.html;
}
}
注意!如果您使用的是多域名或通配符证书,则需要修改每个包含在证书中的域/子域的配置文件。 您需要指定要保护的域/子域,并在虚拟主机记录中按照上述方式引用相同的证书文件。
一旦您修改了虚拟主机文件,则必须重新启动Nginx以应用更改。您可以使用以下命令重新启动Nginx:
nginx -s reload