nginx部署SSL證書后,使用域名訪問報錯-net::ERR_SSL_PROTOCOL_ERROR


一、問題由來

  最近在做一個小程序的后台,自己去微信官網上查看了相關的規定,小程序正式發布時,要求比較嚴格,必須是使用https+域名訪問,自己在

阿里雲購買了一個域名,可是沒有備案。SSL證書去阿里雲購買了一個免費的證書,想先把環境搭起來,讓測試環境最接近真實環境來進行開發。

一切准備就緒,SSL證書已經配置完成,自己使用http+域名+端口進行訪問也沒問題,然后開始測試。立馬出現問題,報錯信息如下:

https://www.xxxx.com:10003/applets/gift/list net::ERR_SSL_PROTOCOL_ERRO

二、問題分析

nginx中關於https服務的配置如下:

server {
listen 443 ssl;
server_name www.xxx.com;

ssl_certificate /home/software/nginx_1_16/cert/6131892_xxx.com.pem;
ssl_certificate_key /home/software/nginx_1_16/cert/6131892_www.xxx.com.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

#location /applets {
# proxy_pass http://xxx:23458;
#}

location / {
root html;
index index.html index.htm;
}
}

自己也去看了一下nginx的日志,發現根本沒有打印日志信息,這就說明一個問題,請求根本沒有到達nginx服務器。

三、解決方案

對於出現的這個情況,自己也嘗試着想辦法解決,一個一個的進行嘗試。

.a.假設:是不是由於兩個證書的名稱不對,導致沒有正常解析?辦法:修改證書的名稱,讓其不帶任何特殊符號,比如小數點,不使用數字等等。
ssl_certificate /home/source/cert/yilang.pem;
ssl_certificate_key /home/source/cert/yilang.key;

測試配置文件是否正確,重啟,測試結果沒有效果。
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

.b.修改web訪問端口號為80默認端口,SSL證書的端口為443已經打開,測試,重啟,沒有生效。

參考如下文章

https://blog.csdn.net/ws_zll/article/details/8486033

 

.3.修改域名配置,去除www前綴。因為看到阿里雲中域名解析顯示的是xxx.com,重啟nginx,沒有效果,仍然報錯。

 

.4.仔細分析下面這幾種情況都可以正常訪問,

可以訪問:
https://120.xxx.xxx.21/applets/gift/list

可以訪問:
http://120.xxx.xxx.21:10003/applets/gift/list

可以訪問
http://www.xxx.com:10003/applets/gift/list

不使用域名的時候就可以使用https進行訪問,這讓我很是疑惑,難道是域名有問題?可是使用http訪問的時候,添加

域名也沒問題。最后去找了一個高手咨詢了一下,果然如此,就是這個原因導致的。

 

總結:

阿里雲購買的域名,還沒有進行備案。使用http+域名訪問,沒問題;使用https+域名,會訪問不到,報如圖所示的錯誤。

所以在國內購買域名后一定要進行備案,雖然我知道這非常麻煩,會填寫各種詳細的個人信息,比如電話、身份證號碼,

還需要本人手持身份證拍照這種操作。極其麻煩,可是么得法,為了項目能夠正常訪問,還是進行去備案比較好。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM