本指南將協助您在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