返回列表 发帖

[推荐]Apache SSL版下载与创建CA证书的方法

前言:Apache加上SSL就可以做电子商务方面的应用了。可惜的是,在Google和Baidu搜索到的文章十之有九是错误的或者版本太老的。在这里向大家推荐一篇台湾朋友的文章,我已经验证过确实有效。这篇文章既可以作为建站知识,也可以当成学习OpenSSL的用法,个人认为很有收藏价值。
原文:http://bbs.boletips.com/blbbs/viewthread.php?tid=25

推荐:wwashington AT boletips and newsmth
下载:http://soft.boletips.com/html/service/20070310/31.html (这里的版本比较新)
      http://www.apache-ssl.org/ (这里的版本比较老)

Windows 下安裝設定 Apache2 + PHP5 + mod_ssl
Written By ericsk, August 14th, 2006

之前都是在 UNIX-like 的系統下架設 apache 網頁伺服器,而且不論是 Linux 的套件管理系統,抑或是 FreeBSD 的 ports 都把安裝的程序作好了,所以比較少碰到裝不起來的問題。但來到 Windows 下來作這件事就頭大了!雖然不必辛苦地把相關的程式碼抓回來編譯,但還是要自己搞定一些相關的設定就是了,以下是我最近在 Windows 系統(目前是在 Windows XP)上安裝 apache + PHP + mod_ssl 的經驗記錄。

前置作業 - 需要下載的檔案

這裡我列出我完成這件事情所抓下來的檔案:

1. apache_2.0.59-win32-x86-no_ssl.msi
2. Apache_2.0.59-Openssl_0.9.8b-Win32.zip
3. php-5.1.4-Win32.zip
4. Openssl-0.9.8b-Win32.zip
5. openssl.cnf

上述檔案我都附上可以去哪個網頁上找到,同時也將它們編號,這樣之後的說明都用編號表示用到哪個檔案。

安裝相關檔案

首先,直接安裝 1 ,用官方的這份安裝檔案的話,可以用 monitor 跟幫你裝成 Windows 服務,這樣就能設定開機時自動啟動 web 伺服器了。安裝時會要你填入相關的訊息,同時也留意一下你把 apache 裝在哪個目錄下(比方說 D:\Apache)。

然後解開 3 ,也注意你把它解壓縮到何處(比方說 D:\PHP ),解壓縮後,到 apache 的安裝目錄下的 conf 資料夾裡,修改 httpd.conf 這個檔案,然後在最後面加上下面這段:

# For PHP 5 do something like this:
LoadModule php5_module "d:/php/php5apache2.dll"
AddType application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "d:/php"

修改完之後,如果你的 apache 服務已經啟動(可以看右下角的工具列圖示),請先將它 stop,然後找個地方解開 2 ,我們需要把解開後的 bin 目錄下的 Apache.exe、 ssleay32.dll 及 libeay32.dll 放到你 apache 安裝目錄下的 bin 目錄裡,替換掉原本的 apache.exe。然後再將 2 解開後的 conf 目錄下的 ssl.conf 也複製一份到你自己 apache 目錄(如 D:\Apache)下的 conf 目錄裡,還有 modules 目錄下的 mod_ssl.so 也要放到 apache 目錄下的 modules 目錄裡。

接著將 ssl.conf 裡找到下列這段敘述,然後把它改成你的設定:(用文字編輯器打開)

# General setup for the virtual host
DocumentRoot "你的網頁根目錄 可以找 httpd.conf 下的 DocumentRoot"
ServerName 你的 domain name:443
ServerAdmin 你的 email
ErrorLog logs/error_log
TransferLog logs/access_log

接下來我們要產生 SSL連線(HTTPS)時所需要加密的 key 及身份驗證用的 CA。首先,找個地方解開 4 ,比方說 D:\OpenSSL ,接著再把 5 放到該目錄下,並且找到下列地方將它修改成:

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 這一行在開頭加上 # 把它註解掉。然後在 D:\OpenSSL 目錄下建立一個 ssl 資料夾,在裡面新增兩個檔案:index.txt 及 serial,index.txt 讓它保留空白即可,然後 serial 檔案裡打入 01 。

然後在命令列模式下(「開始」->「執行」打 cmd,然後用 cd 指令切到 D:\OpenSSL)依序輸入下列指令:

1. 產生 CA private key,它會要求你輸入密碼
openssl genrsa -des3 -out ssl/ca.key 1024
2. 產生 CA require cert,照著它的說明填入對應資料
openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr
3. 產生 CA public cert
openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt
4. 產生 Server private key
openSSL genrsa -out ssl/server.key 1024
5. 產生 Server require cert,這裡跟上面填入相同的資料
openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr
6. 產生 Server public key
openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt

如果沒有錯誤訊息的話,那在你的 D:\OpenSSL\ssl 資料夾下應該至少會有 ca.crt、server.crt 及 server.key 這三個檔案(確定它們不是 0 byte)。然後把 ca.crt 及 server.crt 放到 D:\Apache\conf\ssl.crt\ 目錄下,而 server.key 放到 D:\Apache\conf\ssl.key\ 目錄下。接著就檢視一下 D:\Apache\conf\ssl.conf 檔案裡是不是有這幾行:

SSLCertificateFile conf/ssl.crt/server.crt
SSLCertificateKeyFile conf/ssl.key/server.key
SSLCertificateChainFile conf/ssl.crt/ca.crt

然後我自己是有把 ssl.conf 裡的 <ifdefine SSL> 及 </ifdefine> 註解掉,這就要看你要不要再去 httpd.conf 裡 define SSL 囉。

如果你很順利作到這裡,那就可以重新啟動 apache 的服務,然後試試看能不能用 https 連接到你的網頁伺服器吧!

本文參考:
1)【懶人教學】建構您的 Apache + SSL on Win32
http://www.pczone.com.tw/vbb3/showthread.php?t=96241

2) The Apache + SSL on Win32 HOWTO
http://tud.at/programm/apache-ssl-win32-howto.php3

本文引用:
1) http://blog.ericsk.org/archives/215
ericsk’s blog --> Windows 下安裝設定 Apache2 + PHP5 + mod_ssl

返回列表