私有CA服務(wù)器的搭建

數(shù)字證書就是互聯(lián)網(wǎng)通訊中標志通訊各方身份信息,數(shù)字證書不是通信雙方的身份證書藐石,而是認證機構(gòu)在數(shù)字證書上扣得一個章即供,確認你的身份證書有效,它是由權(quán)威的CA機構(gòu)頒發(fā)用于表示互聯(lián)網(wǎng)上通信雙方的身份于微。個人搭建的自由CA服務(wù)器在互聯(lián)網(wǎng)中是不被認可的逗嫡,但是可以在自己的內(nèi)部網(wǎng)絡(luò)中使用。

一株依、架構(gòu)圖

首先在根CA進行簽署自證證書驱证,然后子CA向根CA申請證書,根CA簽署證書后子CA就可以向其他申請者發(fā)放證書恋腕。此時的子CA服務(wù)器相對于根服務(wù)器來說是申請者抹锄,相對于web服務(wù)器申請者是簽署者,所以子CA是兩個身份荠藤,既是申請者又是簽署者伙单。三者之間的關(guān)系一定要搞清楚,否則在搭建的時候容易出現(xiàn)混亂哈肖。

CA認證鏈

二吻育、配置文件

配置文件 /etc/pki/tls/openssl.cnf省略了一部分配置文件只保留了有關(guān)CA的配置。如果服務(wù)器為證書簽署者的身份那么就會用到此配置文件淤井,此配置文件對于證書申請者是無作用的布疼。


####################################################################
[ ca ]
default_ca      = CA_default            # 默認的CA配置摊趾;CA_default指向下面配置塊

####################################################################
[ CA_default ]

dir             = /etc/pki/CA           # CA的默認工作目錄
certs           = $dir/certs            # 認證證書的目錄
crl_dir         = $dir/crl              # 證書吊銷列表的路徑
database        = $dir/index.txt        # 數(shù)據(jù)庫的索引文件


new_certs_dir   = $dir/newcerts         # 新頒發(fā)證書的默認路徑

certificate     = $dir/cacert.pem       # 此服務(wù)認證證書,如果此服務(wù)器為根CA那么這里為自頒發(fā)證書
serial          = $dir/serial           # 下一個證書的證書編號
crlnumber       = $dir/crlnumber        # 下一個吊銷的證書編號
                                        
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# CA的私鑰
RANDFILE        = $dir/private/.rand    # 隨機數(shù)文件

x509_extensions = usr_cert              # The extentions to add to the cert

name_opt        = ca_default            # 命名方式游两,以ca_default定義為準
cert_opt        = ca_default            # 證書參數(shù)严就,以ca_default定義為準


default_days    = 365                   # 證書默認有效期
default_crl_days= 30                    # CRl的有效期
default_md      = sha256                # 加密算法
preserve        = no                    # keep passed DN ordering


policy          = policy_match          #policy_match策略生效

# For the CA policy
[ policy_match ]
countryName             = match         #國家;match表示申請者的申請信息必須與此一致
stateOrProvinceName     = match         #州器罐、省
organizationName        = match         #組織名梢为、公司名
organizationalUnitName  = optional      #部門名稱;optional表示申請者可以的信息與此可以不一致
commonName              = supplied
emailAddress            = optional

# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]                     #由于定義了policy_match策略生效轰坊,所以此策略暫未生效
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

三铸董、目錄結(jié)構(gòu)圖

我在搭建CA服務(wù)器時就是因為對目錄結(jié)構(gòu)不清晰,導(dǎo)致搭建失敗肴沫。所以在搭建之前要把最重要兩個目錄結(jié)構(gòu)搞清楚粟害。

  • 根CA服務(wù)器:因為只有CA服務(wù)器的角色,所以用到的目錄只有/etc/pki/CA
  • 子CA服務(wù)器:因為既充當證書簽署者颤芬,又充當證書申請者的角色悲幅。所以兩個目錄都有用到。子CA服務(wù)器是最容易出錯的地方站蝠。所以要時刻保持頭腦清醒
  • web服務(wù)器:只是證書申請者的角色汰具,所以用到的目錄只有/etc/pki/tls

