SSL證書經過在客戶端瀏覽器和Web服務器之間創建一條SSL安全通道(Secure socketlayer(SSL),SSL安全協議主要用來提供對用戶和服務器的認證;對傳送的數據進行加密和隱藏;確保數據在傳送中不被改變,即數據的完整性,現已成爲該領域中全球化的標準。因爲SSL技術已創建到全部主要的瀏覽器和WEB服務器程序中,所以,僅需安裝服務器證書就能夠激活該功能了)。即經過它能夠激活SSL協議,實現數據信息在客戶端和服務器之間的加密傳輸,能夠防止數據信息的泄露。保證了雙方傳遞信息的安全性,並且用戶能夠經過服務器證書驗證他所訪問的網站是不是真實可靠。
SSL網站不一樣於通常的Web站點,它使用的是「HTTPS」協議,而不是普通的「HTTP」協議。所以它的URL(統一資源定位器)格式爲「https://www.baidu.com」。html
x509證書通常會用到三類文件,key,csr,crt。
Key是私用密鑰,openssl格式,一般是rsa算法。
csr是證書請求文件,用於申請證書。在製做csr文件的時候,必須使用本身的私鑰來簽署申請,還能夠設定一個密鑰。
crt是CA認證後的證書文件(windows下面的csr,實際上是crt),簽署人用本身的key給你簽署的憑證。算法
首先要有一個CA根證書,而後用CA根證書來簽發用戶證書。
用戶進行證書申請:通常先生成一個私鑰,而後用私鑰生成證書請求(證書請求裏應含有公鑰信息),再利用證書服務器的CA根證書來簽發證書。
特別說明:
(1)自簽名證書(通常用於頂級證書、根證書): 證書的名稱和認證機構的名稱相同.
(2)根證書:根證書是CA認證中心給本身頒發的證書,是信任鏈的起始點。任何安裝CA根證書的服務器都意味着對這個CA認證中心是信任的。
數字證書則是由證書認證機構(CA)對證書申請者真實身份驗證以後,用CA的根證書對申請人的一些基本信息以及申請人的公鑰進行簽名(至關於加蓋發證書機構的公章)後造成的一個數字文件。數字證書包含證書中所標識的實體的公鑰(就是說你的證書裏有你的公鑰),因爲證書將公鑰與特定的我的匹配,而且該證書的真實性由頒發機構保證(就是說可讓你們相信你的證書是真的),所以,數字證書爲如何找到用戶的公鑰並知道它是否有效這一問題提供瞭解決方案。windows
.key格式:私有的密鑰
.csr格式:證書籤名請求(證書請求文件),含有公鑰信息,certificate signing request的縮寫
.crt格式:證書文件,certificate的縮寫
.crl格式:證書吊銷列表,Certificate Revocation List的縮寫
.pem格式:用於導出,導入證書時候的證書的格式,有證書開頭,結尾的格式瀏覽器
連接:http://pan.baidu.com/s/1qYUIP2k安全
密碼:zn9z服務器
生成CA私鑰(.key)-->生成CA證書請求(.csr)-->自簽名獲得根證書(.crt)(CA給自已頒發的證書)。socket
在實際的軟件開發工做中,每每服務器就採用這種自簽名的方式,由於畢竟找第三方簽名機構是要給錢的,也是須要花時間的。
生成私鑰(.key)-->生成證書請求(.csr)-->用CA根證書籤名獲得證書(.crt)
服務器端用戶證書:
# private key
$openssl genrsa -des3 -out server.key 1024
# generate csr
$openssl req -new -key server.key -out server.csr
# generate certificate
$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
客戶端用戶證書:
$openssl genrsa -des3 -out client.key 1024
$openssl req -new -key client.key -out client.csr
$openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
生成pem格式證書:
有時須要用到pem格式的證書,能夠用如下方式合併證書文件(crt)和私鑰文件(key)來生成
$cat client.crt client.key> client.pem
$cat server.crt server.key > server.pem
服務端證書:ca.crt, server.key, server.crt, server.pem
客戶端證書:ca.crt, client.key, client.crt, client.pem
在執行$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key時可能會出錯:
Using configuration from /usr/share/ssl/openssl.cfg I am unable to access the ./demoCA/newcerts directory ./demoCA/newcerts: No such file or directory
解決方法:
1)mkdir -p ./demoCA/newcerts 2)touch demoCA/index.txt 3)touch demoCA/serial 4)echo 01 > demoCA/serial