windows下配置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
<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結尾處,必須要加斜槓"/"。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章