真的是好久沒在 Blog 中 PO 文了
剛好最近在嘗試開啟 Apache 的 HTTPS (SSL) 功能,所以就順手在 Blog 中做個紀錄~
步驟大概分為下列
- 建立憑證
- 修改 Apache 的 httpd.conf 檔
- 修改 Apache 的 httpd-ssl.conf 檔
1. 建立憑證
首先一開始即是需要建立憑證,大概需要下面幾個指令
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr[*]openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
openssl rsa -in server.key.org -out server.key[/list]
而 Windows 版 Apache 裡面通常附有 OpenSSL,以我的環境來說,在 Windows 7 下安裝好 Apache 之後,OpenSSL 預設路徑即為 Apache 安裝路徑底下的 bin 資料夾中的 openssl.exe,要做的就是透過內附的 OpenSSL 來產生憑證。
另外由於 Apache 內附的 OpenSSL,其 config 檔案是另外放在 Apache 裡 conf 資料夾下的 openssl.cnf,因此在執行上面的指令時假如有出現找不到 config 檔案的話,需要在指令裡多加參數 -config “Apache 安裝路徑\conf\openssl.cnf”
當然如果先將命令提示字元切換至 Apache 安裝路徑後再執行指令的話,就可以避免每次要載入 config 檔案都要打那一長串的 “Apache 安裝路徑”
接著就是開啟 Windows 內建的命令提示字元,並切換到 Apache 的安裝路徑下
然後依序輸入指令
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
輸入憑證相關資訊 , 如:Country Name=TW , State Name=Taiwan , Organization Name=neidi , Common Name=neidi.homeip.net (Hostname),其他可以不用填
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
openssl rsa -in server.key.org -out server.key
此步驟為移除私密金鑰中的密碼,而從私密金鑰中摘除密碼的原因是:Apache win32 版本不支援 Passphrase 的功能。
故先將原本的 server.key 改名為 server.key.org,再執行這個指令
最後將上面產生的 server.key 跟 server.crt ,就直接擺到 “Apache 安裝路徑\conf” 即可(Apache預設的憑證放置位置)
2. 修改 Apache 的 httpd.conf 檔
將 httpd.conf 中 “LoadModule ssl_module modules/mod_ssl.so” 前面的註解取消
接著將 “Include conf/extra/httpd-ssl.conf” 的註解也取消掉
3.修改 Apache 的 httpd-ssl.conf 檔
將 “Apache 安裝路徑\conf\extra\httpd-ssl.conf 檔 “中的相關設定輸入
如
<VirtualHost *:443>
DocumentRoot “C:/Apache2.2/htdocs”
ServerName neidi.homeip.net:443
ServerAdmin
ErrorLog “logs/neidi.homeip.net_https-error.log”
TransferLog “logs/neidi.homeip.net_https-access.log”
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile “C:/Apache2.2/conf/server.crt”
SSLCertificateKeyFile “C:/Apache2.2/conf/server.key”
<FilesMatch “\.(cgi|shtml|phtml|php)$”>
SSLOptions +StdEnvVars
</FilesMatch>
<Directory “C:/Apache2.2/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch “MSIE [2-5]” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog “C:/Apache2.2/logs/ssl_request.log” \
“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”
</VirtualHost>
最後重新啟動 Apache 即可搞定囉!
資料參考:
[Windows] 安裝 Apache with HTTPS (SSL) 、建立憑證 @ Windows XP
Apache 2.2.17 啟用 SSL