1. 安裝OpenSSL:javascript
Windows下安裝的wamp64中的Apache內置的OpenSSL是32位的,所以若是服務器主機以前沒有額外安裝過OpenSSL的話,須要先安裝64位OpenSSL,安裝地址以下:php
http://slproweb.com/products/Win32OpenSSL.htmlhtml
選擇Win64 OpenSSL最新版本號的Light便可,安裝時有一步須要勾選"Copy DLLs to Windows System directory"java
參考:https://stackoverflow.com/questions/40017498/cannot-load-modules-mod-ssl-so-into-servermysql
注:本節能夠解決錯誤日誌中出現的問題:Cannot load modules/mod_ssl.so into server: The operating system cannot run %1.web
2. 證書的申請或生成:sql
事實上SSL證書是能夠本身給本身頒發的,若是隻是測試HTTPS下的一些問題,徹底能夠本身自建Root CA。具體可參考:apache
http://www.barretlee.com/blog/2016/04/24/detail-about-ca-and-certs/服務器
可是阿里雲有免費證書,所以上面的東西我也沒試過。測試
以阿里云爲例,經過域名能夠免費申請到證書,包含四個文件:
並有以下安裝指導:
3. 安裝證書與常見問題:
配置conf/httpd.conf:
找到以下行並去掉#
#LoadModule ssl_module modules/mod_ssl.so
# Include conf/extra/httpd-ssl.conf
另外,要確認如下兩行至少有一行是去掉#的:
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
配置conf/extra/httpd-ssl.conf
須要修改的關鍵行:
Listen 443 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4 SSLHonorCipherOrder on SSLProtocol TLSv1 +TLSv1.1 +TLSv1.2 SSLProxyProtocol all -SSLv3 SSLPassPhraseDialog builtin SSLSessionCache dbm:d:/wamp64/bin/apache/apache2.4.23/logs/ssl_scache" #SSLSessionCache "shmcb:d:/wamp64/bin/apache/apache2.4.23/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 <VirtualHost _default_:443> DocumentRoot "d:/wamp64/www" ServerName tryservice.*******.com:443 #ServerAdmin admin@tryservice.*******.com ErrorLog "d:/wamp64/logs/apache/apache_error.log" TransferLog "d:/wamp64/logs/apache/access.log" SSLEngine on SSLCertificateFile "d:/wamp64/cert/tryservice/public.pem" SSLCertificateKeyFile "d:/wamp64/cert/tryservice/214************.key" SSLCertificateChainFile "d:/wamp64/cert/tryservice/chain.pem" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> ## <Directory "d:/wamp64/bin/apache/apache2.4.23/cgi-bin"> SSLOptions +StdEnvVars </Directory> ## BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "d:/wamp64/logs/apache/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
注意:
SSLSessionCache 兩者取一便可,與httpd.conf中一致,若是一個致使重啓Apache失敗,能夠試試另外一個;
涉及到日誌位置、證書位置,儘可能使用物理路徑(要加引號),使用相對位置很容易錯誤;
DocumentRoot, ServerName, ServerAdmin,通常來講應該與httpd.conf一致,可是要靈活處理,與證書的域名以及該域名對應網站的根目錄對應起來。
4. 確認80端口與443端口沒有被佔用:
命令行輸入命令:
netstat -aon|findstr "80"
獲得輸出:TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448
說明80端口被進程號爲2448的進程佔用。同理可找到443是否被進程佔用。
輸入命令:
tasklist|findstr "2448"
能夠查看該進程的具體信息,若是太多找不到,能夠去任務管理器的進程選項卡找到該進程。若被通常進程佔用可直接結束進程接觸佔用。如果SYSTEM佔用,請參考如下解決方式。
80端口若是被SYSTEM佔用,通常來講緣由是開啓了IIS服務,把默認網站刪除或者更改端口便可解除佔用;443端口被SYSTEM佔用,打開任務管理器,在服務選項卡中找到RemoteAccess,中止服務便可解除佔用(注意等正常啓動Apache後再手動啓動服務)。
注:本節能夠解決錯誤日誌中出現問題:
(OS 10013)以一種訪問權限不容許的方式作了一個訪問套接字的嘗試。 : AH00072: make_sock: could not bind to address 127.0.0.1:80
(OS 10013)以一種訪問權限不容許的方式作了一個訪問套接字的嘗試。 : AH00072: make_sock: could not bind to address 127.0.0.1:443
5. 重啓Apache:
此時重啓Apache,通常來講能夠正常啓動了。若是仍然沒法啓動,在任務管理器中的服務選項卡中找到如下兩個服務:wampmysqld64, wampapache64
如果wampmysqld64沒有運行,通常來講是由於服務器的MySQL服務在運行佔用,在服務選項卡中找到MySQL服務中止,再重啓Apache便可;
如果wampapache64沒有運行,說明配置文件仍然有問題,首先中止Apache服務,在目錄 」 D:\wamp64\bin\apache\apache2.4.23\bin」 中打開命令行,運行httpd命令,便可查看系統錯誤日誌,針對問題解決。
6. 虛擬服務器的SSL配置:
配置conf/extra/httpd-vhosts.conf
<VirtualHost *:80> ServerName tryservice.*******.com <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:4050/ ProxyPassReverse / http://127.0.0.1:4050/ </VirtualHost> <VirtualHost *:443> ServerName tryservice.*******.com SSLEngine on SSLProxyEngine on SSLCertificateFile "d:/wamp64/cert/tryservice/public.pem" SSLCertificateKeyFile "d:/wamp64/cert/tryservice/214************.key" ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:4050/ ProxyPassReverse / http://127.0.0.1:4050/ </VirtualHost>
虛擬服務器的SSL配置,要根據上面的*80加上後面的*443,一樣注意域名與其證書一一對應。
7. 在同一服務器上爲多個域名部署不一樣的證書:
配置conf/extra/httpd-ssl.conf
Listen 443 ##不須要更改 <VirtualHost _default_:443> ##不須要更改 </VirtualHost> #須要增長的域名配置: <VirtualHost *:443> # General setup for the virtual host DocumentRoot "d:/wamp64/www2" ServerName trydoctor.*******.com:443 #ServerAdmin admin@tryservice.*******.com ErrorLog "d:/wamp64/logs/apache/apache_error.log" TransferLog "d:/wamp64/logs/apache/access.log" SSLEngine on SSLCertificateFile "d:/wamp64/cert/trydoctor/public.pem" SSLCertificateKeyFile "d:/wamp64/cert/trydoctor/214************.key" SSLCertificateChainFile "d:/wamp64/cert/trydoctor/chain.pem" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "d:/wamp64/bin/apache/apache2.4.23/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "d:/wamp64/logs/apache/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>