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
下一篇 2015-04-13

相關推薦

  • Homework week-5 grep及find

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep -E "^[[:space:]]+" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; grep&nbsp…

    Linux干貨 2016-09-06
  • linux系統自動安裝之PXE

    PXE(集成在網卡上的)預啟動執行環境 (能夠通過網絡實現操作系統安裝) PXE工作原理1、Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0的位置信息一并傳送給Client2、Client向P…

    2018-01-16
  • shell腳本編程基礎

    ★ 編程基礎★ 腳本基本格式★ 變量★ 運算★ 條件測試★ 配置用戶環境一.編程基礎  程序:指令+數據  程序編程風格:      過程式:以指令為中心,數據服務于指令      對象式:以數據為中心,指令服務于數據  shell程序:提供了編程能力,解釋執行&nbs…

    Linux干貨 2017-03-28
  • M22 Centos6上編譯安裝httpd2.4并實現HTTPS瀏覽

    隨著網絡技術的發展,人們對信息安全越來越重視,傳統的http瀏覽互聯網的方式由于未經加密,其安全性廣為人們詬病,https協議作為加密的互聯網解決方案解決了這一問題。下面我就簡要說明下如何實現通過https發布web頁面的。   實驗目的: 模擬Centos6上安裝httpd2.4,并實現https加密訪問主頁 實驗器材: Centos6.8虛擬機…

    Linux干貨 2017-04-20
  • 搭建個人博客&論壇(LAMP):wordpress、discuz、phpMyAdmin

    搭建個人博客&論壇(LAMP):wordpress、discuz、phpMyAdmin 一、快速部署LAMP架構平臺 1.CentOS 6系統部署 所需安裝包:httpd, php, mysql-server, php-mysql ]# yum install -y  httpd php&n…

    Linux干貨 2016-10-17
  • N22-第二周作業-對Linux的基礎操作命令的理解及用法示例

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 Linux上文件管理類命令常用的有:pwd、ls、cd、cp、touch、mv、rm、rmdir   1)pwd:顯示當前工作目錄     2)ls:列出指定目錄下的內容    常用的選項有:   -a:列出目錄中的所有文…

    Linux干貨 2016-08-22

評論列表(2條)

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

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

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

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

欧美性久久久久