Nginx配置SSL證書,大致分為5個步驟:
-
步驟1:申請一張測驗試用證書
-
步驟2:下載證書并上傳到服務器
-
步驟3:在服務器配置證書
-
步驟4(可選):配置HTTP強制跳轉HTTPS
-
步驟5:開放HTTPS訪問及驗證
下面開始我們的配置
步驟1:申請一張測驗試用證書
打開阿里云控制臺官網,搜索SSL,點擊進入SSL證書(應用安全)

選擇左側SSL證書,點擊免費證書

點擊立即購買,會彈出右側購買欄,選擇DV單域名證書【免費試用】,點擊下方購買

由于該證書限制只能有一個,所以接下來的步驟只能靠你自己了,根據提示完成購買即可,
購買完成后,會提示你是否進行申請審核,根據提示資訊完成審核,并自動決議DNS,下圖是決議后的DNS記錄

選擇Nginx版本,下載

下載完成后是一個以編號和域名的命名的zip檔案,之后進行解壓


解壓完成后可重命名成你想要的名稱,注意這兩個檔案的后綴分別是.key .pem
接下來,做Nginx中的準備作業,打開Xshell,或者其他工具,連接到云服務器
# 進入到Nginx服務器的conf目錄中(根據你自己的Nginx安裝目錄)
[root@clover ~]# cd /usr/local/application/server/nginx/conf/
# 新建cert檔案夾,用于存放證書檔案
[root@clover conf]# mkdir cert
# 進入cert目錄
[root@clover conf]# cd cert
打開xftp,將下載好的證書檔案上傳到cert檔案夾中,我在上傳前把檔案名稱改成了我設定的了

上傳完成后,查看cert檔案夾,確保已完成上傳

步驟3:在服務器配置證書
進行Nginx組態檔的配置
#退到conf檔案夾中
[root@clover cert]# cd ..
[root@clover conf]#
#建議先copy一份原來的nginx.conf檔案
[root@clover conf]# cp nginx.conf ./ nginx-copy.conf
#修改nginx.conf組態檔
[root@clover conf]# vim nginx.conf
#按i鍵進入編輯模式,
#在組態檔中定位到HTTP協議代碼片段(http{}),并在HTTP協議代碼里面添加以下server配置(如果server配置已存在,按照以下注釋內容修改相應配置即可),
以下屬性中,以ssl開頭的屬性表示與證書配置有關,
#server 是在http {} 片段里面的哦!
server {
listen 443 ssl;
#配置HTTPS的默認訪問埠為443,
#如果未在此處配置HTTPS的默認訪問埠,可能會造成Nginx無法啟動,
#如果您使用Nginx 1.15.0及以上版本,請使用listen 443 ssl代替listen 443和ssl on,
#需要將clover.fit替換成證書系結的域名(你的域名),
server_name clover.fit;
# dist是我配置的靜態資源訪問的路徑,如果你沒有修改,你的應該是html檔案夾
root dist;
index index.html index.htm;
#需要將clover.pem替換成已上傳的證書檔案的名稱(就是你上傳的那兩個檔案名稱),
ssl_certificate cert/clover.pem;
#需要將clover.key替換成已上傳的證書密鑰檔案的名稱(同上),
ssl_certificate_key cert/clover.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的型別,
ssl_protocols TLSv1.1 TLSv1.2; #表示使用的TLS協議的型別,
ssl_prefer_server_ciphers on;
location / {
root dist; #站點目錄,
index index.html index.htm;
}
}
步驟4(可選):配置HTTP強制跳轉HTTPS
如果您希望所有的HTTP訪問自動跳轉到HTTPS頁面,則可以在需要跳轉的HTTP站點下添加以下rewrite陳述句,
server {
listen 80;
#需要將clover替換成證書系結的域名,
server_name clover.fit;
# 將所有HTTP請求通過rewrite指令重定向到HTTPS,
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}
最后,貼上http片段中的完整代碼
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
#需要將clover.fit替換成證書系結的域名,
server_name clover.fit;
#將所有HTTP請求通過rewrite指令重定向到HTTPS,
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}
server {
listen 443 ssl;
server_name www.clover.fit;
root dist;
index index.html index.htm;
ssl_certificate cert/clover.pem;
ssl_certificate_key cert/clover.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的型別,
ssl_protocols TLSv1.1 TLSv1.2; #表示使用的TLS協議的型別,
ssl_prefer_server_ciphers on;
location / {
root dist;
index index.html index.htm;
}
}
}
修改完成后,按Esc 鍵、輸入 :wq!并按Enter 鍵,保存修改后的組態檔并退出編輯模式,
執行以下命令,重啟Nginx服務,
[root@clover conf]# cd ../
[root@clover nginx]# cd sbin/ #進入Nginx服務的可執行目錄,
[root@clover sbin]# ./nginx -s reload #重新載入組態檔,
#查看nginx是否正在運行,若正在運行,則kill掉
[root@clover sbin]# ps -ef | grep nginx
root 18222 1 0 14:53 ? 00:00:00 nginx: master process ./nginx
nobody 23728 18222 0 16:39 ? 00:00:00 nginx: worker process
root 23737 22684 0 16:39 pts/3 00:00:00 grep --color=auto nginx
#此時表示nginx正在運行,使用kill 命令kill掉
[root@clover sbin]# kill -9 18222
[root@clover sbin]# kill -9 23728
#再次查看
[root@clover sbin]# ps -ef | grep nginx
root 23737 22684 0 16:39 pts/3 00:00:00 grep --color=auto nginx
#使用./nginx 啟動nginx
[root@clover sbin]# ./nginx
-
注意:
如果重啟Nginx服務時收到報錯,您可以使用以下方法進行排查: -
收到
the "ssl" parameter requires ngx_http_ssl_module報錯:您需要重新編譯Nginx并在編譯安裝的時候加上--with-http_ssl_module配置, -
收到
"/cert/3970497_pic.certificatestests.com.pem":BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/cert/3970497_pic.certificatestests.com.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)報錯:您需要去掉證書相對路徑最前面的/,例如,您需要去掉/cert/cert-file-name.pem最前面的/,使用正確的相對路徑cert/cert-file-name.pem,
步驟5:開放HTTPS訪問及驗證
驗證證書是否安裝成功,
在驗證的程序中,你可能會遇到無法訪問,此時,你需要想想,你的服務器安全組是否開放了80和443埠,如果沒有開放,需要去服務器控制臺進行開發,


