Apache配置HTTPS協議搭載SSl配置全過程

1.安裝必要的軟件算法

Apache官方(www.apache.org)下載必要的ApacheHttpServer安裝包,能夠直接官方提供的綁定opensslapache.文件名是:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi(我用的是Apache2.2.15for windows的版本,你能夠點擊此處下載最新的版本進行安裝,最好選擇含有openssl版本的哦
不然單獨安裝windows下的openssl比較麻煩,要麼找到一個第三方的編譯結果,要麼本身編譯apache

< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />windows

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

 

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

 

安裝完畢後檢查檢查在Apache安裝路徑的bin下是否有如下文件:服務器

     openssl.exe測試

     ssleay32.dllui

     libeay32.dll加密

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

 2.spa

生成服務器證書

安裝好在bin目錄下有一個openssl.exe文件,用來生成證書和密鑰。 
1). 
生成服務器用的私鑰文件server.key
操作系統

(注:Windows操做系統環境下需先設置Openssl環境變量:在DOS命令下進入conf目錄,執行命令行:set OPENSSL_CONF=..\conf\openssl.cnf;請在執行以前確保openssl.cnf存在,不然會出現:WARNING: can't open config file: /usr/local/ssl/openssl.cnf 信息提示。還有在windows系統下.cnf 默認會被當成快捷方式,看不到擴展名。).net

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

 
  DOS命令下進入bin目錄,執行命令行 
  
命令:openssl genrsa 1024 > server.key
  
說明:這是用128rsa算法生成密鑰,獲得server.key文件 > 是輸出文件的標識符

這種生成方法生成的是沒有密鑰的私鑰文件,固然,Apache提供了加入密鑰(Password)的命令,就是加入參數-des3,所有的命令爲:

命令:openssl genrsa 1024 -des3 > server.key   使用 openssl genrsa -des3 > 1024 server.key生成私鑰文件是須要輸入密鑰的,運行的時候會讓你輸入並確認你的密鑰,可是在Windows環境下會致使如下錯誤:  錯誤:Apache啓動失敗,錯誤提示是:Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file .....)   緣由是window下的apache不支持加密的私鑰文件。可不使用des3加密。  注:生成的證書中RSA密鑰對的默認長度是1024,取值是2的整數次方。建議使用4096以上。
圖解:
1.切換到bin目錄

 
    
    2.設置環境變量 
    3.生成server.key
 
    
      
    2). 生成未簽署的server.csr    進入bin目錄,執行命令行   命令:openssl req -new -key server.key > server.csr 說明:這是用步驟1的密鑰生成證書請求文件server.csr, 這一步會有不少參數,須要一一輸入  按提示輸入一系列的參數, Country Name (2 letter code) [AU]:CN ISO國家代碼(只支持兩位字符)
State or Province Name (full name) [Some-State]:ZJ所在省份
Locality Name (eg, city) []:HZ所在城市
Organization Name (eg, company):SW_TECH公司名稱
Organizational Unit Name (eg, section) []:SW_TECH組織名稱
Common Name (eg, YOUR name) []:kedou.com申請證書的域名
Email Address []:admin@admin.com 管理員郵箱
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 交換密鑰
An optional company name []:  注:Common Name必須和httpd.conf中server name必須一致,不然apache不能啓動 (啓動apache時錯誤提示爲:RSA server certificate CommonName (CN) `Kedou' does NOT match server name!? )  3). 簽署服務器證書文件server.crt    進入bin目錄,執行命令行 命令:openssl req -x509 -days 365 -key server.key -in server.csr > server.crt 說明:這是用步驟1,2的的密鑰和證書請求生成證書server.crt,-days參數指明證書有效期,單位爲天,x509表示生成的爲X.509證書。     以上籤署證書僅僅作測試用,真正運行的時候,應該將CSR發送到一個CA返回真正的用書.網上有些文檔描述生成證書文件的過程比較繁瑣,就是由於   他們本身創建了一個CA中心證書,而後再簽署server.csr.   用openssl x509 -noout -text -in server.crt能夠查看證書的內容。證書實際上包含了Public Key.

圖解:

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

   生成CSR

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

 生成CRT

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

 
3. 配置httpd.conf.

conf目錄下的httpd_ssl.conf文件是關於ssl的配置,是httpd.conf的一部分,httpd.conf中找到給文件的引用,移除對應的註釋

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

 找到一個443的虛擬主機配置項,以下
<VirtualHost _default_:443> 
   SSLEngine On 
   SSLCertificateFile ../bin
/server.crt 
   SSLCertificateKeyFile ../bin
/server.key 
   #SSLCertificateChainFile ../bin
//ca.crt // 暫未啓用 
   #...... 
   DocumentRoot "D:/programs/Apache2.2/htdocs" 
   ServerName www.kedou.com:443 
</VirtualHost>

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰

 移除註釋行 
    LoadModule ssl_module modules/mod_ssl.so

Apache配置HTTPS協議搭載SSl配置全過程 - 一線天色 天宇星辰 - 一線天色 天宇星辰
這樣全部的均可以經過HTTPS訪問了,可是若是你想保留其餘目錄的訪問仍然是http,那麼你應該把 
     <VirtualHost _default_:443> 
也改成 <VirtualHost www.kedou.com:443> 
     
此時,即使ServerName是任意的,系統仍然正常運行,僅僅Apache log提示"does NOT match server name" 
注意到ssl.conf的配置都在標籤<IfDefine SSL>中,因此爲了使IfDefine 指令有效,運行apache 的時候要加上 -D SSL 參數。

apache -D SSL -k start

相關文章
相關標籤/搜索