構建私有CA

構建私有CA

我們采用openssl這個軟件來實現

所有首先我們來看下該軟件的配置文件

實現環境 centos 7.2

[root@redhat7 ~]# rpm -qc openssl  //可以看到該命令沒有任何輸出,我們可以思考該軟件包還存在其他的支包
[root@redhat7 ~]# rpm -qa | grep "openssl"  //果然我們可以看到存在 libs 支包
openssl-libs-1.0.1e-42.el7.9.x86_64
openssl-1.0.1e-42.el7.9.x86_64
[root@redhat7 ~]# rpm -qc openssl-libs
/etc/pki/tls/openssl.cnf   //終于找到配置文件了

構建私有CA

查看該配置文件

[root@redhat7 ~]# cat /etc/pki/tls/openssl.cnf

//我們主要關注 [ ca ] 段落

構建私有CA

(1)自建CA;需要私鑰 //私鑰必須在特定的目錄下,且必須命名為cakey.pem 配置文件定義的

[root@redhat7 ~]# (umask 077 ; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
(在子shell中執行該命令 umask 077不影響當前shell的umask)
Generating RSA private key, 2048 bit long modulus
....................+++
..................+++
e is 65537 (0x10001)
[root@redhat7 ~]# ll /etc/pki/CA/private/cakey.pem  //生成的私鑰文件
-rw-------. 1 root root 1675 Sep 11 16:57 /etc/pki/CA/private/cakey.pem

(2)生成自簽證書 //特定目錄下的特定文件名 配置文件已經定義的 [root@redhat7 ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 //輸出省略

構建私有CA

[root@redhat7 ~]# ll /etc/pki/CA/cacert.pem  //我們的CA證書
-rw-r--r--. 1 root root 1302 Sep 11 17:08 /etc/pki/CA/cacert.pem

(3)為CA提供所需要的目錄及文件 //存在則可以忽略

[root@redhat7 ~]# mkdir /etc/pki/CA/{certs,crl,newcerts}
[root@redhat7 ~]# touch /etc/pki/CA/{serial,index.txt}
[root@redhat7 ~]# echo 01 > /etc/pki/CA/serial
[root@redhat7 ~]# tree /etc/pki/CA
/etc/pki/CA
├── cacert.pem
├── certs
├── crl
├── index.txt
├── newcerts
├── private
│   └── cakey.pem
└── serial
4 directories, 4 files

構建私有CA

至此:我們的CA服務器已經配置完成

假設某服務器要用到證書進行安全通信,需要向CA請求簽署證書 (此時我們換臺centos 6.8 的主機)

我們以httpd服務為例

確保安裝有httpd服務

[root@centos6 ~]# mkdir /etc/httpd/ssl

(1)生成私鑰

[root@centos6 ~]# (umask 077 ; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
Generating RSA private key, 2048 bit long modulus
...........................................................................+++
.............................................................+++
e is 65537 (0x10001)
[root@centos6 ~]# ll /etc/httpd/ssl/httpd.key 
-rw-------. 1 root root 1679 Sep  7 02:55 /etc/httpd/ssl/httpd.key

(2)生成證書簽署請求

[root@centos6 ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365

構建私有CA

此處要和圖三信息一樣 否則可能會簽署失敗 (由于是自建的私有CA)

(3)將請求通過可靠方式發送給CA主機

這里我們通過SCP命令來實現

[root@centos6 ~]# scp /etc/httpd/ssl/httpd.csr  root@10.1.0.111:/tmp //將本地的httpd.csr文件復制一份到10.1.0.111主機的/tmp目錄下

這里我們切換到CA服務器 即 centos 7 上

在CA主機上簽署證書

[root@redhat7 ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365


httpd.crt 即為 centos6 上的 httpd 的證書

構建私有CA 查看證書中的信息:

[root@redhat7 ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=Beijing/O=Sxj/OU=Si/CN=asher.com

同時數據塊中也有相應的記錄

[root@redhat7 ~]# cat /etc/pki/CA/index.txt
V   170911110034Z       01  unknown /C=CN/ST=Beijing/O=Sxj/OU=Si/CN=asher.com

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

(0)
sixijiesixijie
上一篇 2016-09-28
下一篇 2016-09-28

相關推薦

  • HA專題: corosync+pacemaker實現nginx高可用

    HA專題: corosync+pacemaker實現nginx高可用 前言 實驗介紹 實驗拓撲 實驗環境 實驗步驟 準備工作 安裝HA集群組件 安裝nginx和配置nfs 使用crmsh配置集群資源 測試 總結 前言 這幾天都會學習高可用集群, 也會將其中的一些實驗寫出來分享給大家, 這個專題估計會寫5篇左右, p.s: 寫博客很累的 實驗介紹 這次的實驗比…

    Linux干貨 2016-04-11
  • 理解Inode

    inode是一個重要概念,是理解Unix/Linux文件系統和硬盤儲存的基礎。 我覺得,理解inode,不僅有助于提高系統操作水平,還有助于體會Unix設計哲學,即如何把底層的復雜性抽象成一個簡單概念,從而大大簡化用戶接口。 下面就是我的inode學習筆記,盡量保持簡單。 一、inode是什么? 理解inode,要從文件儲存說起。 文件儲存在硬盤上,硬盤的最…

    Linux干貨 2015-03-20
  • 利用nginx實現基于傳輸層的四層負載均衡

    nginx利用ngx_stream_core_module實現四層的負載均衡服務。作為四層負載均衡nginx和lvs的區別在于: lvs工作于內核層,相對來說效率更高,性能更強; nginx工作于用戶空間; lvs不會受到套接字數量的限制; nginx作為四層負載均衡也需要監聽套接字來和客戶端,后臺服務器進行連接,會受到套接字數量限制,不過這個問題可以通過k…

    2017-07-03
  • 8月2日作業

    在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。 [root@localhost ~]# groupadd g1 [root@localhost ~]# groupadd g2 [root@local…

    Linux干貨 2016-08-05
  • class-6 積累應用

    1、三種權限rwx對文件和目錄的不同意義     ## 讀寫執行對于文件的意義         r:針對于文本文件         w:可修改內容,但不能刪除文件本身,需要x權限配合  &n…

    Linux干貨 2016-08-05
  • socket阻塞與非阻塞,同步與異步、I/O模型

    1. 概念理解      在進行網絡編程時,我們常常見到同步(Sync)/異步(Async),阻塞(Block)/非阻塞(Unblock)四種調用方式:同步:      所謂同步,就是在發出一個功能調用時,在沒有得到結果之前,該調用就不返回。也就是必須一件一件事做,等前…

    Linux干貨 2015-04-10
欧美性久久久久