windows下apache+https環境配置


windows下apache+https環境配置

轉 https://www.cnblogs.com/sandaizi/p/7519370.html

 

1、修改配置文件conf/httpd.conf,去掉以下語句注釋符號‘#’:

 

修改配置文件conf/extra/httpd-ssl.conf,把相應的選項改成如下:

 

 

2、配置php(php-5.6.30)

將php路徑加入系統環境變量:

右擊計算機 -> 屬性 -> 高級系統設置 -> 高級 -> 環境變量 -> 用戶變量 -> 新建環境變量。

變量名:PHP_HOME

變量值:D:\wamp\php-5.6.30

 

3、生成證書

3.1 cmd進入命令行模式,切換至apache的bin目錄:cd D:\wamp\httpd-2.4.25\bin;

 

3.2 設置OPENSSL_CONFIG配置,執行命令:set OPENSSL_CONF=../conf/openssl.cnf

 

3.3 首先要生成服務端的私鑰(key文件):openssl genrsa -des3 -out server.key 1024

 

3.4 生成server.csr,Certificate Signing Request(CSR),生成的csr文件交給CA簽名后形成服務端自己的證書。屏幕上將有提示,依照其提示一步一步輸入要求的個人信息即可。

      openssl req -new -key server.key -out server.csr -config ../conf/openssl.cnf

 

3.5 對客戶端也用同樣的命令生成key及csr文件

      openssl genrsa -des3 -out client.key 1024

      openssl req -new -key client.key -out client.csr -config ../conf/openssl.cnf

 

3.6 CSR文件必須有CA的簽名才可形成證書。可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢。

      openssl req -new -x509 -keyout ca.key -out ca.crt -config ../conf/openssl.cnf

 

3.7 在bin目錄下新建一個demoCA文件夾,進入它

  新建newcerts文件夾,不需要進入

  新建index.txt

  新建serial,打開后輸入01保存即可

 

3.8 用生成的CA的證書為剛剛生成的server.csr,client.csr文件簽名:

     openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

     openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

 

   注:如果指令出現如下錯誤,進入demoCA,然后打開index.txt.attr,把unique_subject=no即可。

   

 

3.9 生成一個ca.pfx:

    openssl pkcs12 -export -in ca.crt -inkey ca.key -out ca.pfx

 

3.10 導入證書

  打開IE瀏覽器 -> 工具 -> Internet選項 -> 內容 -> 證書,按照提示導入ca.pfx,這里要輸入剛才生成ca.pfx過程中輸入的密碼。

 

3.11 以上操作生成了

     client使用的文件有: ca.crt,  client.crt,  client.key

     server使用的文件有:ca.crt,  server.crt,  server.key

  把ca.crt, server.crt, server.key復制到conf目錄下去。

 

3.12 重啟apache,訪問https://127.0.0.1/index.php

 

3.15 如果出現以下錯誤

Starting the 'Apache2.4' service

The 'Apache2.4' service is running.

sl:emerg] [pid 8200:tid 500] AH02577: Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file D:/wamp/httpd-2.4.25/conf/server.key)

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] AH02311: Fatal error initialising mod_ssl, exiting. See D:/wamp/httpd-2.4.25/logs/error.log for more information

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] AH02564: Failed to configure encrypted (?) private key example:1443:0, check D:/wamp/httpd-2.4.25/conf/server.key

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=RSA)

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

[Tue Mar 14 16:37:57.740113 2017] [ssl:emerg] [pid 8200:tid 500] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=PKCS8_PRIV_KEY_INFO)

AH00016: Configuration Failed

這就是說windows不支持加密密鑰,還記得生成server.key輸入的密碼嗎?就是這個地方的錯誤,現在取消它。

     openssl rsa -in server.key -out server.key

把生成的server.key復制到conf目錄下覆蓋原來的。

 

5.參考資料

 http://blog.csdn.net/wlmnzf/article/details/50244409

 http://blog.csdn.net/decajes/article/details/41706739

 

