Nginx配置SSL證書部署HTTPS網站


一、什麼是 SSL 證書,什麼是 HTTPS
SSL 證書是一種數字證書,它使用 Secure Socket Layer 協議在瀏覽器和 Web 服務器之間建立一條安全通道,從而實現:
1、數據信息在客戶端和服務器之間的加密傳輸,保證雙方傳遞信息的安全性,不可被第三方竊聽;
2、用戶可以通過服務器證書驗證他所訪問的網站是否真實可靠。

HTTPS 是以安全爲目標的 HTTP 通道,即 HTTP 下加入 SSL 加密層。HTTPS 不同於 HTTP 的端口,HTTP默認端口爲80,HTTPS默認端口爲443。

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

  • 生成一個RSA密鑰

$ openssl genrsa -des3 -out yt.key 1024

image.png

 

  •  拷貝一個不需要輸入密碼的密鑰文件

$ openssl rsa -in 33iq.key -out yt_nopass.key

image.png

 

  • 生成一個證書請求

$ openssl req -new -key yt.key -out yt.csr

注:該命令是生成證書請求,會提示輸入省份、城市、域名信息等,重要的是,email一定要是你的域名後綴的。這樣就有一個 csr 文件了,提交給 ssl 提供商的時候就是這個 csr 文件。當然我這裏並沒有向證書提供商申請,而是在後面自己簽發了證書。

image.png 

 

  • 自己簽發證書

$ openssl x509 -req -days 365 -in yt.csr -signkey yt.key -out yt.crt

image.png

 

注:把生成的證書放到nginx配置文件統計目錄下。我的在/usr/local/nginx/conf/

 

image.png

三、修改nginx主配文件nginx.conf

server {

    server_name yt.com;

    listen 443;



    ssl on;

    ssl_certificate /usr/local/nginx/conf/yt.crt;

    ssl_certificate_key /usr/local/nginx/conf/yt_nopass.key;

注:若ssl_certificate_key使用tfjybj.key,則每次啓動Nginx服務器都要求輸

入key的密碼。

image.png

 

重啓nginx服務

nginx –s reload

自己頒發的SSL證書能夠實現加密傳輸功能,但瀏覽器並不信任,會給出提示:

image.png

image.png

 

 

 

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

頒發證書

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

配置nginx

文件說明:

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

如果是證書系統創建的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 方式訪問您的站點

 

 

   

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章