Certificate Authority(CA) 憑證簡介 瞭解 CA 憑證的概念後,現在就先拿 Apache Httpd Server 來作網站的測試。免錢的 OpenSSL 就是一個好的工具,而 AppServ 套件本身即有 Apache、MySQL、PHP、phpMyAdmin 與 OpenSSL 工具,是最方便的軟體了。

一、準備檔案:
下載 AppServ 2.5.10


二、安裝 Apache Server 與設定:

1. 先行安裝AppServ,預設路徑應該安裝在 C:/AppServ/Apache2.2/,並先停止Apache伺服器。
2. 開啟C:\AppServ\Apache2.2\conf 內的 httpd.conf 作修改

把 LoadModule ssl_module modules/mod_ssl.so 的#註解拿掉
把 Include conf/extra/httpd-ssl.conf 的#註解拿掉

httpd.conf-mod_ssl.png  

三、在 C:\AppServ\Apache2.2\bin資料夾底下看見openssl.exe,滑鼠double click執行它,用它來作憑證

1. 輸入 genrsa -out server.key 1024 產生rsa私鑰(Server Private Key:server.key)

ServerPrivateKey.png  

2. 利用私鑰(Server Private Key:server.key)來產生簽署申請:輸入 req -new -out server.csr -key server.key -config ../conf/openssl.cnf 產生簽署申請

Country Name為國籍鍵入TW
State or Province Name為省份鍵入Taiwan
Locality Name為所在地
Organization Name為組織名稱
Organizational Unit Name為組織內單位
Common Name為domain name
Email Address為管理者的電子信箱
剩餘兩項可不填入

 ServerPrivateKeyForCASignRequest.png  

Step 3 & 4 是模擬 CA 第三方認證單位
3. 輸入 genrsa -out ca.key 1024 產生CA的rsa私鑰

4. 輸入 req -new -x509 -days 365 -key ca.key -out ca.crt -config ../conf/openssl.cnf 利用ca私鑰產生待會幫自己主機的簽署憑證,參數同step2上面設定

CACenter.png  

5. 接著於C:\AppServ\Apache2.2\bin資料夾內新建demoCA資料夾,並於demoCA資料夾內新增newcerts資料夾,與 index.txt跟serial檔案,並利用記事本開啟serial後鍵入01後存檔(這裡的值是參考C:\AppServ\Apache2.2 \conf\openssl.cnf 檔案裡 [ CA_default ] 這區段中的設定)

6. 利用step 3 &4 中模擬CA替網站簽署認證的檔案,私鑰:ca.key & 簽署憑證 ca.crt 兩個檔案來替自己的網站提出的簽署憑證申請檔: server.csr 作簽署憑證,產生憑證:server.crt
輸入ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

詢問是否簽署都回答 Y

ServerPublicKey.png  

7. 將C:\AppServ\Apache2.2\bin底下的私鑰 server.key 及CA簽署過的公鑰 server.crt 兩個檔案複製至C:\AppServ\Apache2.2\conf資料夾底下

8.打開 C:\Appserv\Apache2.2\conf\extra\http-ssl.conf檔案,修改部份如下:


#   General setup for the virtual host
DocumentRoot "C:/AppServ/www"
ServerName www.xxx.com:443
ServerAdmin xxx.xxx@gmail.com
ErrorLog "C:/AppServ/Apache2.2/logs/error.log"
TransferLog "C:/AppServ/Apache2.2/logs/access.log"

#   Server Certificate:
SSLCertificateFile "C:/AppServ/Apache2.2/conf/server.crt"
#   Server Private Key:
SSLCertificateKeyFile "C:/AppServ/Apache2.2/conf/server.key"

CustomLog "C:/AppServ/Apache2.2/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


再重啟 Apache Server 即可登入 https://localhost


Troubleshooting:

1. 若有 php_mbstring.dll 檔案遺失的警告,則開啟 C:\Windows\php.ini 將 extension=php_exif.dll 放置於 extension=php_mbstring.dll 之後即可解決

2. 在實做的過程中若電腦的 port:443 被佔用著,利用netstat -ano指 令可以看到是哪個pid去佔著這個port,再利用 process explorer(在Win 7&8 可以執行 Task manager -> Performance -> Resource Monitor)來觀看是哪個程式佔用著,再到服務 Services 關掉即可

參考:

AppServ + OpenSSL Setup in Win32

【php】利用openssl實作ssl網頁加密

HOWTO certificates
文章標籤
創作者介紹
MIS

MISTECH 技術手抄本

MIS 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • 您好 我想請問
    目前是照您的步驟做了
    但是他出現
    I am unable to access the ssl directory
    ssl:Nosuch file or directory
    error in ca
    這些話 這讓我有些搞不懂
    請問這樣是有哪些地方需要再跟改的嗎?
    謝謝
  • 應該是這個存放 ssl 憑證的目錄權限的問題, 可以檢查一下

    MIS 於 2013/12/17 17:21 回覆