windows下配置apache+https

 版權聲明:本文為博主(木魚大叔)原創文章,未經博主允許不得轉載。 https://blog.csdn.net/tdcqfyl/article/details/79023431
通過https反向代理映射到http地址,可實現以https的方式,訪問普通的http網站。
主要涉及到以下三個配置文件的修改:
httpd.conf
httpd-ssl.conf
httpd-vhosts.conf
具體實現步驟:
1. 修改conf/httpd.conf
取消ssl及proxy相關注釋
#LoadModule ssl_module modules/mod_ssl.so (去掉前面的#號)
#Include conf/extra/httpd-ssl.conf (去掉前面的#號)
#LoadModule proxy_module modules/mod_proxy.so (去掉前面的#號)
#LoadModule proxy_http_module modules/mod_proxy_http.so (去掉前面的#號)
2. 生成證書
cmd進入命令行,進入apache安裝目錄的bin目錄。
2.1 設置OPENSSL_CONFIG配置
執行命令:set OPENSSL_CONF=..\conf\openssl.cnf
2.2 生成服務端的key文件
執行命令:openssl genrsa -out server.key 1024
完成后,會在bin目錄下生成server.key文件
2.3 生成簽署申請
執行命令:openssl req -new -out server.csr -key server.key
完成后,會在bin目錄下生成server.csr文件,其中 Common Name <eg,YOUR name>[] 需要與配置文件中的ServerName一致,否則apache啟動時將會報錯。
2.4 生成CA的key文件
執行命令:openssl genrsa -out ca.key 1024
完成后,會在目錄bin下生成ca.key文件
2.5 生成CA自簽署證書
執行命令:openssl req -new -x509 -days 365 -key ca.key -out ca.crt
完成后,會在目錄bin下生成ca.crt文件,此處填寫的信息與2.3步中類似。
2.6 生成CA的服務器簽署證書
執行命令:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
此處如果沒有創建好相關目錄,將會報如下錯誤:
根據提示,手動創建相關目錄:
在bin下新建demoCA文件夾
bin/demoCA
在demoCA下新建index.txt
bin/demoCA/index.txt
在demoCA下新建serial.txt,其內容為01,重命名刪除.txt后綴
bin/demoCA/serial
在demoCA下新建newcert文件夾
bin/demoCA/newcerts
完成后,會在bin目錄下生成server.crt文件。demoCA目錄的最終結構如下:
3. 修改conf/extra/httpd-ssl.conf文件
3.1 修改https端口號
根據需要修改httpd-ssl.conf的默認端口號"443",這里將所有的443修改為"6443",同時修改ServerName。
具體如下:
Listen 6443
<VirtualHost _default_:6443>
ServerName localhost
提示:此處如果保持https默認的443端口,則訪問的時候,無需再加端口號。
3.2 修改相關證書路徑
在apache安裝目錄的conf目錄下,新建一個key目錄,名稱隨意,然后將bin目錄中的相關證書復制到key目錄中。key目錄最終的文件結構如下:
接着修改conf/extra/httpd-ssl.conf文件中的如下內容:
SSLCertificateFile "xxx/conf/key/server.crt"
SSLCertificateKeyFile "xxx/conf/key/server.key"
SSLCACertificateFile "xxx/conf/key/ca.crt"
#SSLVerifyClient require (去掉前面的#號,進行客戶端驗證時需要)
#SSLVerifyDepth 1 (去掉前面的#號,把10改為1,進行客戶端驗證時需要)
4. 重啟apache

在瀏覽器中,輸入https://localhost:6443,如果頁面出現提示 It works! ,則說明https配置成功了。如圖:

