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. 項目部署方式
5.1 以https的方式部署項目
<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>
5.2 以反向代理的方式部署項目
5.2.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>
<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>
5.2.2 以一級目錄的方式部署反向代理
<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://blog.csdn.net/tdcqfyl/article/details/79023431
參考:https://mp.weixin.qq.com/s/Tw4UzX73Q7MSw3GJXnpN8A
https://www.cnblogs.com/gyjerry/p/7090439.html
https://www.barretlee.com/blog/2016/04/24/detail-about-ca-and-certs/
阿里雲證書安裝參考: https://help.aliyun.com/document_detail/98727.html?spm=5176.11065259.1996646101.searchclickresult.13d77283r9smDt