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

1、系統環境說明html

  • 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, 默認網站node

2、建立密鑰鏈服務器

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

  1. 建立根證書(自簽名證書)this

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私鑰簽名)spa

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. 建立服務器證書(利用中級證書私鑰簽名)code

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

  證書申請建立:htm

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中blog

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

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

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

3、注意事項

  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

4、參考資料

關於數字證書的概念請參考如下連接:

 <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

****************轉載請註明出處******************

相關文章
相關標籤/搜索