5. 項目部署方式
修改conf/extra/httpd-vhosts.conf,新增內容如下:
NameVirtualHost *:6443
注意:
httpd-vhosts.conf配置文件中原有的NameVirtualHost *:80不要修改,下面新增一行即可。
NameVirtualHost *:6443
5.1 以https的方式部署項目
在conf/extra/httpd-vhosts.conf配置文件中,新增如下內容:
  1.  
    <VirtualHost *:6443>
  2.  
    ServerName localhost
  3.  
    DocumentRoot D:/javapro/bms
  4.  
    SSLEngine on
  5.  
    SSLProxyEngine on
  6.  
    SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"
  7.  
    SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"
  8.  
    <Directory "/">
  9.  
    Options None
  10.  
    AllowOverride All
  11.  
    Order allow,deny
  12.  
    Allow From All
  13.  
    </Directory>
  14.  
    </VirtualHost>
上面的配置含義是,在瀏覽器中輸入 https://localhost:6443,即可訪問DocumentRoot對應目錄下的項目。
5.2 以反向代理的方式部署項目
5.2.1 以二級目錄的方式部署反向代理
此時,被代理的虛擬機,必須要設置別名,否則,首頁之外的其它url,將無法實現代理。
在conf/extra/httpd-vhosts.conf配置文件中,新增如下內容:
#部署被代理的虛擬機local.bms
  1.  
    <VirtualHost *:80>
  2.  
    ServerName local.bms
  3.  
    DocumentRoot "D:/javapro/bms"
  4.  
    Alias /bms "D:/javapro/bms"
  5.  
    <Directory "/">
  6.  
    Options None
  7.  
    AllowOverride All
  8.  
    Order allow,deny
  9.  
    Allow From All
  10.  
    </Directory>
  11.  
    </VirtualHost>
此處,增加了Alias別名配置,以便通過http://local.bms/bms可以訪問到http://local.bms,為后面的反向代理做准備。
#部署反向代理虛擬機
  1.  
    <VirtualHost *:6443>
  2.  
    ServerName localhost
  3.  
    SSLEngine on
  4.  
    SSLProxyEngine on
  5.  
    SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"
  6.  
    SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"
  7.  
    ProxyRequests Off
  8.  
    <Proxy *>
  9.  
    Order allow,deny
  10.  
    Allow from all
  11.  
    </Proxy>
  12.  
    ProxyPass /bms http://local.bms/bms
  13.  
    ProxyPassReverse /bms http://local.bms/bms
  14.  
    </VirtualHost>
上面的配置含義是,將 https://localhost:6443/bms的請求,映射到http://local.bms/bms,其中,url結尾處的bms,就相當於一個虛擬的二級目錄。
注意:此處被代理的url結尾處,不要加斜杠"/"。
5.2.2 以一級目錄的方式部署反向代理
此時,被代理的虛擬機,無需設置別名。
在conf/extra/httpd-vhosts.conf配置文件中,新增如下內容:
#部署被代理的虛擬機local.bms
  1.  
    <VirtualHost *:80>
  2.  
    ServerName local.bms
  3.  
    DocumentRoot "D:/javapro/bms"
  4.  
    <Directory "/">
  5.  
    Options None
  6.  
    AllowOverride All
  7.  
    Order allow,deny
  8.  
    Allow From All
  9.  
    </Directory>
  10.  
    </VirtualHost>
#部署反向代理虛擬機
  1.  
    <VirtualHost *:6443>
  2.  
    ServerName localhost
  3.  
    SSLEngine on
  4.  
    SSLProxyEngine on
  5.  
    SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"
  6.  
    SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"
  7.  
    ProxyRequests Off
  8.  
    <Proxy *>
  9.  
    Order allow,deny
  10.  
    Allow from all
  11.  
    </Proxy>
  12.  
    ProxyPass / http://local.bms/
  13.  
    ProxyPassReverse / http://local.bms/
  14.  
    </VirtualHost>
上面的配置含義是,將https://localhost:6443的請求,映射到http://local.bms
注意:此處被代理的url結尾處,必須要加斜杠"/"。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM