摘要:AppServ + OpenSSL in Win32
最近開始摸一些關於 Blog的架站程式,由於覺得要安裝 Apache、MySQL、PHP,分開安裝實在太過於麻煩了,所以就直接採用 Appserv來安裝,
不過後來發現 Appserv內鍵的 Apache竟然沒有加上 OpenSSL的 Module,因為管理 Blog,我還是覺得加上 SSL至少可以對於資料傳輸上有些保護,
因此我 search了很多的文章,發現也蠻多人整理好的,但有些文章中提供的檔案網址不是 404就是換了其他的內容,再加上自己對 Apache也是
一知半解的狀況下,我就只好選擇一篇我比較看得懂的內容,【[架站] Appserv 2.5.9 (Apache 2.2.4 win32) + OpenSSL 0.9.8d 安裝備忘錄】,
以下是轉帖的文章內容,我只有摘錄部分重點,並且加上我自己在過程中覺得比較重要的地方,透過綠色來註解,至於其他內容的部分,
大家可以直接透過引用連結回去查詢相關的說明:
一、預備檔案:
1. Apache_2.2.4-win32-openssl-0.9.8d.msi <*重要的是注意1.和2.的openssl版本要相符*>
2. OpenSSL-0.9.8d_win32.rar
3. openssl.cnf
4. AppServ 2.5.9 *這個AppServ是我採用的版本。
* 第2與第3,在本篇內容的最下方我有提供載點在 SkyDriver上。
二、安裝及複製Apache檔案:
1. 先行安裝AppServ,預設路徑應該安裝在 C:/AppServ/Apache2.2/。
2. 接著再執行Apache_openssl.msi進行安裝。預設應該安裝在 C:/Program Files/Apache Software Fundation/Apache2/。
3. 記得先將二個Apache Service停止。
3. 將Apache2/bin/ 底下的 httpd.exe, ssleay32.dll, libeay32.dll 複製到 Appserv/Apache2.2/bin 底下。
4. 將Apache2/conf/extra/httpd-ssl.conf 複製到Appserv/Apache2.2/conf/extra 底下。
其實這就是在電腦上又多安裝了一個Apache伺服器,不過我們只是要它其中的一些檔案而已,所以用完
之後可以馬上移除掉。
三、安裝Openssl、產生CA檔案:
1. 將OpenSSL-0.9.8d_win32.rar解壓縮,以解壓縮至 C:\Openssl為例,底下應該會有 \bin, \include, \lib, \ssl
四個資料夾和一個 openssl.cnf 檔。
2. 用另外抓取的 openssl.cnf(一、3.) 覆蓋掉原本的。
3. 用文字編輯器打開覆蓋後的 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
4. 將 x509extensions 開頭的這一行註解掉。(前面加上#字號)
5. 在 C:\Openssl\ 下開啟新資料夾 ssl,並在其中新增 index.txt 及 serial 兩個檔案,
serial用文字編輯器打開,輸入01,index.txt保持空白。
6. 將 \bin底下的檔案複製一份到 C:\Openssl\底下。(這是為了避免之後路徑的困擾)
7. 進入命令列模式,依序執行以下動作:
7-1: openssl genrsa -des3 -out ssl/ca.key 1024
7-2: openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr
7-3: openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt
7-4: openssl genrsa -out ssl/server.key 1024
7-5: openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr openssl ca -config
7-6: openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt
*在上列6個步驟裡面會要求輸入密碼、國碼(04)、國家、地區、公司名稱、單位、網站位址、Email。
*在 7-6步驟,會有兩個問題[y/n],都要選y.不然產生的server.crt會出錯,變成空檔案(Empty)。
*如果有error多半是路徑錯誤,稍微檢查一下指令做修正即可。
8. 將 7產生的檔案(整個ssl資料夾)複製到 C:/Appserv/Apache2.2/conf/ 底下。
四、修改httpd-ssl.conf:
1. 打開 C:\AppServ\Apache2.2\conf\extra\httpd-ssl.conf 檔案,修改部份如下:
DocumentRoot 網頁根目錄,比照httpd.conf下的DocumentRoot
ServerName Server位址:443
ServerAdmin Email
ErrorLog logs/error_log
TransferLog logs/access_log
---
SSLCertificateFile conf/ssl/server.crt
SSLCertificateKeyFile conf/ssl/server.key
SSLCertificateChainFile conf/ssl/ca.crt
---
將SSLMutex default註解掉,改為SSLMutex none
---
將所有沒有用雙引號包起來的絕對路徑加上雙引號,例如:
SSLSessionCache "shmcb:C:/AppServ/Apache2.2/logs/ssl_scache(512000)"
SSLCertificateFile "C:/AppServ/Apache2.2/conf/ssl/server.crt"
---
將< VirtualHost >的標注部份改為
NameVirtualHost *:443
< VirtualHost *:443 >
五、修改httpd.conf:
1. 打開 C:\AppServ\Apache2.2\conf\httpd.conf檔案,修改部份如下:
把 LoadModule ssl_module modules/mod_ssl.so 的#註解拿掉
把 Include conf/extra/httpd-ssl.conf 的#註解拿掉
六、重新啟動Apache:
如果啟動過程中沒有出現錯誤,可以連 https://localhost 測試看看,應該就會出現要求憑證的認證畫面了。
*如果Apache啟動失敗,請檢查 error.log或到 Windows 事件檢視器確認是哪邊設定錯誤。
References:
- [架站] Appserv 2.5.9 (Apache 2.2.4 win32) + OpenSSL 0.9.8d 安裝備忘錄
- 在 AppServ 安裝 mod_ssl (Apache 2 版本) SSL (Secure Socket Layer) on Windows
- Windows 下安裝設定 Apache2 + PHP5 + mod_ssl
- 【懶人教學】建構您的 Apache + SSL on Win32
- Windows平台下Apache2.2.4的SSL配置过程(及错误整理)
- http://www.apache-ssl.org/
- http://ms.ntcb.edu.tw/~steven/article/apache-ssl.htm
- http://tud.at/programm/apache-ssl-win32-howto.php3
- http://gca.nat.gov.tw/download/gca_ssl_cert_install_for_apache_modssl.pdf
Download Files: