1. 程式人生 > 實用技巧 >Linux Nginx環境下配置支援HTTPS的SSL證書

Linux Nginx環境下配置支援HTTPS的SSL證書

Linux Nginx環境下配置支援HTTPS的SSL證書

之前寫了一篇文章《windows Apache 環境下配置支援HTTPS的SSL證書》,但是在實際生產中,專案上線部署的環境一般都是linux下的nginx,這篇文章就來記錄如何在linux下nginx的環境中來配置支援SSL證書。

一、需要提供的資料

不同的SSL證書申請需要準備資料不同,這和SSL證書的驗證等級有關,身份驗證等級可分為4級:Class 1、Class 2、Class 3 和 Class 4(EV),級別越高,驗證越嚴格,需要準備的資料就越多。

沒有域名的話,可以為IP申請SSL證書,但是不是所有的SSL證書都支援IP申請。

下面介紹3種不同型別的證書。

(1) DV SSL證書(域名認證型):都屬於Class 1 驗證的SSL證書,只通過E-mail驗證或基於http方式驗證域名所有權即可。

準備資料:網站,郵箱即可。

(2)OV SSL證書( 企業認證型):各種程式碼簽名證書和企業驗證SSL證書都屬於Class 3 驗證的證書,需要驗證證書申請單位和被授權代表的身份。

準備材料:網站,郵箱、申請企業相關資料。

(3)EV SSL證書(擴充套件認證型):屬於Class 4 驗證的證書,需要按照國際標準非常嚴格地驗證證書申請單位和被授權代表的身份。

準備材料:申請人身份證,申請人授權書,營業執照,組織機構程式碼證,鄧白氏編碼,電話號碼,手機,郵箱等等。

二、申請SSL證書

1、登入騰訊雲->控制檯->雲產品右邊有個加號“+”->選擇SSL證書然後儲存

2、點選SSL證書進入申請頁面

3、填寫申請資料

4、選擇域名身份驗證方式

點選確認申請。

5、證書管理

控制檯->SSL證書->證書管理

說明:這個時候這裡就有一條我們剛才點選申請後的證書記錄

點選詳情進入頁面,就能看到我們申請的證書詳情

從上圖可以看到,我們還需要去新增DNS解析記錄,然後等待稽核通過後,官方頒佈證書。

6、新增DNS解析記錄(已經完成這一步的盆友,請自行跳過)

說明:以下操作僅針對域名對應的域名解析商在騰訊雲的情況下,若不在騰訊雲,請您到域名對應的域名解析商處進行解析。

1)控制檯->DNS解析 DNSPod->域名解析列表

2)找到相應的域名,點選解析進入,新增記錄然後儲存

不出意外的話,大概半天不到就能通過稽核(騰訊雲官方的效率還是挺高的~~~)

7、下載證書

稽核通過後

點選下載,就能得到申請的證書了。

三、接下來就是配置證書到nginx

1、開啟下載的證書資料夾

騰訊雲的SSL證書下載包中,有一個單獨的Nginx資料夾,裡面有兩個檔案都是我們需要的

我們需要把這兩個檔案放到我們的伺服器中,推薦放到/etc/ssl/目錄下

2、配置證書

1)啟動nginx(已經啟動過的,自行跳過這一步)

執行命令:service nginx start

2)找到配置檔案所在目錄

執行命令:ps -ef | grep nginx

比如我這兒顯示:

說明:這個地方顯示的nginx.conf,要用vim開啟看下,因為有的伺服器上只有這一個配置檔案,就可以直接編輯配置。有的存在多個配置檔案,要找到具體的那個配置檔案來配置。像我這裡這個/www/server/nginx/conf/nginx.conf,它只是一個總的配置檔案,用vim開啟後發現還include了其他的配置檔案

3)使用vim開啟相應的配置檔案

 1 server
 2 {
 3     listen 443 ssl;
 4     server_name php7.isee.wang;
 5     #SSL-START SSL相關配置,請勿刪除或修改下一行帶註釋的404規則
 6     #error_page 404/404.html;
 7     ssl_certificate    /etc/ssl/php7/1_php7.isee.wang_bundle.crt;
 8     ssl_certificate_key   /etc/ssl/php7/2_php7.isee.wang.key;
 9     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
10     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
11     ssl_prefer_server_ciphers on;
12     ssl_session_cache shared:SSL:10m;
13     ssl_session_timeout 10m;
14     error_page 497  https://$host$request_uri;
15 
16     #SSL-END
17     #PHP-INFO-START  PHP引用配置,可以註釋或修改
18     include enable-php-74.conf;
19     #PHP-INFO-END
20 
21     #禁止訪問的檔案或目錄
22     location  /
23     {
24           index index.php index.html index.htm default.php default.htm default.html;
25           root /www/wwwroot/php7.isee.wang;
26 
27     }
28 
29     #一鍵申請SSL證書驗證目錄相關設定
30     location ~ \.well-known{
31         allow all;
32     }
33 
34     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
35     {
36         expires      30d;
37         error_log off;
38         access_log /dev/null;
39     }
40     location ~ .*\.(js|css)?$
41     {
42         expires      12h;
43         error_log off;
44         access_log /dev/null;
45     }
46     access_log  /www/wwwlogs/php7.isee.wang.log;
47     error_log  /www/wwwlogs/php7.isee.wang.error.log;
48 }
49 #如果使用者使用的是http協議進行訪問,那麼預設開啟的埠是80埠,所以這裡還需要做一個重定向
50 server{
51     listen 80;
52     server_name php7.isee.wang;
53     #rewrite ^/(.*)$ https://php7.isee.wang:443/$1 permanent;
54 
55     #把http的域名請求轉成https
56     return 301 https://$host$request_uri;
57 }

然後使用儲存配置檔案

檢驗配置檔案:執行命令 nginx -t

說明:如果看到successful表示檔案格式證書,這時候我們就可以啟動nginx服務或者重新載入nginx配置檔案。
啟動nginx服務:執行命令 service nginx start
重新載入配置檔案:執行命令 nginx -s reload

3、訪問

搞定!!!

參考連結:

https://cloud.tencent.com/document/product/400/4142

https://blog.csdn.net/baofeidyz/article/details/80435929