伺服器測試環境:
Apache 2.0.59 +
php 4.4.7
不過在此之前你必須先 Download 下列檔案:
1.
Apache_2.0.59-Openssl_0.9.8b-Win32.zip
2.
Openssl-0.9.8b-Win32.zip
3.
openssl.cnf
開始安裝 mod_ssl
1. 先到右下角工作列
圖示 Apache Monitor 先 STOP Apache
2. 解壓縮 Apache_2.0.59-Openssl_0.9.8b-Win32.zip (放桌面就好了)
將裡面的
./Apache_2.0.59-Openssl_0.9.8d-Win32/bin/
Apache.exe
./Apache_2.0.59-Openssl_0.9.8d-Win32/bin/
ssleay32.dll
./Apache_2.0.59-Openssl_0.9.8d-Win32/bin/
libeay32.dll
3 個檔案複製到 X:/AppServ/Apache2/bin/ 裡面, 取代 Apache.exe
將
./Apache_2.0.59-Openssl_0.9.8d-Win32/conf/
ssl.conf
複製到 X:/AppServ/Apache2/conf/ 裡面
3. 開啟 X:/AppServ/Apache2/conf/ssl.conf
找到
引用:
# General setup for the virtual host
DocumentRoot "你的網頁根目錄 可以找 httpd.conf 下的 DocumentRoot"
ServerName 你的 domain name:443
ServerAdmin 你的 email
ErrorLog logs/error_log
TransferLog logs/access_log
修改一下你的網站資料
4. 接下來我們要產生 SSL連線(HTTPS)時所需要加密的 key 及身份驗證用的 CA。
首先,找個地方解開 Openssl-0.9.8b-Win32.zip
比方說 D:\OpenSSL ,接著再把 openssl.cnf 放到該目錄下,並且找到下列地方將它修改成:
複製內容到剪貼簿
代碼:
dir = ssl
certs = $dir\\certs
crl_dir = $dir\\crl
database = $dir\\index.txt
new_certs_dir = $dir
certificate = $dir\\cacert.pem
serial = $dir\\serial
crl = $dir\\crl.pem
private_key = $dir\\privkey.pem
RANDFILE = $dir\\privkey.rnd如果你無法開啟 openssl.cnf, 先開啟 UltraEdit 或是新增記事本, 將 openssl.cnf 拉到裡面就可以了
還有別忘了把這個檔案裡的
x509extensions 這一行在開頭加上 # 把它註解掉。
5. 然後在 D:\OpenSSL 目錄下建立一個 ssl 資料夾,
在裡面新增兩個檔案:
index.txt
serial
index.txt 讓它保留空白即可,然後 serial 檔案裡打入 01 。
6. 然後在命令列模式下(「開始」->「執行」打 cmd,然後用 cd 指令切到 D:\OpenSSL)依序輸入下列指令:
產生 CA private key,它會要求你輸入密碼
openssl genrsa -des3 -out ssl/ca.key 1024
產生 CA require cert,照著它的說明填入對應資料
openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr
產生 CA public cert
openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt
產生 Server private key
openSSL genrsa -out ssl/server.key 1024
產生 Server require cert,這裡跟上面填入相同的資料
openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr
產生 Server public key
openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt
如果沒有
錯誤訊息的話,那在你的 D:\OpenSSL\ssl 資料夾下應該至少會有
ca.crt
server.crt
server.key
這三個檔案(確定它們不是 0 byte)。
7. 然後在 X:/AppServ/Apache2/conf/ 資料夾底下建立兩個資料夾
ssl.crt
ssl.key
然後把
ca.crt
server.crt
放到 X:/AppServ/Apache2/conf/ssl.crt/ 目錄下
而 server.key 放到 X:/AppServ/Apache2/conf/ssl.key/ 目錄下。
8. 檢視一下 X:/AppServ/Apache2/conf/ssl.conf 檔案裡是不是有這幾行:
SSLCertificateFile conf/ssl.crt/server.crt
SSLCertificateKeyFile conf/ssl.key/server.key
SSLCertificateChainFile conf/ssl.crt/ca.crt
9. 然後把 ssl.conf 裡的 <ifdefine SSL> 及 </ifdefine> 註解掉,
前面加上 # 號即可
這就要看你要不要再去 httpd.conf 裡 define SSL 囉。
如果你很順利作到這裡
那就可以重新啟動 apache 的服務,然後試試看能不能用 https 連接到你的網頁伺服器吧!
看看是否已加載 mod_ssl, 在網站目錄建立一個空的資料夾打入網址
應該會出現
引用:
Apache/2.0.59 (Win32) mod_ssl/2.0.59 OpenSSL/0.9.8d PHP/4.4.7 Server at linux0911.no-ip.info Port 80
如果你的 Apache 再重新啟動的過程出現
The requested operation has failed
可能是 Apache Port 衝到, 重新啟動電腦看看, 應該就可以解決了~
或是防火牆擋住了, 給個 rule 給它便可~
10. 先試試 http://你的網址
:443
是不是一片空白而非無法顯示網頁
然後再到 http
s://你的網址
是不是跟 http 一樣可以正常瀏覽呢?
恭喜你大功告成
最快的測試方式就是到你的 phpMyAdmin
http
s://你的網址/phpMyAdmin/
出現憑證就是成功了~
參考資料來源:
Windows 下安裝設定 Apache2 + PHP5 + mod_ssl
參考資料來源:
The Apache + SSL on Win32 HOWTO