1、下載帶有openSSL的apache安裝包,我下載的為apache_2.2.11-win32-x86-openssl-0.9.8i.msi,安裝后確認(rèn)一下bin路徑下的openssl.exe,ssleay32.dll和libeay32.dll,無(wú)誤進(jìn)行下一步。
2、修改兩個(gè)配置文件,一個(gè)為conf/httpd.conf,另一個(gè)為conf/extra/httpd-ssl.conf
(a)修改httpd.conf
為了使apache啟動(dòng)的時(shí)候調(diào)用ssl的服務(wù),我們需要在配置文件中做一些修改。找到以下兩句話并去掉注釋,則可以開(kāi)啟apache的時(shí)候啟動(dòng)ssl服務(wù):
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-mpm.conf
(b)修改httpd-ssl.conf
修改的主要是我們生成的證書的路徑(我把路徑設(shè)置為conf下的key目錄,把生成的證書放進(jìn)這個(gè)目錄,接下來(lái)會(huì)說(shuō)怎么生成)
SSLCertificateFile xxx/conf/key/server.crt (服務(wù)器證書的位置)
SSLCertificateKeyFile xxx/conf/key/server.key (服務(wù)器私鑰的位置)
SSLCACertificateFile xxx/key/conf/ca.crt (CA根證書的位置,進(jìn)行客戶端驗(yàn)證時(shí)需要)
#SSLVerifyClient require (去掉前面的‘#’號(hào),進(jìn)行客戶端驗(yàn)證時(shí)需要)
#SSLVerifyDepth 1 (去掉前面的‘#’號(hào),把10改為1,進(jìn)行客戶端驗(yàn)證時(shí)需要)
打開(kāi)httpd-ssl.conf,ctrl+f 搜關(guān)鍵字修改就可以了。
3、生成服務(wù)端和客戶端的證書
win+R:cmd進(jìn)入命令行,進(jìn)去apache安裝目錄的bin文件夾,執(zhí)行命令設(shè)置一下openssl的配置:setOPENSSL_CONF=..\conf\openssl.cnf
(a)生成服務(wù)端的私匙
執(zhí)行命令:openssl gensa -out server.key 1024,在目錄bin下生成server.key文件
(b)生成簽署申請(qǐng)
執(zhí)行命令:openssl req -new -out server.csr -key server.key -conf..\conf\openssl.cnf,在目錄bin下生成server.csr文件,這個(gè)過(guò)程中要填入一些信息,按照提示要求填就可以了,但是要記住Common Name必須和httpd.conf中的serverName一致,不然apache啟動(dòng)的時(shí)候會(huì)報(bào)錯(cuò)。
(c)生成CA私匙
執(zhí)行命令:openssl gensa -out ca.key 1024,在目錄bin下生成ca.key文件
(d)生成CA生成自簽署證書
執(zhí)行命令:openssl req -new -x509 -days 365 -key ca.key -out ca.crt -conf..\conf\openssl.cnf,在目錄bin下生成ca.crt文件
(e)生成CA的服務(wù)器簽署證書
執(zhí)行命令:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -conf..\conf\openssl.cnf 我在這里報(bào)錯(cuò)了,按照網(wǎng)上的說(shuō)法,在當(dāng)前目錄下建立一個(gè)demoCA目錄,在里面創(chuàng)建一個(gè)index.txt空文件,一個(gè)名為serial,內(nèi)容為01的文件,以及一個(gè)文件夾newcerts,再執(zhí)行一次就可以了
4、把當(dāng)前文件夾中的server.crt,server.key和ca.crt文件復(fù)制到步驟2所說(shuō)的目錄conf/key下
5、為了方便,我把httpd.conf和httpd-ssl.conf文件中的ServerName分別改為
127.0.0.1:8080 (有些軟件會(huì)占用80這個(gè)端口,所以改成8080)
127.0.0.1:443
6、重啟apache,執(zhí)行兩個(gè)命令net stop Apache2.2和net start Apache2.2,假如遇到apache無(wú)法啟動(dòng)的時(shí)候,可以選我的電腦-》管理-》事件檢查器-》應(yīng)用程序日志,打開(kāi)apache的錯(cuò)誤報(bào)告,會(huì)有提示哪里出錯(cuò)了,一般都可以找到原因
7、打開(kāi)IE,輸入127.0.0.1:8080出現(xiàn)It works。輸入https://127.0.0.1:443的時(shí)候會(huì)彈出一個(gè)驗(yàn)證證書的地方,點(diǎn)擊取消發(fā)現(xiàn)沒(méi)能成功。上網(wǎng)查了一下,原來(lái)還要生成一個(gè) .pfx 的證書并導(dǎo)入到IE中去。
打開(kāi)剛才的命令行,執(zhí)行命令openssl pkcs12 -export -in ca.crt -inkey ca.key -out ca.pfx,在bin下面生成一個(gè)ca.pfx的文件,中間有個(gè)輸入密碼的過(guò)程,要記住這個(gè)密碼。打開(kāi)IE瀏覽器-》工具-》Internet選項(xiàng)-》內(nèi)容-》證書,按照提示導(dǎo)入,這里要輸入剛才生成 .pfx 過(guò)程中輸入的密碼。導(dǎo)入之后,打開(kāi)瀏覽器輸入https://127.0.0.1:443出現(xiàn) It works。搞掂。!