SSL證書生成流程


SSL證書通過在客戶端瀏覽器和Web服務器之間建立一條SSL安全通道(Secure socketlayer(SSL),SSL安全協議主要用來提供對用戶和服務器的認證;對傳送的數據進行加密和隱藏;確保數據在傳送中不被改變,即數據的完整性,現已成為該領域中全球化的標准。由於SSL技術已建立到所有主要的瀏覽器和WEB服務器程序中,因此,僅需安裝服務器證書就可以激活該功能了)。即通過它可以激活SSL協議,實現數據信息在客戶端和服務器之間的加密傳輸,可以防止數據信息的泄露。保證了雙方傳遞信息的安全性,而且用戶可以通過服務器證書驗證他所訪問的網站是否是真實可靠。
    SSL網站不同於一般的Web站點,它使用的是“HTTPS”協議,而不是普通的“HTTP”協議。因此它的URL(統一資源定位器)格式為“https://www.baidu.com”。

一:什么是x509證書鏈

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的根證書對申請人的一些基本信息以及申請人的公鑰進行簽名(相當於加蓋發證書機構的公章)后形成的一個數字文件。數字證書包含證書中所標識的實體的公鑰(就是說你的證書里有你的公鑰),由於證書將公鑰與特定的個人匹配,並且該證書的真實性由頒發機構保證(就是說可以讓大家相信你的證書是真的),因此,數字證書為如何找到用戶的公鑰並知道它是否有效這一問題提供了解決方案。

三:openssl中有如下后綴名的文件

.key格式:私有的密鑰
.csr格式:證書簽名請求(證書請求文件),含有公鑰信息,certificate signing request的縮寫
.crt格式:證書文件,certificate的縮寫
.crl格式:證書吊銷列表,Certificate Revocation List的縮寫
.pem格式:用於導出,導入證書時候的證書的格式,有證書開頭,結尾的格式

四:下載SSL證書生成生成包

鏈接:http://pan.baidu.com/s/1qYUIP2k

密碼:zn9z

五:CA根證書的生成步驟

生成CA私鑰(.key)-->生成CA證書請求(.csr)-->自簽名得到根證書(.crt)(CA給自已頒發的證書)。

解壓安裝包

#unzip openssl-1.0.0e.zip

當前目錄及目錄下所有的文件賦予可讀可寫可執行權限

#chmod 777 -R openssl-1.0.0e

# cd openssl-1.0.0e/

將你要安裝的程序裝到目錄/home/blave/openssl

#./config --prefix=/home/blave/openssl     

生成服務器端的私鑰 (key 文件)

#openssl genrsa -out server.key 1024

生成服務器端證書簽名請求文件 (csr 文件)

#openssl req -new -key server.key -out server.csr

自定義區域

Country Name (2 letter code) [XX]:CN----------------------------------- 證書持有者所在國家

State or Province Name (full name) []:BJ------------------------------- 證書持有者所在州或省份(可省略不填)

Locality Name (eg, city) []:BJ----------------------------------------- 證書持有者所在城市(可省略不填)

Organization Name (eg, company) []:NH---------------------------------- 證書持有者所屬組織或公司Organizational Unit Name (eg, section) []:.---------------------------- 證書持有者所屬部門(可省略不填)

Common Name (eg, your name or your server's hostname) []:ceshi.com----- 域名

Email Address []:------------------------------------------------------ 郵箱(可省略不填)

challenge password:............................................................自定義密碼

An optional company name.............................................可選公司名稱

生成證書文件 (crt 文件)

# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

執行完后查看openssl-1.0.0e發現有server.crtserver.key 兩個文件

 

在實際的軟件開發工作中,往往服務器就采用這種自簽名的方式,因為畢竟找第三方簽名機構是要給錢的,也是需要花時間的。

六:用戶證書的生成步驟

生成私鑰(.key)-->生成證書請求(.csr)-->用CA根證書簽名得到證書(.crt)
服務器端用戶證書:

  1. # 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  

     

客戶端用戶證書:

  1. $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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM