一、CA的作用
CA,Catificate Authority,它的作用就是提供證書(即服務器證書,由域名、公司信息、序列號和簽名信息組成)加強服務端和客戶端之間信息交互的安全性,以及證書運維相關服務。任何個體/組織都可以扮演 CA 的角色,只不過難以得到客戶端的信任。雙方通信,需要通過簽證機構CA頒發證書纔可以相互信任,安全的進行數據通信,除了收費的認證機構的證書,還可以自簽名獲取證書。
二、配置文件及相關參數
openssl的配置文件:/etc/pki/tls/openssl.cnf ,該文件規定了CA證書主要的存放目錄,工作目錄,證書編號、策略信息等,搭建CA需要以此 配置文件作爲參看。配置文件中需要注意的主要參數:
[ policy_match ]
countryName = match # 國家名是否匹配,match爲匹配
stateOrProvinceName = match # 州或省名是否需要匹配
organizationName = match # 組織名是否需要匹配
organizationalUnitName = optional # 組織的部門名字是否需要匹配
commonName = supplied # 註釋
emailAddress = optional # 郵箱地址
dir = /etc/pki/CA # Where everything is kept (dir變量)
certs = $dir/certs # Where the issued certs are kept(認證證書目錄)
database = $dir/index.txt # database index file.(數據庫索引文件)
new_certs_dir = $dir/newcerts # default place for new certs.(新證書的默認位置)c
ertificate = $dir/cacert.pem # The CA certificate(CA機構證書)
serial = $dir/serial # The current serial number(當前序號,默認爲空,可以指定從01開始)
private_key = $dir/private/cakey.pem# The private key(CA機構的私鑰)
三種策略:匹配、支持和可選 匹配指要求申請填寫的信息跟CA設置信息必須一致,支持指必須填寫這 項申請信息,可選指可有可無
CA自簽證書 生成私鑰 cd /etc/pki/CA/ (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
生成自簽名證書 openssl req -new -x509 –key
/etc/pki/CA/private/cakey.pem -days 7300 -out
/etc/pki/CA/cacert.pem
-new: 生成新證書籤署請求
-x509: 專用於CA生成自簽證書 (根證書)
-key: 生成請求時用到的私鑰文件
-days n:證書的有效期限
-out /PATH/TO/SOMECERTFILE: 證書的保存路徑
三、實驗:建立CA,並使用另一個主機申請證書,用CA簽名
1、首先選一臺主機部署CA中心,touch /etc/pki/CA/index.text 生成證書索引數據庫文件
2、echo 00 > serial 指定第一個頒發的序列號
3、創建私鑰(umask 066;openssl genrsa -out private/cakey.pem -des3 2048)
genrsa代表RSA算法,CA的私鑰存放目錄是配置文件中規定的(private目錄),2048代表指定私鑰位數。
4、生成自簽名頒發證書請求:openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300
[root@localhost CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300
Enter pass phrase for private/cakey.pem:
You are about to be asked to enter information that will be incorporated
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HENAN
Locality Name (eg, city) [Default City]:ZhengZhou
Organization Name (eg, company) [Default Company Ltd]:shushu.com
Organizational Unit Name (eg, section) []:opt
Common Name (eg, your name or your server's hostname) []:ca.shushu.com
Email Address []:
注意:默認國家,省,公司名稱三項必須和CA一致 根CA與子CA的Common Name一定要不一樣。
以上就是自制CA證書的主要步驟,創建成功後從虛擬系統sz丟到實體機中安裝進行測試。
安裝到證書的存儲時選擇‘將所有的證書都放入下列存儲’瀏覽選中‘受信任的根證書頒發機構’下一步完成。在瀏覽器設置‘高級選項卡選’
5、查看證書中的信息
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates
text代表全部信息,issuer代表頒發者,subject代表主題,dates代表有效期
openssl ca -status SERIAL 查看指定編號的證書狀態
6、創建搭建子CA,與創建根CA基本相同
(1)在/etc/pki/CA下創建數據庫索引文件
(2)指定第一個頒發證書的序列號
(3)給web服務器生成私鑰
(4)生成證書請求
[root@centos CA]#openssl req -new -key private/cakey.pem -out subca.csr
Enter pass phrase for private/cakey.pem:
140185183258440:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:You must type in 4 to 8191 characters
...........................................................
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HENAN
Locality Name (eg, city) [Default City]:LuoHe
Organization Name (eg, company) [Default Company Ltd]:shushu.com
Organizational Unit Name (eg, section) []:Rou
Common Name (eg, your name or your server's hostname) []:app.shushu.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:centos
An optional company name []:centos
注意:根據默認策略,所填寫的國家,省,公司必須與根CA一致
(5)將子CA中生成的公鑰發送給根CA:scp subca.csr [email protected]:/etc/pki/CA
7、頒發證書,在根CA中進行操作,根CA進行簽名。
[root@localhost CA]#openssl ca -in subca.csr -out certs/subca.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
...............................
Subject:
countryName = CN
stateOrProvinceName = HENAN
organizationName = shushu.com
organizationalUnitName = opt
commonName = ca.shu.com
Certificate is to be certified until Aug 29 02:56:28 2028 GMT (3650 days)
Sign the certificate? [y/n]:y
.....
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
操作完成後可以查子CA的數據庫索引,序列號等信息,子CA是否創建成功
8、最後再把生成的證書文件發送給請求者子CA:scp subca.crt [email protected]:/etc/pki/CA/cacert.pem,發送成功後導出到桌面,打開子CA的證書在‘證書路徑’可以查看根子CA的路徑信息,這就說明子CA創建成功。