openssl生成tls證書


x509證書一般會用到三類文, key,csr,crt。

Key 是私用密鑰openssl格,通常是rsa算法。

Csr 是證書請求文件,用於申請證書。在制作csr文件的時,必須使用自己的私鑰來簽署申,還可以設定一個密鑰。

Crt 是CA認證后的證書文,(windows下面的,其實是crt),簽署人用自己的key給你簽署的憑證。

一、准備工作

ubuntu下新建文件夾/etc/certstore/,接下來的所有操作都在改文件夾下進行。

首先在/usr/lib/ssl/文件夾下拷貝文件openssl.cnf文件到/etc/certstore/文件夾下,並將該配置文件的路徑修改為當前路徑,如下

[ CA_default ]
dir  = ./                                # Where everything is kept
certs  = $dir/certs                      # Where the issued certs are kept    #內部文件需生成(用戶證書)
crl_dir  = $dir/crl                      # Where the issued crl are kept
database = $dir/index.txt                # database index file.
new_certs_dir = $dir/newcerts            # default place for new certs.          #內部文件在生成用戶證書時自動生成(用戶公鑰)
certificate = $dir/cacert.pem            # The CA certificate            #需生成(根證書)
serial  = $dir/serial                    # The current serial number
crl  = $dir/crl.pem                      # The current CRL              #
private_key = $dir/private/cakey.pem     # The private key              #需生成(根私鑰)
RANDFILE = $dir/private/.rand            # private random number file

然后添加或創建一些文件或文件夾,如下

#mkdir -p ./{private,certs,newcerts,crl}
#touch index.txt
#echo 01 > serial

二、生成CA證書的步驟:

1.生成CA證書的RSA密鑰對

/etc/certstore# openssl genrsa -des3 -out ./private/cakey.pem 2048

這樣是生成rsa私鑰,des3算法,openssl格式,2048位強度。server.key是密鑰文件名。為了生成這樣的密鑰,需要一個至少四位的密碼。可以通過以下方法生成沒有密碼的key:

# openssl rsa -in server.key -out server.key 

*2.生成CA證書請求

/etc/certstore# openssl req -new -days 365 -key ./private/cakey.pem -out ./private/careq.pem    (cert.csr)

(CSR文件必須有CA的簽名才可形成證書.可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢.)

*3.對CA證書請求進行簽名

#openssl ca -selfsign -in ./private/careq.pem -out cacert.pem

4.(合並步驟2&3)一步完成CA證書請求及簽名

/etc/certstore# openssl req -new -x509 -days 3650 -key ./private/cakey.pem -out cacert.pem -config openssl.cnf

 5.查看pem證書:

# openssl x509 -in cacert.pem -text -noout
三、生成CA自簽名證書
/etc/certstore# openssl genrsa -des3 -out ./certs/cert.key -rand ./private/.rnd 2048
/etc/certstore# openssl req -new -x509 -days 3650 -key ./certs/cert.key -out ./certs/cert.crt -config openssl.cnf
/etc/certstore# openssl ca -ss_cert ./certs/cert.crt -policy policy_anything -out ./certs/signedcert.crt -config openssl.cnf
用第一步生成的CA證書(cacert.pem)加密第二步生成的證書(./certs/cert.crt)

第一步生成的證書是供大家用的(大家用同一個),第二步生成的每個人單獨生成一個。

(1)查看key私鑰文件:

# openssl rsa -in ./certs/cert.key -text -noout

(2)將pem證書裝換成der證書的方法:

# openssl x509 -in tom.crt -out cert.der -outform DER

(3)如果創建證書失敗,失敗后重做的方法:

serial文件中刪除證書序列號; index.txt數據庫文件中刪除該證書的條目; 重新創建證書就可以了。

四、此時,文件結構如下:

.
|-- certs
|   |-- cert.crt
|   |-- cert.key
|   `-- signedcert.crt
|-- crl
|-- newcerts
|   `-- 01.pem
|-- prvate
|   `-- cakey.pem
|-- cacert.pem
|-- index.txt
|-- index.txt.attr
|-- index.txt.old
|-- openssl.cnf
|-- serial
`-- serial.old
 了解了這些基礎步驟之后,就可以通過腳本,甚至 makefile 的方式來將這些工作自動化。

 CA.pl 和 CA.sh 便是對 OpenSSL 的 CA 相關功能的簡單封裝,在 Debian 系統中,安裝了 OpenSSL 后,可以在 /usr/lib/ssl/misc/ 目錄下找到這兩個文件。

 而 makefile 的解決方案則可以參考這里 。

 

 參考資料:

使用openssl創建CA》 (http://blog.chinaunix.net/uid-20639449-id-1908987.html)

《openssl根證書生成及簽發用戶證書》(http://www.360doc.com/content/16/0506/15/33079507_556777359.shtml)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM