一、准備工作
安裝好 Apache + openssl
win32openssl 下載地址 http://slproweb.com/products/Win32OpenSSL.html,最好下載完整包(或者可以自己編譯openssl)
VC++ 2008安裝
二、生成CA證書
首先cmd命令進入{Apache}/bin目錄下
1、成網站服務器公鑰文件server.key
openssl genrsa -out server.key 1024
2、生成server.csr
openssl req -new -out server.csr -key server.key -config ..\conf\openssl.cnf
(此處的openssl.cnf在windows下顯示的是openssl 類型為快速撥號)
3、生成CA私鑰文件ca.key
openssl genrsa -out ca.key 1024
4、生成CA證書
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ..\conf\openssl.cnf
三、生成服務端證書
在{Apache}/bin文件下面創建demoCA文件夾,並在demoCA文件夾里面創建newcerts文件夾、index.txt文件、serial文件,serial文件內容為01。
1、簽名以后的服務器證書
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ..\conf\openssl.cnf
2、把server.crt,server.key,ca.crt文件復制到{Apache}/conf文件夾下面
四、生成客戶端證書
1、創建客戶端私鑰
openssl genrsa -aes256 -passout pass:pldsec -out D:/Wamp/private/client.key.pem 2048
2、創建客戶端證書簽發請求
openssl req -passin pass:pldsec -new -key D:/Wamp/private/client.key.pem -out D:/Wamp/private/client.csr -subj '/C=CN/ST=SZ/L=SZ/O=pldsec/OU=pldsec/CN=192.168.1.203' -config D:/Wamp/Apache24/conf/openssl.cnf
3、利用CA根證書,簽發客戶端證書
openssl x509 -req -days 3650 -CA D:/Wamp/Apache24/conf/ca.crt -CAkey D:/Wamp/Apache24/bin/ca.key -CAcreateserial -in D:/Wamp/private/client.csr -out D:/Wamp/certificates/client.crt
4、將client.crt轉換為 .pfx 格式的證書
openssl pkcs12 -export -clcerts -inkey D:/Wamp/private/client.key.pem -in D:/Wamp/certificates/client.crt -out D:/Wamp/certificates/client.p12 -passin pass:pldsec -passout pass:pldsec
五、在httpd中配置雙向的HTTPS
1、編輯 httpd.conf,分別查找下面2行代碼,並去掉前面的#,(這里的前提是,在編譯httpd的時候,已經編譯了ssl模塊)
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_memcache_module modules/mod_socache_memcache.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
2、編輯{Apache}/conf/extra/httpd-ssl.conf
SSLEngine on
SSLCertificateFile "d:/Wamp/Apache24/conf/server.crt"
SSLCertificateKeyFile "d:/Wamp/Apache24/conf/server.key"
SSLCACertificateFile "D:/Wamp/Apache24/conf/ca.crt"
SSLVerifyClient require
SSLVerifyDepth 10
前3個開啟是單向的HTTPS認證,后面3個開啟是雙向的HTTPS認證