目錄
背景
一、思考程序
二、具體步驟
第一步:簽發SSL證書
第二步:檢查Nginx是否安裝SSL模塊
第三步:安裝Nginx SSL模塊
第四步:Nginx配置
第五步:客戶端配置
三、總結
四、后續
背景
2017年《中華人民共和國網路安全法》的正式實施,明確了資訊系統主體在網路安全中的安全責任問題(簡單、但不太嚴謹的說法:不開展等級保護等于違法),因此在很多專案建設中,尤其是電子政務涉及重要資料的專案,都需要通過第三方的網路安全等級測評(二級/三級),
在等保測評中,其中一項測評得分項為“采用HTTPS協議”,關于為什么能實作對資料在傳輸程序中機密性和完整性保護,請自行百度,
一、思考程序
HTTPS的基礎是SSL協議,需要簽發SSL證書,目前常見的方式有兩種:
一是通過可信CA機構來購買SSL證書,這種證書能夠被各大瀏覽器識別,如在各大公有云網站都可購買(根據安全級別幾百~幾萬/每年都有),用于互聯網應用;二是自己簽發的SSL證書,不被瀏覽器識別(不同瀏覽器會提醒不安全,除非用戶自己匯入證書并設定信任),這種證書一般用在僅包含特定用戶的專案或局域網環境內,
本文中針對的就是自簽發SSL證書應用,并通過Nginx配置來實作專案的HTTPS路徑訪問,
二、具體步驟
第一步:簽發SSL證書
關于簽發SSL證書,有3種方法(推薦使用方法1),
方法1:在線生成工具(此網站為寶藏網站,工具箱中有很多實用的工具,建議收藏時常服用,)
1)輸入證書資訊,既然是自簽名有效期設定長一些

當前這個網站簽出的證書頒發機構是MYSSL.com并不受瀏覽器信任,
2)下載證書
下載證書,需要用到的檔案是服務端證書cert.pem和私鑰private.key,其他的證書鏈full_chain.pem、根證書myssl_root.cer、ECC中間證書myssl_ecc_middle.cer建議也一并保存,
方法2:用openssl或java keytools
方法3:用java keytools和openssl
參考文章:keytool生成密鑰與證書并在nginx配置https(需要使用一小段java代碼)
或者參考:利用openssl主要進行格式轉化
對于Nginx,其實就是要獲取到證書(pem、cer、crt)和私鑰(key),
當你了解了幾個格式之間的關系,那么你就可以通過命令或者工具獲取nginx或者其他web服務軟體所需的證書格式,
第二步:檢查Nginx是否安裝SSL模塊
Windows版本Nginx目前都是已經自帶SSL模塊,
Linux版本默認編譯是不帶SSL模塊的,所以必須重新編譯一下,方法如下:
到Nginx安裝目錄下執行
./nginx -V

如果出現 (configure arguments: --with-http_ssl_module), 則已安裝(下面的步驟可以跳過,直接進行第四步)
第三步:安裝Nginx SSL模塊
解壓縮目錄:/root/nginx
安裝目錄:/usr/local/nginx
一般進入到解壓縮目錄,輸入
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
接下來執行
#切記不要執行make install,否則會重新安裝nginx
make
上述操作執行完成以后,你的目錄下會出現objs檔案夾,檔案夾記憶體在nginx檔案,如圖:

#停止nginx服務
./nginx -s stop
#替換之前的nginx
cp /root/nginx/objs/nginx /usr/local/nginx/sbin
#注意這里是大寫的V,小寫的只顯示版本號
./nginx -V
如果出現了configure arguments: --with-http_ssl_module 證明已經安裝成功,
提示:替換后再執行 -V命令如果提示權限不足,先給這個nginx檔案提升權限,
第四步:Nginx配置
Nginx配置很簡單,一般默認conf檔案中的證書路徑修改即可

第五步:客戶端配置
如果自簽發的域名證書,一般需要配置host檔案,才能訪問
Windows的host檔案路徑:
C:\Windows\System32\drivers\etc
Linux的host檔案路徑:
/etc/hosts
這樣就可以訪問路徑:https://myssltest.com

至于瀏覽器提示不安全如何處理,目前已知的方法是匯入信任證書來解決,經過研究并不完美,后續再研究,
題外:除了配置host檔案,還可以自己搭建DNS服務,則需要配置網路連接中的DNS配置,參考文章: DNS:從零搭建公司內網DNS服務器,
三、總結
通過上述步驟完成Nginx配置自簽名SSL證書的HTTPS協議訪問,我們發現都需要在客戶端進行配置作業,無論是匯入證書、配置host都是比較專業的操作,那么在系統設計時能夠在登錄頁做好引導是十分必要的,
四、后續
寫完之后發現可寫的內容還有很多,分批趕制中:
TO DO LIST:
和SSL相關:
1、SSL原理,國密SM2如何結合;
2、各種格式的證書檔案之間關系和轉換;
3、商業互聯網 SSL證書購買,免費和付費之間差異;
其他:
1、Nginx常用配置及命令整理;
2、關于linux使用用戶權限和各類軟體的權限如何劃分,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/294911.html
標籤:其他
上一篇:Nginx教程
