1. 程式人生 > >wamp下 配置 apache 的ssl

wamp下 配置 apache 的ssl

wamp開啟SSL
解決wamp5_1.7.4中APACHE啟動問題



1.#修改httpd.conf檔案
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
#去掉上面兩行前的"#"
2.#修改conf/extra/httpd-ssl.conf
SSLCertificateFile "D:/wamp/Apache2/bin/server.crt"
SSLCertificateKeyFile "D:/wamp/Apache2/bin/server.key"
3.#修改為你生成證書的檔案位置
DocumentRoot "E:/www"  #修改 DocumentRoot的值與httpd.conf檔案的DocumentRoot保持一致.
4.#解決APACHE無法啟動
68:SSLMutex  "file:D:/ProgramFiles2003/wamp/wamp/Apache2/logs/ssl_mutex"
#修改為68: SSLMutex  default    
5.#把httpd-ssl.conf檔案中所的apache的路徑替換為你的APACHE的路徑


#到此配置檔案修改完畢


二,證書生成的方法
#命令列中進入apache/bin目錄下執行如下:
openssl req -config ../conf/openssl.cnf -new -out server.csr -keyout server.pem

提示輸入一系列的引數, 
...... 
Country Name (2 letter code) [AU]: 
State or Province Name (full name) [Some-State]: 
Locality Name (eg, city) []: 
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 
Organizational Unit Name (eg, section) []: 
Common Name (eg, YOUR name) []: 


Email Address []: 
..... 
注:Common Name必須和httpd.conf中server name必須一致,否則apache不能啟動 
啟動apache時錯誤提示為:RSA server certificate CommonName (CN) `Koda' does NOT match server name!? 


#簽發證書
openssl rsa -in server.pem -out server.key
#生成金鑰檔案
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
#生成證書檔案

把  server.key,server.crt copy到conf資料夾下

補充:


  1. 重新命名server.key為server.key.org

  2. 執行命令 >openssl rsa -in server.key.org -out server.key

  3. 將產生的new key替換到原來的位置。

  4. 編輯httpd-ssl.conf,把 #SSLPassPhraseDialog  builtin註釋掉。


以上籤署證書僅僅做測試用,真正執行的時候,應該將CSR傳送到一個CA返回真正的用書.網上有些文件描述生成證書檔案的過程比較繁瑣,就是因為 
他們自己建立了一個CA中心證書,然後再簽署server.csr. 

用openssl x509 -noout -text -in server.crt可以檢視證書的內容。證書實際上包含了Public Key. 

3. 配置httpd.conf. 
引用 
在conf目錄下的ssl.conf檔案是關於ssl的配置,是httpd.conf的一部分。 
找到一個443的虛擬主機配置項,如下: 
<VirtualHost _default_:443> 
SSLEngine On 
SSLCertificateFile conf/ssl.crt/server.crt 
SSLCertificateKeyFile conf/ssl.key/server.key 
#SSLCertificateChainFile conf/ssl.crt/ca.crt // 暫未啟用 
#...... 
DocumentRoot "C:/wamp/www"  //網站目錄 
ServerName www.my.com:443 
</VirtualHost> 
1). 看SSLCertificateFile,SSLCertificateKeyFile兩個配置項,所以應該在conf下建立兩個子目錄ssl.crt, ssl.key,然後把簽署過的證書檔案(.crt)和私鑰檔案(.key)放在相應的目錄 
2). 看DocumentRoot,ServerName配置項,ServerName修改為任意你想要得域名,注意:前面生成.csr時輸入的Common Name必須於這裡的ServerName項一致。 
這樣啟動apache後,訪問https://www.my.com將訪問C:/programs/Apache2/htdocs目錄下的內容。 
但是如果你想保留其他目錄的訪問仍然是http,那麼你應該把 
<VirtualHost _default_:443> 也改為 <VirtualHost www.my.com:443> 
此時,即便ServerName是任意的,系統仍然正常執行,僅僅Apache log提示"does NOT match server name" 


重新啟動APACHE
OK,恭喜你可以正常使用HTTPS來訪問你的站點了.


參考文獻:

http://my.oschina.net/xpbug/blog/197454

http://www.jb51.net/article/23973.htm


(以下沒有驗證,因為Apache自帶了 openssl)


Windows 下Perl安裝與配置

配置過程中需要生成一些mak檔案,這些生成程式碼用perl指令碼生成,所以要安裝一個ActivePerl.

下載ActivePerl 網址: http://www.activestate.com/activeperl/downloads

安裝好之後,要去系統環境變數中配置,在path中加入  %perl安裝目錄%/bin;

Windows 下openssl安裝與配置

1、進入解壓目錄。

>cd C:\openssl-0.9.8k

2、執行Configure。

>perl Configure VC-WIN32

如不成功會有明顯提示。

3、建立Makefile檔案。

>ms\do_ms

推薦使用這種方式,另外兩種方式 如果使用也必須保證本機有編譯器才能使用。

:ms\do_masm (預設vc 自帶的編譯器;也也以自己下載安裝)
:ms\do_nasm (需要自己下載)

4、配置VC環境變數。

>cd C:\Program Files\Microsoft Visual Studio\VC98\Bin

  >vcvars32.bat

(注:如果執行出現error:Cannot determine the location of the vs common tools folder. 直接用管理員身份執行  vcvars32.bat檔案即可)


5、編譯動態連結庫。

>cd C:\openssl-0.9.8k

>nmake -f ms\ntdll.mak

可能會缺少“ml.exe”,可下載masm並把其中的ml.exe拷貝至C:\Program Files\Microsoft Visual Studio\VC98\Bin下即可。

執行 nmake -f ms\ntdll.mak test.檢查上一部編譯是否成功。正常的話會執行編譯後的測試程式

至此OpenSSL在windows下編譯完成,編譯得到的dll和lib檔案位置:靜態庫libeay32.lib和ssleay32.lib位於out32資料夾下,動態庫libeay32.dll,libeay32.lib,ssleay32.dll,ssleay32.lib位於out32dll資料夾下。

6、為VC新增標頭檔案和靜態連結庫路徑。

ToolsàOptionsàDirectores,在Include files中增加C:\openssl-0.9.8k \inc32目錄;在Libray files中增加C:\openssl-0.9.8k\out32dll。

7、編寫OpenSSL程式,可參考C:\openssl-0.9.8k\demos

(1)包含相應標頭檔案

#include <openssl/***.h>

(2) 新增靜態連結庫

#pragma comment(lib, "libeay32.lib")

#pragma comment(lib, "ssleay32.lib")

或ProjectàSettingsàLinkàObject\library modules填寫libeay32.lib ssleay32.lib。

(3)將動態連結庫ssleay32.dll, libeay32.dll複製到C:\WINDOWS\system32或Debug目錄下,確保動態連結庫在正確的路徑。

可能遇到的問題:

1、NMAKE : fatal error U1077: 'ml' : return code '0x1'

解決辦法:在環境變數PATH中新增路徑C:\masm32\bin,並按照參考資料3修改ml.exe檔案。

2、NMAKE : fatal error U1077: 'cl' : return code '0x2'

解決辦法:去掉ipv6(命令列中執行perl Configure VC-WIN32 -DOPENSSL_USE_IPV6=0)

3、fatal error LNK1103: debugging information corrupt; recompile module

解決辦法:去掉ms資料夾下對應檔案nt.mak或ntdll.mak檔案中/debug選項