關於伺服器ssl配置以後,https無法訪問的問題
通常在專案裡,如果要用到ssl的話,一般都是自己先做個免費的證書在開發的過程中用的。等到上線了才去花錢買ssl證書。
這一回,自制了證書,在apache裡也配置好後,始終無法通過https訪問。調查步驟如下
step1. 確認apache配置。
httpd.conf裡,檢視mod_ssl.so和httpd-ssl.conf配置。如果沒有mod_ssl.so的話,通過apachectrl -l 檢視apache是否有內建變異了ssl模組。
httpd-ssl.conf裡,檢視Listen 443、server.crt、server.key的配置。
step2. apache重啟的時候,在error-log裡檢視有沒有錯誤日誌。
到這一步,可以確定配置應該沒什麼問題。
step3. 在伺服器裡,通過命令netstat -ano 確定443埠被監聽
step4. 本地通過命令 telnet www.xxxx.com 80 和 telnet www.xxxx.com 443 , 發覺80埠能訪問,443埠訪問不了。
step5. 在伺服器裡通過命令 wget http://www.xxx.com/ 和 wget https://www.xxxx.com/,同樣發覺80埠能連線的上,443埠連線不上。
Resolving staging.shop.connectingcard.com... xxx.xxx.xxx.xx Connecting to www.xxxx.com|xxx.xxx.xxx.xx|:80... connected. ...
Resolving www.xxxx.com... xxx.xxx.xxx.xx
Connecting to www.xxxx.com|xxx.xxx.xxx.xx|:443...
到這一步,可以確定應該是443埠訪問不了的原因。
step 6. 檢視伺服器的iptables,確定443沒有禁止訪問。
step 7. 在伺服器,使用wget命令,通過本地IP訪問
wget https://xxx.xxx.xxx.xx/,得到如下結果
--2012-02-29 11:21:05-- https://xxx.xxx.xxx.xx/ Connecting to xxx.xxx.xxx.xx:443... connected. ERROR: cannot verify xxx.xxx.xxx.xx's certificate, issued by `/C=JP/ST=oosaka/L=oosaka/O=oosaka/OU=oosaka/CN=www.xxxx.com': Self-signed certificate encountered. ERROR: certificate common name `www.xxxx.com' doesn't match requested host name `xxx.xxx.xxx.xx'. To connect to xxx.xxx.xxx.xx insecurely, use `--no-check-certificate'. Unable to establish SSL connection.
在使用命令 wget --no-check-certificate https://xxx.xxx.xxx.xx/ 訪問,得到頁面內容。
到這一步可以確定,伺服器本身的443埠是開放的,只是從外部無法通過443埠訪問伺服器。
那麼,問題可能是,伺服器的網路環境中,防火牆的配置裡沒有對外開放伺服器這臺機子的443埠。
解決問題的話需要需要伺服器網路管理人員配合。