OPENSSL生成SSL自簽證書
目前,有許多重要的公網可以訪問的網站系統(如網銀系統)都在使用自簽SSL證書,即自建PKI系統頒發的SSL證書,而不是部署支持瀏覽器的SSL證書。
支持瀏覽器的SSL證書無疑安全性是好的,但要收費(而且是按年收)。
自簽SSL證書當然是免費的,但安全性就差了。
數字證書(Certificate)
在HTTPS的傳輸過程中,有一個非常關鍵的角色——數字證書,那什么是數字證書?又有什么作用呢?
所謂數字證書,是一種用於電腦的身份識別機制。由數字證書頒發機構(CA)對使用私鑰創建的簽名請求文件做的簽名(蓋章),表示CA結構對證書持有者的認可。數字證書擁有以下幾個優點:
- 使用數字證書能夠提高用戶的可信度
- 數字證書中的公鑰,能夠與服務端的私鑰配對使用,實現數據傳輸過程中的加密和解密
- 在證認使用者身份期間,使用者的敏感個人數據並不會被傳輸至證書持有者的網絡系統上
X.509證書包含三個文件:key,csr,crt。
- key是服務器上的私鑰文件,用於對發送給客戶端數據的加密,以及對從客戶端接收到數據的解密
- csr是證書簽名請求文件,用於提交給證書頒發機構(CA)對證書簽名
- crt是由證書頒發機構(CA)簽名后的證書,或者是開發者自簽名的證書,包含證書持有人的信息,持有人的公鑰,以及簽署者的簽名等信息
備注:在密碼學中,X.509是一個標准,規范了公開秘鑰認證、證書吊銷列表、授權憑證、憑證路徑驗證算法等。
創建自簽名證書的步驟
注意:以下步驟僅用於配置內部使用或測試需要的SSL證書。
第1步:生成私鑰
使用openssl工具生成一個RSA私鑰
說明:生成rsa私鑰,des3算法,2048位強度,server.key是秘鑰文件名。
注意:生成私鑰,需要提供一個至少4位的密碼。
1024位RSA非對稱密鑰對已經變得不安全了,所以,美國國家標准技術研究院( NIST )要求停止使用不安全的1024位非對稱加密算法。微軟已經要求所有受信任的根證書頒發機構必須於2010年12月31日之前升級其不安全的1024位根證書到2048位和停止頒發不安全的1024位用戶證書,12 月 31 日之后會把不安全都所有 1024 位根證書從 Windows 受信任的根證書頒發機構列表中刪除!
而目前幾乎所有自簽證書都是1024位,自簽根證書也都是1024位,當然都是不安全的。還是那句話:由於部署自簽SSL證書而無法獲得專業SSL證書提供商的專業指導,根本就不知道1024位已經不安全了。
第2步:生成CSR(證書簽名請求)
生成私鑰之后,便可以創建csr文件了。
此時可以有兩種選擇。理想情況下,可以將證書發送給證書頒發機構(CA),CA驗證過請求者的身份之后,會出具簽名證書(很貴)。
另外,如果只是內部或者測試需求,也可以使用OpenSSL實現自簽名,具體操作如下:
說明:需要依次輸入國家,地區,城市,組織,組織單位,Common Name和Email。其中Common Name,可以寫自己的名字或者域名,
如果要支持https,Common Name應該與域名保持一致,否則會引起瀏覽器警告。
第3步:刪除私鑰中的密碼
在第1步創建私鑰的過程中,由於必須要指定一個密碼。而這個密碼會帶來一個副作用,那就是在每次Apache啟動Web服務器時,都會要求輸入密碼,
這顯然非常不方便。要刪除私鑰中的密碼,操作如下:
第4步:生成自簽名證書
如果你不想花錢讓CA簽名,或者只是測試SSL的具體實現。那么,現在便可以着手生成一個自簽名的證書了。
需要注意的是,在使用自簽名的臨時證書時,瀏覽器會提示證書的頒發機構是未知的。
說明:crt上有證書持有人的信息,持有人的公鑰,以及簽署者的簽名等信息。當用戶安裝了證書之后,便意味着信任了這份證書,同時擁有了其中的公鑰。證書上會說明用途,例如服務器認證,客戶端認證,或者簽署其他證書。當系統收到一份新的證書的時候,證書會說明,是由誰簽署的。如果這個簽署者確實可以簽署其他證書,並且收到證書上的簽名和簽署者的公鑰可以對上的時候,系統就自動信任新的證書。
第5步:安裝私鑰和證書
將私鑰和證書文件復制到Apache的配置目錄下即可,在Mac 10.10系統中,復制到/etc/apache2/目錄中即可。
下載OPENSSL
http://slproweb.com/products/Win32OpenSSL.html