四、步驟

  1. 根CA生成自己的私鑰菱魔,生成自簽名證書
  2. 子CA生成自己的私鑰留荔、證書申請文件,將證書申請文件發(fā)送給根CA請求根CA簽署證書澜倦。(此時子CA的身份為申請者)
  3. 子CA拿到根CA簽署的證書文件聚蝶,修改配置文件后,可以向其他申請者簽署證書(此時子CA為簽署者)
  4. web服務(wù)器藻治,生成自己的私鑰碘勉、證書申請文件,將證書申請根文件發(fā)送給子CA請求子CA簽署證書桩卵。

五验靡、實例過程

1.根CA搭建

  • 創(chuàng)建所需要的文件
touch /etc/pki/CA/index.txt        #生成證書索引數(shù)據(jù)庫文件
echo 01 > /etc/pki/CA/serial       #指定第一個頒發(fā)證書的序列號
  • 在根CA服務(wù)器上創(chuàng)建密鑰,密鑰的位置必須為/etc/pki/CA/private/cakey.pem吸占,這個是openssl.cnf中指定的路徑晴叨,只要與配置文件中指定的匹配即可。
  • 根CA自簽名證書矾屯,根CA是最頂級的認證機構(gòu)兼蕊,沒有人能夠認證他,所以只能自己認證自己生成自簽名證書件蚕。
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem -days 7300
#  -new: 生成新證書簽署請求
#  -x509: 專用于CA生成自簽證書
#  -key: 生成請求時用到的私鑰文件
#  -days n:證書的有效期限
#  -out /PATH/TO/SOMECERTFILE: 證書的保存路徑

/etc/pki/CA/cacert.pem就是生成的自簽名證書文件孙技,使用sz工具將他導(dǎo)出到windows機器中产禾。然后雙擊安裝此證書到受信任的根證書頒發(fā)機構(gòu)。

2.子CA搭建

  • 創(chuàng)建子CA的私鑰
[root@subca.centos9.top]$(umask 066; openssl genrsa -out /etc/pki/tls/private/subca.centos9.top.key)
Generating RSA private key, 1024 bit long modulus
.++++++
.....................++++++
e is 65537 (0x10001)
  • 子CA生成證書申請文件牵啦;
[root@subca.centos9.top]$openssl req -new -key /etc/pki/tls/private/subca.centos9.top.key -out /etc/pki/tls/subca.centos9.top.csr
#   -key /etc/pki/tls/private/subca.centos9.top.key  指定私鑰的路徑
  • 將申請文件復(fù)制到根CA目錄下亚情,請求根CA簽署證書
[root@subca.centos9.top]scp /etc/pki/tls/subca.centos9.top.csr 10.0.0.57:/etc/pki/CA/certs/
subca.centos9.top.csr                       100%  660     0.6KB/s   00:00  
#使用scp命令將文件復(fù)制到 10.0.0.57:/etc/pki/CA/certs/目錄下
  • 在根CA服務(wù)器下,簽署子CA的證書哈雏。
[root@CA.aubin.red]$cd /etc/pki/CA/certs
[root@CA.aubin.red]$openssl ca -in subca.centos9.top.csr -out subca.centos9.top.crt -days 3650 
#   -in  指定傳入的傳入申請文件
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 119 (0x77)
        Validity
            Not Before: Sep 10 04:02:04 2017 GMT
            Not After : Sep  8 04:02:04 2027 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = HeBei
            organizationName          = subca
            organizationalUnitName    = opt
            commonName                = subca.centos9.top
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                2B:81:EE:06:D7:12:45:5B:65:99:66:BE:52:DB:57:4B:39:ED:BF:02
            X509v3 Authority Key Identifier: 
                keyid:66:71:6E:40:3D:29:2C:70:5B:35:EB:69:4B:F8:BD:AB:92:21:1A:C2

Certificate is to be certified until Sep  8 04:02:04 2027 GMT (3650 days)
Sign the certificate? [y/n]:y

#核對信息后y確認

1 out of 1 certificate requests certified, commit? [y/n]y          #y確認后證書文件生成
Write out database with 1 new entries
Data Base Updated
  • 將簽署好的證書發(fā)回給子CA服務(wù)器,并改名為cacert.pem;
    /etc/pki/CA/cacert.pem 為子CA服務(wù)器中openssl.cnf配置文件中的certificate指定的路徑楞件。
[root@CA.aubin.red]$scp subca.centos9.top.crt 10.0.0.56:/etc/pki/CA/cacert.pem
root@10.0.0.56's password: 
/root/.bashrc: line 45: alias: /etc/sysconfig/network-scripts/ifcfg-ens33: not found
subca.centos9.top.crt                       100% 3704     3.6KB/s   00:00 

再次將證書傳到windows電腦中,雙擊查看此證書裳瘪,可以看到是ca.aubin.red頒發(fā)給subca.centos9.top的證書土浸。顯示此證書是正常的可用的前提是要將之前的證書安裝好可信的根證書路徑。


同時也將子CA的證書安裝到電腦中后彭羹,子CA就可以給其他申請者簽署證書了黄伊。

  • 子CA要能給別人簽署證書,那么還要生成自己的CA私鑰存放在/etc/pki/CAprivate/cakey.pem,這個文件路徑也是在openssl.cnf中指定的派殷。當然也可以使用之前生成的私鑰復(fù)制一份改名后放到此路徑即可.
[root@subca.centos9.top]$cp  /etc/pki/tls/private/subca.centos9.top.key /etc/pki/CA/private/cakey.pem
  • 最后一步創(chuàng)建所需要的文件还最,子CA搭建完成,子CA可以給其他人簽署證書了。
touch /etc/pki/CA/index.txt        #生成證書索引數(shù)據(jù)庫文件
echo 01 > /etc/pki/CA/serial       #指定第一個頒發(fā)證書的序列號

web服務(wù)器向子CA申請簽署證書

  • 申請第一步生成密鑰
[root@shuaiguoxia tls]# (umask 066; openssl genrsa -out /etc/pki/tls/private/www.shuaiguoxia.com.key 2048)
  • 第二步生成申請文件
    紅框中的為命令毡惜,黃色框中的為注意事項拓轻。國家與省必須與子CA配置文件的的規(guī)則匹配


  • 上傳申請文件,請求子CA簽署

[root@shuaiguoxia tls]# scp www.shuaiguoxia.com.csr 10.0.0.56:/etc/pki/CA/private/
root@10.0.0.56's password: 
/root/.bashrc: line 45: alias: /etc/sysconfig/network-scripts/ifcfg-ens33: not found
www.shuaiguoxia.com.csr                     100% 1017     1.0KB/s   00:00    
  • 子CA確認紅色框中信息后虱黄,兩次y確認簽署證書悦即。然后將證書返回給www服務(wù)器即可


  • 將證書傳入windwos電腦,雙擊點開可以查看到完整的證書鏈橱乱。


常見錯誤

  • wrong number of fields on line 1 (looking for field 6, got 1, '' left)
    原因是/etc/pki/CA/index.txt 文件不為空,可能之前有過其他信息粱甫。注意是0字節(jié)泳叠,不然會報出一個錯誤。
  • unable to open '/etc/pki/CA/index.txt'
    原因是此文件不存在茶宵,touch /etc/pki/CA/index.txt創(chuàng)建一個空文件即可
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末危纫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乌庶,更是在濱河造成了極大的恐慌种蝶,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞒大,死亡現(xiàn)場離奇詭異螃征,居然都是意外死亡,警方通過查閱死者的電腦和手機透敌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門盯滚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踢械,“玉大人,你說我怎么就攤上這事魄藕∧诹校” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵背率,是天一觀的道長话瞧。 經(jīng)常有香客問我,道長寝姿,這世上最難降的妖魔是什么交排? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮会油,結(jié)果婚禮上个粱,老公的妹妹穿的比我還像新娘。我一直安慰自己翻翩,他們只是感情好都许,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嫂冻,像睡著了一般胶征。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桨仿,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天睛低,我揣著相機與錄音,去河邊找鬼服傍。 笑死钱雷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吹零。 我是一名探鬼主播罩抗,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灿椅!你這毒婦竟也來了套蒂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤茫蛹,失蹤者是張志新(化名)和其女友劉穎操刀,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婴洼,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡骨坑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了窃蹋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卡啰。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡静稻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匈辱,到底是詐尸還是另有隱情振湾,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布亡脸,位于F島的核電站押搪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浅碾。R本人自食惡果不足惜大州,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垂谢。 院中可真熱鬧厦画,春花似錦、人聲如沸滥朱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徙邻。三九已至排嫌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缰犁,已是汗流浹背淳地。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帅容,地道東北人颇象。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像并徘,于是被迫代替她去往敵國和親夯到。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容