Tools - OpenSSL

OpenSSL
OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library. For more information about the team and community around the project, or to start making your own contributions, start with the community page. To get the latest news, download the source, and so on, please see the sidebar or the buttons at the top of every page.
The OpenSSL toolkit is licensed under an Apache-style license, which basically means that you are free to get and use it for commercial and non-commercial purposes subject to some simple license conditions.
 
OpenSSL的總結
使用openssl工具來驗證服務器證書以及握手過程
 
 
OpenSSL認證文件的生成
 
# 概念:
      首先要有一個根證書,而後用根證書來簽發用戶證書。
      用戶進行證書申請:通常先會生成一個私鑰,而後用私鑰生成證書請求(證書請求裏應含有公鑰信息),再利用證書服務器的根證書來簽發證書。
特別說明:
(1)自簽名證書(通常用於頂級證書、根證書): 證書的名稱和認證機構的名稱相同.
(2)根證書:根證書是CA認證中心給本身頒發的證書,是信任鏈的起始點。安裝根證書意味着對這個CA認證中心的信任
 
數字證書則是由證書認證機構(CA)對證書申請者真實身份驗證以後,用CA的根證書對申請人的信息以及申請人的公鑰進行簽名(至關於加蓋發證書機構的公章)後造成的一個數字文件。
數字證書將公鑰與特定的申請人匹配,包含申請人的公鑰,而且該證書的真實性由頒發機構保證,這樣就保證了公鑰的安全有效地發佈。
證書將包含下列信息:
  • 組織的公用名稱
  • 其它標識性信息(如 IP 和物理地址)
  • 公鑰
  • 公鑰的到期日期
  • 發出此 ID 的 CA 的名稱
  • 一個惟一的序列號
  • CA的數字簽名
 
# 步驟
          認證中心CA(本身作CA):生成CA私鑰(ca.key)--->>生成CA證書請求(ca.csr)--》自簽名獲得根證書(ca.crt, CA給自已頒發的證書)
          Client and Server:生成私鑰(client.key/server.key)--->>生成證書請求(client.csr/server.csr)--->>經過CA簽名獲得證書(client.crt/server.crt)
          也可將證書請求(client.csr/server.csr)發送到verisign等第三方認證機構並支付必定費用由它驗證。
          生成的證書格式能夠互相轉換,例如:生成的.crt可轉換成.pem;利用.key和.crt兩個文件能夠生成p12格式證書或者是pem格式證書 。
 
# 最終能夠生成
服務端證書:ca.crt, server.key, server.crt, (server.pem, server.pfx, ......)
客戶端證書:ca.crt, client.key, client.crt, (client.pem, client.pfx, ......)
 
# 證書格式轉換
例如,pem格式的證書能夠由證書文件(crt)和私鑰文件(key)合併來生成
 
# 證書的文件形式
做爲文件形式存在的證書通常有這幾種格式:
  1.帶有私鑰的證書
      由Public Key Cryptography Standards #12,PKCS#12標準定義,包含了公鑰和私鑰的二進制格式的證書形式,以pfx做爲證書文件後綴名。
  2.二進制編碼的證書
      證書中沒有私鑰,DER 編碼二進制格式的證書文件,以cer做爲證書文件後綴名。
  3.Base64編碼的證書
           證書中沒有私鑰,BASE64 編碼格式的證書文件,也是以cer做爲證書文件後綴名。
由定義能夠看出,只有pfx格式的數字證書是包含有私鑰的,cer格式的數字證書裏面只有公鑰沒有私鑰。
 
# 常見文件後綴

.key:通常指PEM格式的私鑰文件。html

.crt:證書文件,certificate的縮寫。算法

.csr:(證書籤名請求(Certificate Signing Request),含有公鑰信息。

.crl:(證書吊銷列表,Certificate Revocation List),是證書撤銷狀態的公佈形式,就像信用卡的黑名單,用於公佈某些數字證書再也不有效。安全

CRL 是一種離線的證書狀態信息,以必定的週期進行更新。所以必須按期下載該清單,纔會取得最新信息。
基本的 CRL信息有:被撤銷證書序列號、撤銷時間、撤銷緣由、簽名者以及 CRL 簽名等信息。
基於 CRL 的驗證是一種不嚴格的證書認證。CRL 能證實在 CRL 中被撤銷的證書是無效的。可是它不能給出不在 CRL 中的證書的狀態服務器

.pem:PEM(Privacy Enhanced Mail)是 openssl 默認採用的存放信息的格式。用於導出,導入證書。ide

Openssl 中的 PEM 文件通常包含以下:
內容類型 ----- 代表本文件存放的是什麼信息內容,有證書開頭,結尾的格式,形式爲「——-BEGIN XXXX ——」,與結尾的「——END XXXX——」對應。
頭信息 ----- 代表數據是若是被處理後存放,openssl 中用的最多的是加密信息,好比加密算法以及初始化向量 iv。
信息體 ----- BASE64 編碼的數據。能夠包括全部私鑰(RSA 和 DSA)、公鑰(RSA 和 DSA)和 (x509) 證書。
存儲用 Base64 編碼的 DER 格式數據,用 ascii 報頭包圍,所以適合系統之間的文本模式傳輸。工具

.jks : 一般能夠將Apache/OpenSSL使用的「KEY文件 + CRT文件」格式」轉換爲標準的Java Key Store(JKS)文件。編碼

JKS文件格式被普遍的應用在基於JAVA的WEB服務器、應用服務器、中間件。
能夠將JKS文件導入到TOMCAT、 WEBLOGIC 等軟件。加密

相關文章
相關標籤/搜索