前言
最近項目的Restful接口開發的差不多了,要支持https請求,那就需要一個SSL證書,準備去狗爹上看看有沒有便宜點的,自己買個試試??戳艘谎郏ㄈ缦聢D),還是應該自己動手豐衣足食。
基礎知識
-
SSL
SSL證書也叫安全證書或者數字證書,SSL證書是數字證書的一種,跟駕駛證、護照、營業執照電子副本類似。SSL證書是一種國際通用的Web安全標準,主要通過對敏感數據加密來防止各種攻擊非法讀取重要信息,保證數據的完整性和安全性,避免受到數據劫持和釣魚攻擊等。
-
HTTPS
HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性 。HTTPS 在HTTP 的基礎下加入SSL 層,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。
-
CA機構頒發SSL證書
CA(Certificate Authority)就是電子認證的意思。權威可靠的CA機構有挺多的,比如國外的有:Comodo、RapidSSL、GeoTrust,國內的有:CFCA(中國人民銀行聯合12家銀行建立的金融CFCA安全認證中zhi心)、CTCA(中國電信認證中心)
CA機構頒發SSL證書是受信任的SSL證書,會被瀏覽器信任認可,安全加密服務與安全掃描相關CA配套服務。 -
自簽名SSL證書
自己生成的SSL證書,不是CA機構頒發的SSL證書,就是自簽名證書。自簽名SSL證書不會被瀏覽器信任,數據被泄漏級劫持安全漏洞安全風險較高??梢栽赑C上安裝自簽名SSL證書對應的公鑰證書,使瀏覽器信任認可。
自簽名的SSL證書也存在一些安全隱患:
最容易受到SSL中間人攻擊
支持非常不安全的SSL V2.0協議
使用不安全的1024位非對稱密鑰對
-
cer證書和pfx證書:
項目的入口網關需要一張pfx證書,pfx證書同時包含了公鑰信息和私鑰信息。cer證書只包含公鑰信息,提供給客戶端使用。
openssl生成自簽名證書
Linux系統自帶openssl,可以登錄任意Linux系統的機器操作。
主要步驟如下:
第一步:生成RSA私鑰
openssl genrsa -des3 -out private-rsa.key 1024
- -des3:生成的密鑰使用des3方式進行加密。
- -out private-rsa.key:將生成的私鑰保存至private-rsa.key文件。
- 1024為要生成的私鑰的長度。
執行命令后,需要輸入保護私鑰文件的密碼(輸入密碼即可,一般不超過6位)
openssl req -new -x509 -key private-rsa.key -days 3650 -out public-rsa.cer
- -new :說明生成證書請求文件
- -x509 :說明生成自簽名證書
- -key :指定已有的秘鑰文件生成秘鑰請求,只與生成證書請求選項-new配合。
- -days:證書有效天數
- -out :-out 指定生成的證書請求或者自簽名證書名稱
執行命令后,需要輸入證書的相關信息。
有兩點需要注意
- 第一個標紅處輸入上一步保護私鑰文件的密碼
- 第二個標紅處一定要輸入使用pfx證書的服務器的IP
openssl pkcs12 -export -name test-alias -in public-rsa.cer -inkey private-rsa.key -out user-rsa.pfx
- -export:指定了一個PKCS#12文件將會被創建。
- -name:指定證書的名稱。
- -in:指定公鑰和證書讀取的文件。
- -inkey:指定私鑰文件的位置。
- -out:指定輸出的pkcs12文件
執行命令后,需要輸入第一步保護私鑰文件的密碼以及導出密碼。
第四步:使用證書
至此,就會在當前目錄下生成了三個證書文件,pfx證書上傳到需要使用證書的服務器上使用,公鑰證書交給客戶端使用。