前言
隨著互聯網的迅猛發展,網絡通信已經成為傳遞信息的主要途徑。而通信時的數據傳輸大部分卻是明文傳輸的,在網絡這個不安全的環境下,如果沒有一套數據加密機制,就會導致敏感信息和重要數據泄露,引起不可估量的損失。而OpenSSL正好彌補了這一缺憾,那什么是OpenSSL呢?OpenSSL是一套強大的具有加密功能的組件,它包含libcrypto(公共加密庫)、libssl(SSL協議的實現)和openssl(多功能命令工具),因其開源思想,現已廣泛應用于數據通信加密領域。OpenSSL還可在局域網內構建私有CA,實現局域網內的證書認證和授權,保證數據傳輸的安全性。如何構建私有CA呢?本文將詳細講述基于OpenSSL實現私有CA構建。
數據加密解密過程
數據加密需要實現的功能:數據私密性,數據完整性,身份認證和秘鑰交換。
加密類型及功能: 單向加密:提取數據特征碼,實現數據完整性驗證 對稱加密:數據加密,實現數據私密性 公鑰加密:使用對方公鑰加密,實現秘鑰交換 使用自己私鑰加密,實現身份驗證
公鑰在網絡傳輸過程中,無法保證可信度,容易被竊取或偽裝,所以我們就需要一個受信任的第三方機構(CA)
CA工作流程
#A和B各自用CA的公鑰解密對方證書,完成身份驗證
由于CA支持在互聯網上價格不菲,所以在企業內,不牽涉外網通信前提下,完全自行構建一個局域網內的私有CA.
實現CA構建
OpenSSL可以構建適用于中小型企業的私有CA,如果需要在大型企業構建CA可以用OpenCA,有興趣可以自行Google,這里就不做詳解了,因為OpenSSL足以滿足大多數需求。
建立CA服務器
生成秘鑰
命令詳解: umask 077:保證秘鑰文件其他人無讀寫權限,在()內執行,只對當前子shell有效 -out /path/to/somefile:指定生成秘鑰位置 2048:秘鑰長度,可自定義 #openssl rsa -in private/cakey.pem -pubout -text 可提取公鑰
自簽證書
命令詳解: req: 生成證書簽署請求 -news: 新請求 -key /path/to/keyfile: 指定私鑰文件 -out /path/to/somefile: 指定生成證書位置 -x509: 生成自簽署證書 -days n: 有效天數 #Country Name (2 letter code) [XX]:CN #國家(大寫縮寫) #State or Province Name (full name) []:Shandong #省份或洲 #Locality Name (eg, city) [Default City]:Qingdao #城市 #Organization Name (eg, company) [Default Company Ltd]:Scholar #公司 #Organizational Unit Name (eg, section) []:Tech #部門 #Common Name (eg, your name or your server's hostname) []:ca.scholar.com #必須與證書所有者能解析到的名字保持一致,否則將無法通過驗證 #Email Address []:ca@scholar.com #郵箱 #以上操作默認選項可通過修改配置文件(/etc/pki/tls/openssl.cnf)修改
初始化工作環境
命令詳解: index.txt:證書縮影數據庫 serial:簽署證書編號文件 echo 01 > serial #設定編號初始值
客戶端申請證書
生成密鑰
#我們給web服務生成請求用于https,在其配置文件目錄創建用于保存私鑰和證書的目錄
生成證書簽署請求
#A challenge password []: #證書請求需要加密存放,如果添加密碼,需要將密碼一同給CA #An optional company name []:
將簽署請求文件發送給CA服務器
#CA服務器工作目錄下,手動創建了一個存放證書請求的目錄(存放目錄請隨意)
CA簽署證書
將簽署的證書發送給請求者
這樣客戶端就可以配置使用CA簽署的證書,進行加密通信了。如果客戶端的私鑰不慎丟失,或者證書過期了該怎么辦呢?接下來我們看一下證書怎么吊銷吧。
證書吊銷
客戶端獲取證書serial
CA驗證信息
根據節點提交的serial和subject信息來驗正與index.txt文件中的信息是否一致
CA吊銷證書
CA生成吊銷證書編號(第一次吊銷)
CA更新證書吊銷列表
#如果有需要,可查看crl文件的內容 #openssl crl -in /path/to/crlfile.crl -noout -text
好了,證書成功吊銷,可以重新申請了。
The end
以上便是基于OpenSSL構建私有CA的步驟了,實際效果請自行測試,這里我就不做解析測試了。僅為個人學習整理,如有錯漏,大神勿噴~~~
原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/2704
書生,你這個圖畫的很溜啊 :smile:
@瓶云::mrgreen: :mrgreen: :mrgreen: