延續上一篇的懶人教學(已修改)
上次呢提供的教學似乎對於 Apache 2.0.X 的使用者比較方便, 這次我們來做一下 Apache 1.3.X
這裡問題比較大一點的是, 預設因為僅 Compile 基本的功能模組所以有些註解的部分別輕易拿掉, 不然會開不起來的
同樣的話再說一次
您可以照著我做也沒關係, 每個人有每個人的做法看個人吧試試看就知
在Hunter 這裡可以找到已經編譯好的,視個人需要自行取用
以下列出最快的安裝方式供參考, 原理....自己看各套件的內文說明
安裝所需檔案
Apache_1.3.31-Mod_SSL_2.8.18-Openssl_0.9.7d-Win32
Openssl-0.9.7d-Win32.zip
openssl.cnf
01. 建議最好先裝 Apache 1.3.X 再來解壓縮 Apache_1.3.31-Mod_SSL_2.8.18-Openssl_0.9.7d-Win32,
記得解壓縮後修改路徑直接覆蓋原來安裝的檔案上(直接覆蓋升級), 建議備份您的設定檔(上一篇忘了交代了 Sorry)
02. 基本上您已經完成 Apache + mod_ssl 的安裝了, 嗯??為啥缺 openssl, 阿知!! 大概忘了放了吧
沒關係我們自己再解壓 Openssl-0.9.7d-Win32.zip 並放在您的 apache 的 bin 下, 接下來得先開始設定您的 httpd.conf
找到 Listen 80 (不能註解掉喔, 至少知道你的網站是活的)
新增 Listen 443 (監聽 SSL)
找到 # BindAddress * 把註解拿掉(因為要開 VirtualHost )
找到 #LoadModule ssl_module modules/mod_ssl.so 把註解拿掉(要開 SSL 要靠這支 Modules 了)
找到 ClearModuleList 新增 AddModule mod_ssl.c 於最底下
03. 這裡預設您除了正常網站外同一個 IP 或 DomainName 上同時有 SSL 所以,
您除了設定您一般的網站路徑外 VirtualHost 也要一併設定
04. 以 Name-Based 為例, 其實用 IP-Base 也一樣, 其他請依實際安裝為準
記得這裡的設定一定要跟上邊的一樣, 不然你的主網頁會找不到喔
找到 #NameVirtualHost *:80 把註解拿掉(也可以改一下成 NameVirtualHost * 這個對單一 IP 比較好用)
<VirtualHost *:80>
ServerAdmin 您的email
DocumentRoot "/您網頁的實際路徑"
ServerName DomainName:80
ErrorLog logs/DomainName_error_log
CustomLog logs/DomainName_access_log common
</VirtualHost>
在最後面新增以下資料, 請依自己環境設定
SSLMutex sem
SSLRandomSeed startup builtin
SSLSessionCache none
SSLLog logs/SSL.log (紀錄檔自己設定)
SSLLogLevel info
<VirtualHost *:443>
ServerAdmin 您的email
DocumentRoot "/您網頁的實際路徑"
ServerName DomainName:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
SSLEngine On
SSLCertificateFile conf/ssl.crt/server.crt
SSLCertificateKeyFile conf/ssl.key/server.key
SSLCertificateChainFile conf/ssl.crt/ca.crt
SSLCACertificatePath conf/ssl.crt
SSLCACertificateFile conf/ssl.crt/ca.crt
</VirtualHost>
到此已完成設定的基本工作了, 看了一下別把你的 ssl.conf 用上來喔
因為重頭到尾都只改 http.conf 而根本不需用到 ssl.conf 喔, 跟在 Apache 2.0.X 上是不一樣的
05. 接下來要開始製作認證的憑證準備階段, 雖然上一篇已寫過, 為求完整性我再 PO 一次
請切換至 Apache 的 bin 目錄下, 把您下載的 openssl.cnf 置於此
並修改一下 [ 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
附記: 如果您在第 13 項若出現錯誤的話請把下列此行註解, 再執行一次第 13 項就好了(建議先註解掉, 我上一篇也忘了交代 Sorry)
x509_extensions= x509v3_extensions
06. 依上述於 bin 目錄下新增一個 ssl 目錄
在 ssl 目錄內新增 index.txt 檔, 內容空白就好
在 ssl 目錄內新增 serial 檔, 內容請填 01 就好
07. 切換回 Apache 的 bin 目錄下吧!!
這裡我們要用命令提示字元 或 Win-DOS 視窗來設定, 所以為方便起見, 請設為 Apache 的 bin 目錄下
當然您要寫成 *.BAT 省在視窗下打那些重複執行的指令也行, 假設我們自己要發給自己 CA 認證
當然 CAroot 一定是自己並加簽給自己
08. 產生 CA Private Key -- 執行 openSSL genrsa -des3 -out ssl/ca.key 1024
1024 為使用 128-bit 加密, 並輸入您的安全密碼
09. 產生 CA Require 憑證需求 執行 openssl req -config openssl.cnf -new -key ssl/ca.key -out ssl/ca.csr
輸入您的申請書資料, 這裡的可以用 "." 來當無資料輸入使用, Domain 或 Websit 在這並無特殊指定輸入, 請依顯示輸入既可
10. 產生 CA Public Crt 憑證 -- 執行 openssl x509 -days 3650 -req -signkey ssl/ca.key -in ssl/ca.csr -out ssl/ca.crt
預設是 30 天過期, 3650 是約 10 年
11. 接下來, 我們要為自己的 Server 或是個人加簽憑證, 這裡以 Server 為例
產生 Server Private Key -- 執行 openSSL genrsa -out ssl/server.key 1024
這裡預設 Server Private Key 不設定安全密碼以免無人值守時電腦關機重開無法啟動 Apache (因為要密碼才能啟動)
這我倒沒在 Win32 試過, Unix-Like 鐵定會要求密碼
12. 產生 Server Require 憑證需求 -- 執行 openssl req -config openssl.cnf -new -key ssl/server.key -out ssl/server.csr
輸入您的申請書資料, 跟上邊的一樣, 不過這裡的 Domain 或 Websit 在這最好填入您的 DomainName 或 主機全名(Host.DomainName)
13. 產生 Server Public Crt 憑證 -- 執行 openssl ca -config openssl.cnf -days 3650 -cert ssl/ca.crt -keyfile ssl/ca.key -in ssl/server.csr -out ssl/server.crt
輸入您的 CA Private Key 安全密碼完成製作手續
14. 現在您的 ssl 目錄下已經有了必要的檔案, 接下來開始複製到所需的路徑下
請在 Apache 下之 conf 目錄下建 ssl.crt 與 ssl.key 這 2 個目錄
將 ca.crt 與 server.crt 複製至 conf/ssl.crt 下
將 server.key 複製至 conf/ssl.key 下
15. OK!!萬事具備了, 啟動您的 Apache 吧!! 不放心的話用 apache -t 看一下語法有無錯誤,如因第02項所產生的錯誤時, 請將 bin 底下的 libeay32.dll 與 ssleay32.dll 複製到上一層目錄(apache.exe 執行檔同目錄)
啟動後先用一般網頁(http://DomainName 或 http://Host.DomainName)開看看應該沒問題
16. 再來試試 Port 443 (http://DomainName:443 或 http://Host.DomainName:443) 應該會告訴你找不到網頁
這裡跟使用 Apache 2.0.X 是有點不同, 沒關係, 這是因為要使用的 Name-Base VirtualHost 模組沒載入產生的
所以您只能建構同一 IP 上使用 IP-Base 的 VirtualHost , 如果要全功能的話要重新 Compile Apache 了
這時您可以直接使用 https://DomainName 或 https://Host.DomainName 來進入 SSL 的網頁了(後面呢...自己認證吧!!)
19. 注意喔!!右下角的金鑰喔!!
因為您的電腦尚未取得 Server 的認證, 所以檢驗憑證時, 記得要安裝 Server 憑證(server.crt)喔!!
又因為 Server 的認證未經授權單位認可, 所以檢驗憑證時, 記得要安裝 CA 憑證(ca.crt)喔!!
您可以將 ca.crt 與 server.crt 公開給人下載安裝以取得擁有屬於您自己的實驗性網站的認證
20. 基本上最好是自己 Compile 來用問題會比較少一點, 因為寫這篇時懶了點且實際上我用不到所以稍加修改了一些
實驗一下的結果得出的經驗, 若有問題大部分是 Apache 本身使用的預設的內建模組沒 Compile 到, 這點是問題所在
希望各位有空也多多實驗一下或重新 Compile 再來 PO 你們的實驗結果相互交流
書籤