點擊手動添加,進行添加443埠

此時,如果你的服務器(我的是CentOS7.6)防火墻開啟了,也要放開80和443埠,如果沒開啟,就不用看這一步
#查看防火墻狀態
[root@clover root]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-09-22 19:51:54 CST; 2 weeks 1 days ago
Docs: man:firewalld(1)
Main PID: 12517 (firewalld)
CGroup: /system.slice/firewalld.service
└─12517 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Sep 22 19:51:53 clover systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 22 19:51:54 clover systemd[1]: Started firewalld - dynamic firewall daemon.
#此時就代表防火墻開啟了
#查看已開放的埠
[root@clover root]# firewall-cmd --list-ports
80/tcp 8080/tcp 3306/tcp 22/tcp 6379/tcp 1001/tcp 1002/tcp 443/tcp
#我的80和443都已經開放了,如果你的沒有開放,執行下面的命令
[root@clover root]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@clover root]# firewall-cmd --zone=public --add-port=443/tcp --permanent
#重新載入防火墻,2種方式
[root@clover root]# firewall-cmd --reload
[root@clover root]# systemctl restart firewalld
此時,再進行驗證
證書安裝完成后,您可通過訪問證書的系結域名驗證該證書是否安裝成功,
https://www.clover.fit #需要將www.clover.fit替換成證書系結的域名,
如果網頁地址欄出現小鎖標志,表示證書已經安裝成功,
不同型別證書安裝成功后的效果不同,具體如下:
- DV SSL、OV SSL數字證書部署在服務器上后,您的瀏覽器訪問網站時,將會展示以下效果,

- EV SSL數字證書部署在服務器上后,您的瀏覽器訪問網站時,將會展示以下效果,

如果驗證時出現訪問例外,請參照下表進行排查,
| 例外現象 | 可能原因 | 處理方法 |
|---|---|---|
| 通過HTTPS無法正常訪問您的網站, | 安裝證書的Nginx服務器的443埠未開放或被其他工具攔截, | 1.如果您使用的是阿里云ECS服務器,請前往ECS管理控制臺的安全組頁面,配置開放443埠,關于如何配置安全組,請參見添加安全組規則, 2.如果您使用的不是阿里云ECS服務器,請參照對應的服務器安全設定指南,配置開放服務器的443埠, |
| 收到網站提示“您與網站之間的連接未完全安全”, | 您的網站代碼中呼叫的是HTTP協議, | 您需要在網站代碼中把HTTP協議修改為HTTPS協議, |
| 收到網站提示“該網站未根據工信部相關法律進行備案”, | 1.您的網站未完成備案,未在接入商處完成備案接入, 2.您的網站內容與備案資訊不符、備案資訊不準確、網站存在不適宜傳播的內容等, | 1.如果您使用的是阿里ICP云備案系統,請前往阿里云備案系統進行網站備案, 2.如果您使用的不是阿里云ICP備案系統,請前往備案服務商的系統進行網站備案, |
結束
到這里,Nginx配置SSL證書就結束了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/306586.html
標籤:其他
上一篇:HTTP狀態碼都有哪些?
