其實此前也寫過,但當時僅實現了自動建立CA自簽發認證等檔案,近來時間頗為寬裕,加上這個東東的用處又幾乎無所不在,因此,又在其基礎上做了些修修補補。
實現功能:
1、全自動建立CA私人機構和測試認證一套
2、在已有的CA自簽發認證或測試認證的基礎上,進行幾項調整或重新建立或給其他申請簽發等
考慮到代碼略多,因此本文先做詳細使用介紹,然後再粘貼代碼及上傳附件,心急代碼的同學,可以直接向下拉查看或下載附件。
環境: rhel5.8 32bit openssl為光碟片yum源安裝
用法:
command [option]
可以不用選項,且選項也不多,否則就失去指令碼的意義了,使用部分有詳細介紹
/etc/sysconfig/mos_ca.conf :設定檔,可做自訂調整,也可不用,指令碼皆有預設值
一、擷取指令碼,給執行許可權,移動到系統路徑,直接執行即可產生CA自簽發和示範認證:其會在/etc/pki/CA/裡面產生自簽發所需的所有檔案,會在/opt/mos_demo目錄內產生一套示範認證(其功能完全可用),操作如下:
[root@test scripts]# chmod 700 mos_ca.sh [root@test scripts]# ll mos_ca.sh -rwx------ 1 root root 3.3K Jan 8 12:24 mos_ca.sh [root@test scripts]# cp mos_ca.sh /bin/mos_ca [root@test scripts]# mos_ca # 執行到此已OK,下列操主要就是檢查結果 [root@test scripts]# ls /etc/pki/CA/ #查看產生的CA自簽署檔案 cacert.pem crl/ index.txt.attr newcerts/ serial certs/ index.txt index.txt.old private/ serial.old [root@test scripts]# openssl x509 -text -in /opt/mos_demo/demo. #查看產生的示範認證 demo.crt demo.csr demo.key [root@test scripts]# openssl x509 -text -in /opt/mos_demo/demo.crt #查看剛才指令碼簽署的認證 Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: C=CN, ST=Henan, L=Zhengzhou, O=Youguess, OU=Tech, CN=ca.mos.com/emailAddress=root@mos.com Validity Not Before: Jan 8 05:54:52 2013 GMT Not After : Jan 8 05:54:52 2014 GMT Subject: C=CN, ST=Henan, O=Youguess, OU=Tech, CN=demo.mos.com .......
二、當系統已有CA自簽署和示範認證已存在時,再次執行指令碼,會提示是否將原來的檔案,以時間命名備份到其目前的目錄,具體如下
[root@test opt]# mos_ca CA existe,Continue? y: Move file; n-> Quit. [y|n] y #輸入y移動檔案,n退出Demo certificate existe, Continue? y: Move file; n: Quit. [y|n] y #同上[root@test opt]# ls /etc/pki/CA/ 2013-01-08-13:54:48tmp/ crl/ index.txt.old serial cacert.pem index.txt newcerts/ serial.old certs/ index.txt.attr private/ [root@test opt]# ls /etc/pki/CA/2013-01-08-13\:54\:48tmp/ cacert.pem crl/ index.txt.attr newcerts/ serial certs/ index.txt index.txt.old private/ serial.old [root@test opt]# ls /opt/mos_demo/ 2013-01-08-13:54:51tmp/ demo.crt demo.csr demo.key [root@test opt]# ls /opt/mos_demo/2013-01-08-13\:54\:51tmp/demo. demo.crt demo.csr demo.key
三、給一個自訂網域名簽發認證,使用 -n 選項,需要注意的是,操作之前,一定要修改/etc/sysconfig/mos_ca.conf中的Dhost=“你的網域名稱”,若直接使用 -n 的話,當前CA是無法簽發的,因為其和示範認證的網域名稱內容相同是不被允許的,就像真正的CA不能為一個網域名稱頒發兩個認證給不同的客戶。示範如下:
[root@test scripts]# grep -Ev "^$|^#" /etc/sysconfig/mos_ca.conf Dname=mos # 新建立的認證,其名字已mos開頭 Dhost=www.mos.com # 為這個網域名稱頒發 De=root@mos.com # 定義其郵件地址 [root@test scripts]# ll /opt/mos_demo/ [root@test scripts]# mos_ca -n 2013-01-08-13:54:51tmp/ demo.csr mos.crt mos.key demo.crt demo.key mos.csr [root@test scripts]# openssl x509 -text -in /opt/mos_demo/mos.crt #查看剛才簽發新認證 Certificate: Data: Version: 3 (0x2) Serial Number: 2 (0x2) Signature Algorithm: sha1WithRSAEncryption Issuer: C=CN, ST=Henan, L=Zhengzhou, O=Youguess, OU=Tech, CN=ca.mos.com/emailAddress=root@mos.com Validity Not Before: Jan 8 06:14:00 2013 GMT Not After : Jan 8 06:14:00 2014 GMT Subject: C=CN, ST=Henan, O=Youguess, OU=Tech, CN=www.mos.com ..................
四、使用 -s 選項,產生不簽署的認證,用以給向別的CA機構申請,需要在設定檔中修改其國家、省份\州、城市、公司、部分、網域名稱、郵件。操作如下:
[root@test scripts]# grep -Ev "^$|^#" /etc/sysconfig/mos_ca.conf #設定檔,做如下修改 Cny=CN #國家 Pve=Henan #省份/州 Cty=Zhengzhou #城市 Bis=Youguess #公司 Bnh=Tech #部門 Dname=tech #認證名字以此開頭 Dhost=tech.test.com # 要申請的認證網域名稱 De=root@test.com # 其郵件地址 [root@test scripts]# mos_ca -s[root@test scripts]# ls /opt/mos_demo/tech. tech.csr tech.key
五、使用 -o 給已有的csr認證簽發請求檔案簽發,需要再設定檔中指定路徑和部分名字,例如,認證的絕對路徑為:/opt/mos_demo/tech.csr ,在設定檔中,去掉.csr即可,如:/opt/mos_demo/tech。為剛才沒簽發的認證簽發。(再提醒一下,私人CA簽發需要合csr中填寫的國家、省份、城市、公司、部門保持一致。)操作如下:
[root@test scripts]# grep Other /etc/sysconfig/mos_ca.conf Other=/opt/mos_demo/tech [root@test scripts]# mos_ca -o[root@test scripts]# ll /opt/mos_demo/tech. tech.crt tech.csr tech.key # 簽發後產生的crt檔案已出現,查看內容如下: [root@test scripts]# openssl x509 -text -in /opt/mos_demo/tech.crt Certificate: Data: Version: 3 (0x2) Serial Number: 3 (0x3) Signature Algorithm: sha1WithRSAEncryption Issuer: C=CN, ST=Henan, L=Zhengzhou, O=Youguess, OU=Tech, CN=ca.mos.com/emailAddress=root@mos.com Validity Not Before: Jan 8 06:49:53 2013 GMT Not After : Jan 8 06:49:53 2014 GMT Subject: C=CN, ST=Henan, O=Youguess, OU=Tech, CN=tech.test.com ...................
六、 使用CA選項,重新設定並產生CA,但不建立測試認證,需要先在設定檔中修改自簽發CA的各項屬性(國家、省份、城市、公司、部門、網域名稱、郵件等,當然,也可不配置,仍會重建,舊的被移動儲存)。操作如下: