Apache掛 SSL
一、預備檔案:
1. Apache_2.2.4-win32-openssl-0.9.8d.msi <*重要的是注意1.和2.的openssl版本要相符*>
2. OpenSSL-0.9.8d_win32.rar
3. openssl.cnf
二、安裝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 <------crt存放目錄
SSLCertificateKeyFile conf/ssl/server.key <------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 事件檢視器確認是哪邊設定錯誤。
留言列表