1. 程式人生 > >XAMPP Apache關於https配置問題

XAMPP Apache關於https配置問題

通過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配置檔案中,新增如下內容:

<VirtualHost *:6443>

ServerName localhost

DocumentRoot D:/javapro/bms

SSLEngine on

SSLProxyEngine on

SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"

SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"

<Directory "/">

Options None

AllowOverride All

Order allow,deny

Allow From All

</Directory>

</VirtualHost>

上面的配置含義是,在瀏覽器中輸入https://localhost:6443,即可訪問DocumentRoot對應目錄下的專案。

5.2 以反向代理的方式部署專案

5.2.1 以二級目錄的方式部署反向代理

此時,被代理的虛擬機器,必須要設定別名,否則,首頁之外的其它url,將無法實現代理。

在conf/extra/httpd-vhosts.conf配置檔案中,新增如下內容:

#部署被代理的虛擬機器local.bms

  1. <VirtualHost *:80>
    
    ServerName local.bms
    
    DocumentRoot "D:/javapro/bms"
    
    Alias /bms "D:/javapro/bms"
    
    <Directory "/">
    
    Options None
    
    AllowOverride All
    
    Order allow,deny
    
    Allow From All
    
    </Directory>
    
    </VirtualHost>

此處,增加了Alias別名配置,以便通過http://local.bms/bms可以訪問到http://local.bms,為後面的反向代理做準備。

#部署反向代理虛擬機器

<VirtualHost *:6443>

ServerName localhost

SSLEngine on

SSLProxyEngine on

SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"

SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"

ProxyRequests Off

<Proxy *>

Order allow,deny

Allow from all

</Proxy>

ProxyPass /bms http://local.bms/bms

ProxyPassReverse /bms http://local.bms/bms

</VirtualHost>

上面的配置含義是,將https://localhost:6443/bms的請求,對映到http://local.bms/bms,其中,url結尾處的bms,就相當於一個虛擬的二級目錄。

注意:此處被代理的url結尾處,不要加斜槓"/"。

5.2.2 以一級目錄的方式部署反向代理

此時,被代理的虛擬機器,無需設定別名。

在conf/extra/httpd-vhosts.conf配置檔案中,新增如下內容:

#部署被代理的虛擬機器local.bms

<VirtualHost *:80>

ServerName local.bms

DocumentRoot "D:/javapro/bms"

<Directory "/">

Options None

AllowOverride All

Order allow,deny

Allow From All

</Directory>

</VirtualHost>

#部署反向代理虛擬機器

<VirtualHost *:6443>

ServerName localhost

SSLEngine on

SSLProxyEngine on

SSLCertificateFile "D:/myplatform/Apache2.2/conf/key/server.crt"

SSLCertificateKeyFile "D:/myplatform/Apache2.2/conf/key/server.key"

ProxyRequests Off

<Proxy *>

Order allow,deny

Allow from all

</Proxy>

ProxyPass / http://local.bms/

ProxyPassReverse / http://local.bms/

</VirtualHost>

上面的配置含義是,將https://localhost:6443的請求,對映到http://local.bms

注意:此處被代理的url結尾處,必須要加斜槓"/"。