1. 程式人生 > >Nginx配置SSL證書部署HTTPS網站(頒發證書)

Nginx配置SSL證書部署HTTPS網站(頒發證書)

自行頒發不受瀏覽器信任的SSL證書

手動頒發

xshell登入伺服器,使用openssl生成RSA金鑰及證書

# 生成一個RSA金鑰 
$ openssl genrsa -des3 -out tfjybj.key 1024

# 拷貝一個不需要輸入密碼的金鑰檔案
$ openssl rsa -in dmsdbj.key -out tfjybj_nopass.key

# 生成一個證書請求
$ openssl req -new -key tfjybj.key -out tfjybj.csr
 這裡會提示輸入省份、城市、域名等資訊,email得是域名字尾。這樣就生成一個csr檔案,提交給ssl提供商的時候就是這個csr檔案。
 (這裡由於我沒有截圖,所以從網上找了一個圖片,需要替換的是下面的33
iq,換成tfjybj) 中間輸入密碼的時候,沒有什麼顯示,不過就那麼輸入就好

這裡寫圖片描述

# 自己簽發證書
$ openssl x509 -req -days 365 -in tfjybj.csr -signkey tfjybj.key -out tfjybj.crt

把生成的證書放到nginx配置檔案同級目錄;

nginx配置

編輯nginx配置檔案 nginx.conf,加https協議

server {
    server_name tfjybj.com;
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/tfjybj.crt;
    ssl_certificate_key /usr/local
/nginx/conf/tfjybj_nopass.key; # 若ssl_certificate_key使用tfjybj.key,則每次啟動Nginx伺服器都要求輸入key的密碼。 (開始我不知道,納悶為啥啟動nginx、關閉nginx都要輸入密碼) }

重啟Nginx
自己頒發的SSL證書能夠實現加密傳輸功能,但瀏覽器並不信任,會給出提示:
這裡寫圖片描述

通過第三方頒發證書–阿里雲

頒發證書

登入阿里雲管理控制檯,【雲盾】選單選擇【證書服務】,選擇購買證書;
我弄得免費版的做的測試,申請之後,經過一兩天的稽核,然後就可以下載證書了。下載解壓後是兩個檔案,一個key結尾,私鑰,一個是pem結尾,是公鑰;

配置nginx

檔案說明:

  1. 證書檔案”申請的證書名字.pem”,包含兩段內容,請不要刪除任何一段內容。

  2. 如果是證書系統建立的CSR,還包含:證書私鑰檔案”申請的證書名字.key”。

( 1 ) 在Nginx的安裝目錄下建立cert目錄,並且將下載的全部檔案拷貝到cert目錄中。如果申請證書時是自己建立的CSR檔案,請將對應的私鑰檔案放到cert目錄下並且命名為”申請的證書名字.key”;

( 2 ) 開啟 Nginx 安裝目錄下 conf 目錄中的 nginx.conf 檔案,找到:

# HTTPS server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}

( 3 ) 將其修改為 (以下屬性中ssl開頭的屬性與證書配置有直接關係,其它屬性請結合自己的實際情況複製或調整) :

server {
listen 443;
server_name localhost;
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/申請的證書名字.pem;
ssl_certificate_key cert/申請的證書名字.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
儲存退出。

( 4 )重啟 Nginx。

( 5 ) 通過 https 方式訪問您的站點