利用OpenSSL創建證書鏈並應用於IIS7


一、系統環境說明

  • Linux & OpenSSL
1 Linux localhost 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
2 [root@localhost /home/study]#openssl version
3 OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

 

  • Windows & IIS

  Windows 7 X64 , IIS 7, 默認網站

二、創建密鑰鏈

  注意:請先看一下最后的注意事項,避免走彎路。

  1. 創建根證書(自簽名證書)

1 echo "create root ca key"
2 openssl genrsa -out root-key.key 1024
3 echo ----------------------
4 echo "create root cert request"
5 openssl req -new -key root-key.key -out root-req.csr -text -subj "/CN=MRootCA"
6 echo ----------------------
7 echo "create root self sign cert"
8 openssl x509 -req -in root-req.csr -out RootCA.crt -sha1 -signkey root-key.key -days 3650 -text -extfile openssl.cnf -extensions v3_ca

  2. 創建中級證書(利用RootCA私鑰簽名)

1 echo "create 2 level cert key"
2 openssl genrsa -des3 -out root-mid.key 1024
3 echo ----------------------
4 echo "create 2 level cert csr"
5 openssl req -new -key root-mid.key -out root-mid.csr -text -subj "/CN=MidCA"
6 echo ----------------------
7 echo "sign with root-crt"
8 openssl x509 -req -in root-mid.csr -CA RootCA.crt -CAkey root-key.key -CAcreateserial  -days 3650 -out RootMid.crt -text -extfile openssl.cnf -extensions v3_ca

  3. 創建服務器證書(利用中級證書私鑰簽名)

  (使用openssl創建申請:openssl req -out server.csr -new -sha256 -newkey rsa:2048 -nodes -keyout server.key)

  證書申請創建:

1 #在IIS中“創建證書申請”文件,拷貝到Linux系統中(假設名稱為Server.csr)
2 openssl x509 -req -in Server.csr -CA RootMid.crt -CAkey root-mid.key -CAcreateserial -days 3560 -out Server.crt -text -extfile openssl.cnf -extensions v3_ca

  4. 將根證書(RootCA.crt)、中級證書(MidCA.crt)、服務器證書(Server.crt)拷貝到Win7中

  5. 導入RootCA.crt導入到“受信任的根證書頒發機構”,MidCA.crt導入到“中級證書頒發機構” --- 都是本地計算機

  6. 執行“完成證書申請步驟”,綁定網站到SSL,並指定證書為Server.crt的友好名稱

  7. 訪問https://ip即可進行驗證。

三、注意事項

  1. 當證書簽發超過兩級時,在IE中查看證書是會出現如下“因為證書路徑中的證書頒發機構似乎沒有頒發證書的權限或不能被用作終端實體證書,證書無效”錯誤,修改openssl默認配置即可(默認配置在v3_ca配置節,路徑/etc/pki/tls/openssl.cnf)。

1 # This is what PKIX recommends but some broken software chokes on critical
2 # extensions.
3 #basicConstraints = critical,CA:true
4 # So we do this instead.
5 #basicConstraints = CA:true
6 # xwliu
7 basicConstraints = CA:true,pathlen:3

四、參考資料

關於數字證書的概念請參考以下鏈接:

 <http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html>

關於證書與證書鏈的高層次理解請參考如下鏈接:

<http://lukejin.iteye.com/blog/587200>

其他參考資料:

 <http://firefly.iteye.com/blog/674208

 <http://wenku.baidu.com/view/32409a4058fb770bf78a5577.html>

 CRT轉PEM:openssl x509 -in server.crt -out server.pem

 PFX轉PEM:openssl pkcs12 -in server.pfx -out server.pem -nodes

****************轉載請注明出處******************


免責聲明!

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



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