Windows下配置Apache2.X+SSL心得

來源:互聯網
上載者:User
  Windows下配置Apache2.X+SSL心得 2006-08-29 14:58

        這幾天忙於研究給Apache配置SSL協議以提供對Https的支援,網上給出了很多配置方法,但大都屬於針對Apache1.3.37版本的。嘗試了N次都以失敗告終,參照TortoiseSVN的協助文檔也未能成功。在網上所有的方法中這幾篇的方法最管用:
                1、【懶人教學】建構您的 Apache + SSL on Win32
                2、The Apache + SSL on Win32 HOWTO
                3、Windows 下安裝設定 Apache2 + PHP5 + mod_ssl
        在按照上邊給出的方法嘗試了多次以後,也未能成功。最後直接用從網站http://hunter.campbus.com/裡邊提供的壓縮包Apache_2.0.59-Openssl_0.9.8b-Win32.zip解壓縮以後,在按照前邊幾篇文章中給的方法產生相關檔案並修改配置以後發現就成功配置了。今天在寫Blog時回頭再看了一眼文檔發現,以前是因為沒有拷貝Apache.exe至Apache安裝目錄導致不能成功的。現將能正確配置成功的步驟總結如下:
步驟一 下載並安裝相應軟體包:
        Apache:2.0.59版本,下載地址為:http://httpd.apache.org/,也可下載新版本的;
        Apache With SSL和OpenSSL庫:下載地址為http://hunter.campbus.com/,下載與Apache版本對應的壓縮包,相對Apache2.0.59來說需要下載Apache_2.0.59-Openssl_0.9.8b-Win32.zip檔案。另外,還需要下載Openssl-×.×.×-Win32.zip,我下載的是Openssl-0.9.8b-Win32.zip
        openssl.cnf:下載地址為:http://tud.at/programm/openssl.cnf
        Apache的安裝參照提示進行即可,另外兩個包也不需要單獨安裝。
步驟二 給Apache配置SSL支援:
        解壓Apache_2.0.59-Openssl_0.9.8b-Win32.zip,拷貝bin目錄下的Apache.exe、ssleay32.dll 及libeay32.dll 到Apache安裝目錄下的bin目錄,一定要替換掉原有的Apache.exe,(註:也可以拷貝openssl.exe,這樣不需要解壓Openssl-0.9.8b-Win32.zip就可以產生簽署憑證)。拷貝conf目錄下的ssl.conf和ssl.default.conf至Apache安裝目錄下的conf目錄,拷貝modules 目錄下的mod_ssl.so 也要放到 apache 目錄下的 modules 目錄。
        修改ssl.conf檔案如下:(參照TortoiseSVN的協助文檔)
                注釋掉下邊幾行:
                        DocumentRoot "c:/apache/htdocs"
                        ServerName www.example.com:443
                        ServerAdmin you@example.com
                        ErrorLog logs/error_log
                        TransferLog logs/access_log()也可以根據需要修改
                修改SSLCertificateFile conf/ssl.crt/server.crt為SSLCertificateFile conf/ssl/my-server.crt
                修改SSLCertificateKeyFile conf/ssl.key/server.key為SSLCertificateKeyFile conf/ssl/my-server.key
                修改SSLMutex  file:logs/ssl_mutex為SSLMutex  default
                修改SSLCertificateChainFile conf/ssl.crt/ca.crt為SSLCertificateChainFile conf/ssl/ca.crt(MS不要也行)
                註:my-server.key為伺服器key,my-server.crt為伺服器憑證,可根據需要修改
                注釋掉<IfDefine SSL>和</IfDefine>開啟SSL功能
        修改httpd.conf檔案如下:去掉#LoadModule ssl_module modules/mod_ssl.so前邊的注釋。
        在Apache安裝目錄下的conf檔案夾下建立存放認證檔案的ssl檔案夾。
        注意:如果你的網域名稱無法使用的話,可能需要把httpd.conf中的ServerName改為:127.0.0.1:連接埠。我使用預設連接埠,故改為:127.0.0.1:80。
驟三 產生認證檔案(詳請參看OpenSSL使用指南)
        解壓Openssl-0.9.8b-Win32.zip,假設至目錄E:/OpenSSL。
        拷貝openssl.cnf至目錄E:/OpenSSL,並修改CA_Default部分如下:
                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 (MS單反斜線也可以)
        在E:/OpenSSL目錄下建立檔案夾ssl,在其中分別建立index.txt檔案(內容任意)和serial檔案(內容為整數比如01)在命令列下切換至E:/OpenSSL依次運行下邊的命令:
        openssl genrsa -des3 -out ssl/ca.key 1024     產生 CA private key
        openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr     產生CA require cert,照說明填入相關資料
        openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt  產生CA public cert
        openSSL genrsa -out ssl/server.key 1024      產生Server private key
        openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr  產生Server require cert,資料據說最好要和上邊相同
        openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt    產生Server public key
        以上命令都成功執行的話會在剛才的ssl檔案夾下產生ca.crt、server.crt 及server.key三個檔案,把它們複製到Apache安裝目錄下conf目錄下前邊建立的ssl檔案夾中。也可以按照TortoiseSVN的協助文檔中的方法產生認證檔案。
        注意:在上邊兩步填寫資料時,Common Name (eg, your websites domain name) []要填的和httpd.conf中的一樣,否則會出錯,在Apache的錯誤記錄檔中發現錯誤為“ 認證和伺服器名稱不匹配”(SA server certificate CommonName (CN) `127.0.0.1' does NOT match server name!?)。如果ServerName設為127.0.0.1:80的話,Common Name (eg, your websites domain name) []好像填localhost和127.0.0.1都可以。
        ServerName為網域名稱的情況沒有嘗試,其實我覺得ServerName和這兩處資料的填寫,用自己的IP可能是最好的選擇。


        在完成上邊的操作以後啟動Apache伺服器,不出錯的話就能使用https://localhost/來訪問伺服器了。

        當熟悉Apache下配置SSL以後,相信你就可以自己修改相關參數並進行更深入的研究了。

        Apache伺服器不能成功啟動時,可以通過查看Apache的Log尋求解決辦法。

參考資料:
[1] 【懶人教學】建構您的 Apache + SSL on Win32
[2] The Apache + SSL on Win32 HOWTO
[3] Windows 下安裝設定 Apache2 + PHP5 + mod_ssl
[4] TortoiseSVN的協助文檔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.