Appserv + OpenSSL in Win32

This article is a transfered documents, all rights/copy rights belong to the original author.
This article is transfered from http://pou629.spaces.live.com/blog/cns!D3B0749CF3CA9D66!939.entry?sa=790366356 and the content is intact.

文件屬性: 本文章為[轉載文件]
著作聲明: 本文章著作權屬於原作者
文件來源: http://pou629.spaces.live.com/blog/cns!D3B0749CF3CA9D66!939.entry?sa=790366356
內文修訂: 無, 完全轉載未修訂.
若有侵犯還請來函告知.

一、預備檔案:
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:AppServApache2.2confextrahttpd-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:AppServApache2.2confhttpd.conf檔案,修改部份如下:
把 LoadModule ssl_module modules/mod_ssl.so 的#註解拿掉
把 Include conf/extra/httpd-ssl.conf 的#註解拿掉

六、重新啟動Apache:
如果啟動過程中沒有出現錯誤,可以連 https://localhost 測試看看,應該就會出現要求憑證的認證畫面了。
*如果Apache啟動失敗,請檢查 error.log或到 Windows 事件檢視器確認是哪邊設定錯誤。

References:

1. [架站] Appserv 2.5.9 (Apache 2.2.4 win32) + OpenSSL 0.9.8d 安裝備忘錄
2. 在 AppServ 安裝 mod_ssl (Apache 2 版本) SSL (Secure Socket Layer) on Windows
3. Windows 下安裝設定 Apache2 + PHP5 + mod_ssl
4. 【懶人教學】建構您的 Apache + SSL on Win32
5. Windows平台下Apache2.2.4的SSL配置过程(及错误整理)
6. http://www.apache-ssl.org/
7. http://ms.ntcb.edu.tw/~steven/article/apache-ssl.htm
8. http://tud.at/programm/apache-ssl-win32-howto.php3
9. http://gca.nat.gov.tw/download/gca_ssl_cert_install_for_apache_modssl.pdf

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s