使用Openssl創(chuàng)建私有CA中心的整體步驟:
成都創(chuàng)新互聯(lián)專注于歙縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供歙縣營(yíng)銷型網(wǎng)站建設(shè),歙縣網(wǎng)站制作、歙縣網(wǎng)頁(yè)設(shè)計(jì)、歙縣網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造歙縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供歙縣網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。1.1、準(zhǔn)備root證書放的地兒專門保存私鑰和證書
1.2、必須使用一個(gè)配置文件給openssl來(lái)使用,保存的名字位于/root/ca/openssl.cnf,附:
1.3、創(chuàng)建root CA的私鑰key, 使用aes256加密key文件,私鑰文件為4096位。
# cd /root/ca
# openssl genrsa -aes256 -out private/ca.key.pem 4096
-------會(huì)提示讓你輸密碼-------
# chmod 400 private/ca.key.pem
1.4、創(chuàng)建root CA的公鑰certificate,使用私鑰去生成公鑰,失效日期設(shè)置長(zhǎng)一點(diǎn)(eg:20 years)
# cd /root/ca
# openssl req -config openssl.cnf \
-key private/ca.key.pem \
-new -x509 -days 7300 -sha256 -extensions v3_ca \
-out certs/ca.cert.pem
------會(huì)提示你輸入相關(guān)信息--------
# chmod 444 certs/ca.cert.pem
使用-config來(lái)指定我們之前下載的配置模板,否則將使用默認(rèn)的模板,位于/etc/pki/tls/openssl.cnf
1.5、校驗(yàn)生成的公鑰是否是我們想要的
#openssl x509 -noout -text -in certs/ca.cert.pem
2、生成intermediate pairs,intermediate CA可以代表root CA去給第三方做簽名,root CA簽名intermediate CA, 結(jié)果會(huì)形成一個(gè)信任鏈chain of trust
2.1、準(zhǔn)備目錄
# mkdir /root/ca/intermediate
# cd /root/ca/intermediate
# mkdir certs crl csr newcerts private
# chmod 700 private
# touch index.txt
# echo 1000 > serial
相比root ca多了一個(gè)csr目錄,主要用于保存證書簽名請(qǐng)求。
# echo 1000 > /root/ca/intermediate/crlnumber
創(chuàng)建一個(gè)crlnumber文件,主要用于證書吊銷列表的追蹤。
2.2、準(zhǔn)備配置文件為/root/ca/intermediate/openssl.cnf, 配置文件模板為https://jamielinux.com/docs/openssl-certificate-authority/appendix/intermediate-configuration-file.html
主要有五個(gè)選項(xiàng)需要變一下:
[ CA_default ]
dir = /root/ca/intermediate
private_key = $dir/private/intermediate.key.pem
certificate = $dir/certs/intermediate.cert.pem
crl = $dir/crl/intermediate.crl.pem
policy = policy_loose
root.ca中的policy是policy_strict是指它只簽名intermediate,而intermediate是loose是允許他去簽名更多的其他證書。
2.3、創(chuàng)建intermediate私鑰,和root ca一樣的命令
# cd /root/ca
# openssl genrsa -aes256 \
-out intermediate/private/intermediate.key.pem 4096
-----提示輸入保護(hù)密碼----
# chmod 400 intermediate/private/intermediate.key.pem
2.4、使用intermediate 私鑰去創(chuàng)建一個(gè)certificate signing request (CSR)
# cd /root/ca
# openssl req -config intermediate/openssl.cnf -new -sha256 \
-key intermediate/private/intermediate.key.pem \
-out intermediate/csr/intermediate.csr.pem
---------會(huì)輸出很多讓你輸入的信息,除了Common Name和root ca時(shí)不一樣,其他最好保持一致----------
注意以上使用的是intermediate的配置文件,以下則是使用root ca 的配置文件,with v3_intermediate_ca extension去簽名以上生成的CSR,并生成簽名后的intermediate公鑰證書:
# cd /root/ca
# openssl ca -config openssl.cnf -extensions v3_intermediate_ca \
-days 3650 -notext -md sha256 \
-in intermediate/csr/intermediate.csr.pem \
-out intermediate/certs/intermediate.cert.pem
# chmod 444 intermediate/certs/intermediate.cert.pem
以上命令完后,會(huì)在運(yùn)行openssl ca命令時(shí)的目錄(/root/ca)下的index.txt下生成類似以下信息,不要?jiǎng)h除:V 250408122707Z 1000 unknown ... /CN=Alice Ltd Intermediate CA
2.5、驗(yàn)證intermediate證書的細(xì)節(jié)是否正確:
# openssl x509 -noout -text \
-in intermediate/certs/intermediate.cert.pem
然后再驗(yàn)證intermediate證書的是否被root ca正確簽名:
# openssl verify -CAfile certs/ca.cert.pem \
intermediate/certs/intermediate.cert.pem
2.6、創(chuàng)建一個(gè)證書鏈文件,主要用于一個(gè)應(yīng)用程序,例如瀏覽器要認(rèn)證intermediate證書的有效簽發(fā)機(jī)構(gòu)是不是root ca(假設(shè)瀏覽器信任root ca)
# cat intermediate/certs/intermediate.cert.pem \
certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
# chmod 444 intermediate/certs/ca-chain.cert.pem
證書鏈文件必須包含root ca的certification,并且在每臺(tái)內(nèi)部客戶端安裝root公鑰證書.
3、利用intermediate CA去簽名平時(shí)使用的server和client,如果是第三方給你的話,人家只需要給你CSR即可,你給CSR簽名就行了。以下是從自己內(nèi)部的角度來(lái)一步一步操作。
3.1、在server端創(chuàng)建key私鑰,盡管root 和 intermediate pair是4096bit,但是給server和client簽名時(shí)最好是2048bit,減少TLS握手時(shí)性能壓力。
# cd /root/ca
# openssl genrsa -aes256 \
-out intermediate/private/www.example.com.key.pem 2048
# chmod 400 intermediate/private/www.example.com.key.pem
如果使用apache,每次啟動(dòng)都要輸入保護(hù)私鑰的密碼,如果不想輸入密碼,就去掉-aes256。
3.2、使用key私鑰去生成一個(gè)CSR證書(說(shuō)白了就是未簽名的公鑰證書),
# cd /root/ca
# openssl req -config intermediate/openssl.cnf \(使用intermediate的私鑰去生成server的公鑰?錯(cuò)了吧,也許這里面的intermediate相當(dāng)于第三方自己的內(nèi)部CA,pending....)
-key intermediate/private/www.example.com.key.pem \
-new -sha256 -out intermediate/csr/www.example.com.csr.pem
----輸出一堆信息讓你填,你不需要和intermediate的相對(duì)應(yīng),但common name時(shí)填寫網(wǎng)站全名,如果是client的話,最好填郵箱信息-----
3.3、使用intermediate證書去簽名server或client的CSR并生成簽名后證書,證書通常一年
# cd /root/ca
# openssl ca -config intermediate/openssl.cnf \
-extensions server_cert -days 375 -notext -md sha256 \
-in intermediate/csr/www.example.com.csr.pem \
-out intermediate/certs/www.example.com.cert.pem
# chmod 444 intermediate/certs/www.example.com.cert.pem
如果是去簽名一個(gè)client,則改成-extensions usr_cert
最后會(huì)在intermediate/index.txt文件中生成一條類似于如下信息: V 160420124233Z 1000 unknown ... /CN=www.example.com
3.4、校驗(yàn)生成的證書信息是否正確
# openssl x509 -noout -text \
-in intermediate/certs/www.example.com.cert.pem
3.5、使用之前intermediate時(shí)創(chuàng)建的證書鏈文件校驗(yàn)是否ok
# openssl verify -CAfile intermediate/certs/ca-chain.cert.pem \
intermediate/certs/www.example.com.cert.pem
3.6、部署證書,這里假設(shè)是apache,以下文件需要
ca-chain.cert.pem
www.example.com.key.pem
www.example.com.cert.pem
如果是給第三方做簽名的話,只需要給他們ca-chain.cert.pem和
www.example.com.cert.pem,因?yàn)樗麄冏屇阕龊灻麜r(shí),不會(huì)把私鑰給你的。
4、證書撤消列表CRLs,主要用來(lái)客戶端程序(eg: IE)使用CRL去驗(yàn)證一個(gè)證書是否被撤消,服務(wù)器也可以使用CRLs限制擁有無(wú)效證書的客戶端連接。目前CRLs這種方式已經(jīng)被Online Certificate Status Protocol (OCSP)取代,所以這里喜新不喜舊。
4.1、OCSP準(zhǔn)備配置文件,在intermediate CA的配置文件中指定,因?yàn)橐褂胕ntermediate CA做簽名
[ server_cert ]
# ... snipped ...
authorityInfoAccess = OCSP;URI:http://ocsp.example.com
# cd /root/ca
# openssl req -config intermediate/openssl.cnf -new -sha256 \
-key intermediate/private/ocsp.example.com.key.pem \
-out intermediate/csr/ocsp.example.com.csr.pem
-----輸出很多信息需要填,最好和要使用的簽名CA時(shí)的信息一樣,Common name是全域名------
使用intermediate CA去簽名該CSR:
# openssl ca -config intermediate/openssl.cnf \
-extensions ocsp -days 375 -notext -md sha256 \
-in intermediate/csr/ocsp.example.com.csr.pem \
-out intermediate/certs/ocsp.example.com.cert.pem
驗(yàn)證生成的證書含有正確的x509 v3 extension:
# openssl x509 -noout -text \
intermediate/openssl.cnf \(又出現(xiàn)了,為什么生成server證書還要intermediate配置文件?沒谷歌到)
撤消證書動(dòng)作,誰(shuí)簽發(fā)誰(shuí)撤消:
# openssl ca -config intermediate/openssl.cnf \
-revoke intermediate/certs/test.example.com.cert.pem
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。