Linux基于OpenSSL實現私有CA構建

前言

隨著互聯網的迅猛發展,網絡通信已經成為傳遞信息的主要途徑。而通信時的數據傳輸大部分卻是明文傳輸的,在網絡這個不安全的環境下,如果沒有一套數據加密機制,就會導致敏感信息和重要數據泄露,引起不可估量的損失。而OpenSSL正好彌補了這一缺憾,那什么是OpenSSL呢?OpenSSL是一套強大的具有加密功能的組件,它包含libcrypto(公共加密庫)、libssl(SSL協議的實現)和openssl(多功能命令工具),因其開源思想,現已廣泛應用于數據通信加密領域。OpenSSL還可在局域網內構建私有CA,實現局域網內的證書認證和授權,保證數據傳輸的安全性。如何構建私有CA呢?本文將詳細講述基于OpenSSL實現私有CA構建。

數據加密解密過程

數據加密需要實現的功能:數據私密性,數據完整性,身份認證和秘鑰交換。

1.jpg

加密類型及功能:
單向加密:提取數據特征碼,實現數據完整性驗證
對稱加密:數據加密,實現數據私密性
公鑰加密:使用對方公鑰加密,實現秘鑰交換
          使用自己私鑰加密,實現身份驗證

公鑰在網絡傳輸過程中,無法保證可信度,容易被竊取或偽裝,所以我們就需要一個受信任的第三方機構(CA)

CA工作流程

2.jpg

#A和B各自用CA的公鑰解密對方證書,完成身份驗證

由于CA支持在互聯網上價格不菲,所以在企業內,不牽涉外網通信前提下,完全自行構建一個局域網內的私有CA.

實現CA構建

OpenSSL可以構建適用于中小型企業的私有CA,如果需要在大型企業構建CA可以用OpenCA,有興趣可以自行Google,這里就不做詳解了,因為OpenSSL足以滿足大多數需求。

建立CA服務器

生成秘鑰

3.jpg

命令詳解:
umask 077:保證秘鑰文件其他人無讀寫權限,在()內執行,只對當前子shell有效
-out /path/to/somefile:指定生成秘鑰位置   
2048:秘鑰長度,可自定義
#openssl rsa -in private/cakey.pem -pubout -text  可提取公鑰

自簽證書

4.jpg

命令詳解:
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)修改

初始化工作環境

5.jpg

命令詳解:
index.txt:證書縮影數據庫
serial:簽署證書編號文件
echo 01 > serial #設定編號初始值

客戶端申請證書

生成密鑰

#我們給web服務生成請求用于https,在其配置文件目錄創建用于保存私鑰和證書的目錄

6.jpg

生成證書簽署請求

7.jpg

#A challenge password []:   #證書請求需要加密存放,如果添加密碼,需要將密碼一同給CA
#An optional company name []:

將簽署請求文件發送給CA服務器

#CA服務器工作目錄下,手動創建了一個存放證書請求的目錄(存放目錄請隨意)

8.jpg

 CA簽署證書

9.jpg

將簽署的證書發送給請求者

10.jpg

這樣客戶端就可以配置使用CA簽署的證書,進行加密通信了。如果客戶端的私鑰不慎丟失,或者證書過期了該怎么辦呢?接下來我們看一下證書怎么吊銷吧。

證書吊銷

客戶端獲取證書serial

11.jpg

CA驗證信息

根據節點提交的serial和subject信息來驗正與index.txt文件中的信息是否一致

12.jpg

CA吊銷證書

13.jpg

CA生成吊銷證書編號(第一次吊銷)

14.jpg

CA更新證書吊銷列表

15.jpg

#如果有需要,可查看crl文件的內容
#openssl crl -in /path/to/crlfile.crl -noout -text

好了,證書成功吊銷,可以重新申請了。

The end

以上便是基于OpenSSL構建私有CA的步驟了,實際效果請自行測試,這里我就不做解析測試了。僅為個人學習整理,如有錯漏,大神勿噴~~~

原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/2704

(0)
書生書生
上一篇 2015-04-13 10:06
下一篇 2015-04-13 10:10

相關推薦

  • linux內核及centos系統啟動流程

    Linux組成 Linux: kernel+rootfs(根文件系統) kernel功能: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能 rootfs:程序和glibc  庫:函數集合, function, 調用接口(頭文件負責描述)      過程調用:proce…

    Linux干貨 2016-09-10
  • 網絡接口配置bonding

    Bonding 就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。 Bonding的工作模式 Mode 0 (balance-rr)     輪轉(…

    Linux干貨 2016-09-09
  • mv命令總結

    mv命令是move的縮寫,可以用來移動文件或者將文件改名,是Linux系統下常用的命令,經常用來備份文件或者目錄。 命令格式:mv  源文件或目錄 目標文件或目錄 2.命令功能:視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能…

    2017-07-24
  • CPU 處理器架構知識

    CPU處理器架構: 主要有ARM、X86/Atom、MIPS、PowerPC,其中ARM在智能手機上面一枝獨秀;其中ARM/MIPS/PowerPC均是基于精簡指令集機器處理器的架構;X86則是基于復雜指令集的架構,Atom是x86或者是x86指令集的精簡版。 Android在支持各種處理器的現狀: ARM+Android 最早發展、完善的支持,主要在手機市…

    Linux干貨 2015-08-03
  • Vim

    vim編輯器         vim,可謂文本編輯界的大哥,功能強大無比,是進階版的vi, vim 不但可以用不同顏色顯示文字內容,還能夠進行諸如 shell script, C program等程序編輯功能。 vim是一種模式化的編輯器  (vim自帶教程,命令行中輸…

    Linux干貨 2016-08-09
  • DNS轉發、ACL以及VIEW

    DNS全稱是Domain Name System的簡稱,即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP/TCP協議之上,使用端口號53。 DNS轉發、ACL以及VIEW…

    Linux干貨 2016-12-08

評論列表(2條)

  • 瓶云
    瓶云 2015-06-17 06:29

    書生,你這個圖畫的很溜啊 :smile:

    • 書生
      書生 2015-06-20 12:32

      @瓶云:mrgreen: :mrgreen: :mrgreen:

欧美性久久久久