ca.cer
中間證書和根證書
.cer
你申請的ssl證書
.cer
包括了 ca.cer 和 .cer 的全鏈證書
.key
證書的私鑰
什么是證書鏈
證書鏈的意思是有一個證書機構A,A生成證書B,B也可以生成證書C,那么A是根證書。
操作系統預先安裝的一些根證書,都是國際上很有權威的證書機構,比如 、 ENTRUST 這些公司。
我們普通申請的ssl證書都是這些根證書的孫證書。根證書簽發中間證書,中間證書簽發ssl證書。
證書鏈的順序是:ssl證書+中間證書+根證書。證書鏈上的每個證書都是被它相鄰的證書簽發。
證書以證書鏈的形式存在, 只有當整個證書鏈上的證書都有效時,才會認定當前證書合法 :
最上層為root,也就是通常所說的CA,用來頒發證書最下層為end-user,對應是每個網站購買使用的ssl證書中間一層為,是二級CA,這一層可以繼續劃分為多層,用來幫助root給end-user頒發證書。 瀏覽器中證書的驗證順序是
首先檢查你購買的ssl證書的簽發者是不是可信根證書,如果不是那么會檢查你的證書的簽發機構是否被可信根證書簽發,以此類推,直到找到一個可信的根證書,標示你的證書是可信的,如果找不到那么你的證書是不可信的。
根證書是用來簽發證書的,不參與通信,一般會內置在客戶端的瀏覽器中。如果服務器沒有安裝中間證書,那么對于某些非主流瀏覽器、安卓手機設備,應用程序等可能沒辦法驗證ssl證書的真實性,所以為了兼容所有客戶端,服務器需要安裝中間證書。
例如下面圖中情況:你從證書2處購買了證書3,但是證書2不是默認包含在瀏覽器種的可信證書,中間證書2是根證書1簽發的證書,如果服務器端只發送證書3不包含證書2,那么瀏覽器找不到證書3的簽發者證書2,這樣整個證書的驗證鏈條就斷裂了,你的證書就會被瀏覽器標識為無效證書“Invalid ” 或 “ not trusted”
總結
根證書是第三方被大家信任的認證機構自簽名的證書,通常瀏覽器會內置。
服務器證書是包含包含“ssl證書+中間證書”的證書鏈,對于某些不知名的中間證書,瀏覽器是不內置,服務器需要把ssl證書連同中間證書一起發送給瀏覽器,如果證書鏈不全,你的證書在這些瀏覽器上會不被信任。
用戶證書有兩種理解,如果對于證書頒發機構和服務器來說你可以理解為你申請的ssl證書;對于服務器-客戶端交互來說是客戶端的證書,比如我們的u盾。
大家可能有一個疑問,服務器上要不要安裝根證書?從上面分析可以知道,瀏覽器是內置了根證書,不需要我們在服務器的證書鏈上加根證書。
如何安裝中間證書?不同web服務器有不同的設置,apache有個變量ile專門對應中間證書bundle,Nginx需要把ssl證書和中間證書打包為一個文件。
證書格式轉換
cer和pem格式文件都是證書文件,key文件是私鑰文件,證書機構會將兩種格式的文件發放給客戶。
pem或cer格式轉為JKS格式文件包括公鑰和私鑰
第一步:在openssl命令行下輸入如下命令,將pem或cer證書轉pfx格式,回車后需要輸入兩次密碼
pkcs12 -export -out server.pfx -inkey server.key -in server.pem(server.cer)
第二步:在命令行下使用java 的keytool工具,將pfx文件轉換成jks文件
keytool - - server.pfx - server.jks - PKCS12 - JKS
pem格式證書轉成cer格式
先在終端cd到文件目錄下 然后
openssl x509 -outform der -in xxx.pem -out yyy.cer
或者直接把pem文件雙擊導入鑰匙串,然后再鑰匙串里右鍵導出
(xxx 是原證書的名稱,yyy是轉格式生成的證書名稱)
crt格式轉成der格式
先在終端cd到文件目錄下 然后
openssl x509 -in xxx.crt -out yyy.der -outform DER
(xxx 是原證書的名稱,yyy是轉格式生成的證書名稱)
參考:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。