|
在 AppServ 安裝 mod_ssl 2 (Apache 2.2 版本) 教學
SSL (Secure Socket Layer) on Windows ![]()
作者:Linux0911
發表日期:2009-11-14 12:00 PM 最後修正:2009-11-17 11:50 PM 轉載請註明來源:http://linux0911.no-ip.info/my_style/doc/apache2_mod_ssl2/ 注意: 伺服器測試環境: OS:Windows 7 Ultimate x86 Apache:2.2.8 PHP:5.2.6 MySQL Server:5.0.51a Zend Optimizer:3.3.3 在開始安裝前先下載這些必須安裝的元件:
1. 到 Apache 官方網站下載含 OpenSSL 的 Apache 版本:http://archive.apache.org/dist/httpd/binaries/win32/
1. ↓
麻煩的來了,我已經先安裝了 AppServ 程式,裡面有 Apache 2.2.8![]() 找到 apache_2.2.8-win32-x86-openssl-0.9.8g.msi 19-Jan-2008 01:24 4.8M 2. 到 Openssl 官方網站下載:http://www.openssl.org/source/ 2. ↓ ![]() 找到 openssl-0.9.8g.tar.gz 3. 下載 openssl.cnf 3. ↓ ![]() 本站下載:my_style/my_download/openssl/openssl.cnf 但上面又要我下載 apache_2.2.8-win32-x86-openssl-0.9.8g.msi 兩者不會互衝嗎? 答案是會 那怎麼辦? 就移除 AppServ 先吧! 不會吧!有沒有搞錯! 是的,在 Windows 加裝 OpenSSL 實在是很麻煩 亦有一個方法即是:加裝虛擬機器(Virtula Machine)來安裝作業系統然後萃取出要的檔案 最安全的備份方法: 備份整個 AppServ 資料夾到另外一顆硬碟 備份 C:\Windows\php.ini 檔案到另外一顆硬碟 只能這樣子以防萬一到時候資料有問題 以上提醒一定要備份,出錯不負責喔!
按照本篇操作的話,若選用其他版本,可能造成安裝上的問題或未知情況
本篇以 Microsoft Windows 7 x86(32 位元) Ultimate 做測試作業系統 全文盡量以圖形介紹說明,讓您更輕鬆的學習與操作 看圖片順序操作即可 開始安裝 mod_ssl 4. 先將剛剛下載好的 apache_2.2.8-win32-x86-openssl-0.9.8g.msi 安裝好 4. ↓ ![]() 5. ↓ ![]() 6. ↓ ![]() 7. ↓ ![]() 8. ↓ ![]() 9. ↓ ![]() 10. ↓ ![]() 11. ↓ ![]() 12. ↓ ![]() 13. ↓ ![]() 14. 安裝好後去找 C:/Program Files/Apache Software Fundation/Apache2.2/bin/ a. 將裡面的 14. ↓ ![]() 15. ↓ ![]() 或者先複製到桌面比較保險 httpd.exe libeay32.dll ssleay32.dll 三個檔案複製到 C:\Appserv\Apache2.2\bin\ 裡面 16. ↓ ![]() PS:如果有出現 bin 資料夾權限有程式在使用,開啟工作管理員將 httpd.exe 先關掉 將 C:/Program Files/Apache Software Fundation/Apache2.2/Apache2/conf/extra/ b. 將裡面的 17. ↓ ![]() httpd-ssl.conf 複製到 C:\Appserv\Apache2.2\conf\extra\ 裡面 18. ↓ ![]() PS. 如果你所使用的 AppServ Apache 版本與下載的 Apache openssl 版本不同 也需要複製一下 C:/Program Files/Apache Software Fundation/Apache2.2/nodules/mod_ssl.so 檔案 到此可以將 apache_2.2.8-win32-x86-openssl-0.9.8g.msi 移除了 (控制台 → 程式和功能) 然後可以開始裝回 AppServ 了喔! 安裝完成後,先到 開始 → AppServ Control → Server by Service → Apache Stop (暫停 Apache 服務在複製檔案的時候才比較不會出錯) 然後將 C:\Appserv\ 資料夾整個砍掉 然後把一開始我叫你備份的 AppServ 資料夾整個複製過去 php.ini 也複製到 C:\Windows\ 底下覆蓋 然後到 開始 → AppServ Control → Server by Service → Apache Start (啟動 Apache 服務,讓 Apache 重新讀取資料) 如果 Apache 啟動一直失敗,就整台重開機吧! 因為在這過程 httpd.exe 好像會有點不聽使喚了,重開機比較快! 3. 接下來我們要產生 SSL 連線(HTTPS)時所需要加密的 key 及身份驗證用的 CA。 a. 將剛剛下載的 openssl-0.9.8g.tar.gz 解壓縮到 C:\openssl b. 接著把剛剛下載的 openssl.cnf 複製到 C:\openssl 資料夾下 c. 用記事本或文字編輯器開啟找到: 19. ↓ ![]() 然後修改成這樣: 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 還有別忘了把這個檔案裡的 x509extensions 這一行在開頭加上 # 把它註解掉。 20. 然後在 C:\openssl\ssl\ 資料夾裡面 新增兩個檔案: index.txt (不須編輯) serial (沒有附檔名,裡面輸入 01,然後存檔) 20. ↓ ![]() 21. 開始 → 執行 輸入 cmd 然後用 cd\ 按 Enter 切換到 C:\,然後輸入 cd openssl,變成 c:\openssl)然後輸入以下的指令: 21. ↓ ![]() a. 產生 CA private key,它會要求你輸入密碼,輸入兩次(以下每個指令都會用到 ssl/ca.key) openssl genrsa -des3 -out ssl/ca.key 1024 22. ↓ ![]() b. 產生 CA require cert,照著它的說明填入對應資料 openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr 23. ↓ ![]() Country Name: TW State or Province Name: Taiwan Locality Name: Taipei Organization Name: 組織名稱 (沒有的話就填 N/A 或 None) Organizational Unit Name: 組織部門名稱 (沒有的話就填 N/A 或 None) Common Name: linux0911.no-ip.info Email Address: 信箱 A challenge password: 似乎是用來指定證書撤銷的密碼(可不填寫) PS. 請改成你自己網站的,上面的只是個範例而已。 c. 產生 CA public cert openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt 24. ↓ ![]() d. 產生 Server private key openSSL genrsa -out ssl/server.key 1024 25. ↓ ![]() e. 產生 Server require cert,這裡跟上面 b 一樣的 openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr 26. ↓ ![]() Country Name: TW State or Province Name: Taiwan Locality Name: Taipei Organization Name: 組織名稱 (沒有的話就填 N/A 或 None) Organizational Unit Name: 組織部門名稱 (沒有的話就填 N/A 或 None) Common Name: linux0911.no-ip.info Email Address: 信箱 A challenge password: 似乎是用來指定證書撤銷的密碼(可不填寫) PS. 請改成你自己網站的,上面的只是個範例而已。 f. 產生 Server public key,出現 DemoCA 表示你的 openssl.cnf 沒有改喔(步驟 3.c) openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt 27. ↓ ![]() 會列出你的 Certificate 明細,就上面輸入的,還有 3650 天數(10 年) Sign the certificate: y 1 out of 1 certificate requests certified, commit: y 出現 Data Base Updated 表示完成了所有憑證的認證了 如果沒有錯誤訊息的話,那在你的 C:\openssl\ssl\ 資料夾下應該至少會有 ca.crt server.crt server.key 這三個檔案(確定一下它們不是 0 byte)。 28. ↓ ![]() 28. 然後在 C:/AppServ/Apache2.2/conf/ 資料夾底下建立兩個資料夾 ssl.crt ssl.key 29. ↓ ![]() 然後把 C:\openssl\ssl\ca.crt C:\openssl\ssl\server.crt 複製到 C:/AppServ/Apache2/conf/ssl.crt/ 目錄下 30. ↓ ![]() 而 server.key 複製到 C:/AppServ/Apache2/conf/ssl.key/ 目錄下。 31. ↓ ![]() 32. 檢視一下 C:\AppServ\Apache2.2\conf\extra\httpd-ssl.conf 檔案裡是不是有這幾行: a. 修改其中的路徑: DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" ServerName www.somenet.com:443 ServerAdmin webmaster@somenet.com ErrorLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/error.log" TransferLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/access.log" DocumentRoot "C:/AppServ/www" ServerName linux0911.no-ip.info:443 ServerAdmin linuks0911@hotmail.com ErrorLog "C:/AppServ/Apache2.2/logs/error.log" TransferLog "C:/AppServ/Apache2.2/logs/access.log" b. 找到 SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.crt" 改為 SSLCertificateFile "C:/AppServ/Apache2.2/conf/ssl.crt/server.crt" c. 找到 SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.key" 改為 SSLCertificateKeyFile "C:/AppServ/Apache2.2/conf/ssl.key/server.key" d. 找到 #SSLCertificateChainFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server-ca.crt" 改為 SSLCertificateChainFile "C:/AppServ/Apache2.2/conf/ssl.crt/ca.crt" e. 找到 SSLMutex default 改為 #SSLMutex default SSLMutex none f. 找到 SSLSessionCache "shmcb:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)" 改為 SSLSessionCache "shmcb:C:/AppServ/Apache2.2/logs/ssl_scache(512000)" g. 找到 Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> 改為 Directory "C:/AppServ/www/cgi-bin"> h. 找到 CustomLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_request.log" \ 改為 CustomLog "C:/AppServ/Apache2.2/logs/ssl_request.log" \ i. 找到 <VirtualHost _default_:443> 改為 #<VirtualHost _default_:443> NameVirtualHost *:443 <VirtualHost *:443 > 8. 修改 C:\AppServ\Apache2.2\conf\httpd.conf 找到 #LoadModule ssl_module modules/mod_ssl.so 改為 LoadModule ssl_module modules/mod_ssl.so 找到 #Include conf/extra/httpd-ssl.conf 改為 Include conf/extra/httpd-ssl.conf 如果你很順利作到這裡 32. ↓ ![]() 那就可以重新啟動 apache 的服務,然後試試看能不能用 https 連接到你的網頁伺服器吧! 33. ↓ ![]() 34. ↓ ![]() 35. ↓ ![]() 36. ↓ ![]() 看看是否已加載 mod_ssl 37. ↓ ![]() 在網站目錄建立一個空的資料夾打入網址 應該會出現 38. ↓ ![]() 如果你的 Apache 再重新啟動的過程出現 The requested operation has failed 可能是 Apache Port 衝到, 重新啟動電腦看看, 應該就可以解決了~ 或是防火牆擋住了, 給個 rule 給它便可~ 10. 先試試 http://你的網址:443 是不是一片空白而非無法顯示網頁 然後再到 https://你的網址 是不是跟 http 一樣可以正常瀏覽呢? 恭喜你大功告成 最快的測試方式就是到你的 phpMyAdmin https://你的網址/phpMyAdmin/ 39. ↓ ![]() 出現憑證就是成功了~ 參考資料來源:Windows 下安裝設定 Apache2 + PHP5 + mod_ssl 參考資料來源:The Apache + SSL on Win32 HOWTO |
|
2004-2010 © All Rights Reserved by Linux0911 My Style Site. Site Version: 9.2.0, Last Updated: 2010-03-10. Site Valid W3C: XHTML 1.0 Strict, Valid CSS. Resolution Recommended: No Lower than 1024. (Best 1280+) Site Maps |


