知识库

在 Nginx 安装 SSL 证书

本指南将协助您在Nginx上安装SSL证书。以下我们使用Comodo PositiveSSL作为示例。但是,所有SSL的步骤都是相同的。

1. 在您的网站托管的服务器上上传证书。

对于Comodo证书,您应该接收到包含*.crt和*.ca-bundle文件的压缩文件案。

您可以从ZTABOX电子邮件中下载每个证书的完整捆绑文件。该压缩文件将包含您的证书的.crt文件和CA捆绑的.ca-bundle文件。

对于大多数Comodo 域名验证证书(例如PositiveSSL),文件将如下所示:

*youdomainname*.crt
*youdomainname*.ca-bundle

2. 将所有证书合并为单个文件。

对于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