nginx部署SSL证书后,使用域名访问报错-net::ERR_SSL_PROTOCOL_ERROR
<p><span style="font-size: 18px"><strong>一、问题由来</strong></span></p><p> 最近在做一个小程序的后台,自己去微信官网上查看了相关的规定,小程序正式发布时,要求比较严格,必须是使用https+域名访问,自己在</p>
<p>阿里云购买了一个域名,可是没有备案。SSL证书去阿里云购买了一个免费的证书,想先把环境搭起来,让测试环境最接近真实环境来进行开发。</p>
<p>一切准备就绪,SSL证书已经配置完成,自己使用http+域名+端口进行访问也没问题,然后开始测试。立马出现问题,报错信息如下:</p>
<p>https://www.xxxx.com:10003/applets/gift/list net::ERR_SSL_PROTOCOL_ERRO</p>
<p><span style="font-size: 18px"><strong>二、问题分析</strong></span></p>
<p>nginx中关于https服务的配置如下:</p>
<p>server {<br> listen 443 ssl;<br> server_namewww.xxx.com;</p>
<p> ssl_certificate/home/software/nginx_1_16/cert/6131892_xxx.com.pem;<br> ssl_certificate_key /home/software/nginx_1_16/cert/6131892_www.xxx.com.key;</p>
<p> ssl_session_cache shared:SSL:1m;<br> ssl_session_timeout5m;</p>
<p> ssl_ciphersHIGH:!aNULL:!MD5;<br> ssl_prefer_server_cipherson;<br> <br> #location /applets {<br> # proxy_pass http://xxx:23458;<br> #}</p>
<p> location / {<br> root html;<br> indexindex.html index.htm;<br> }<br> }</p>
<p>自己也去看了一下nginx的日志,发现根本没有打印日志信息,这就说明一个问题,请求根本没有到达nginx服务器。</p>
<p><strong><span style="font-size: 18px">三、解决方案</span></strong></p>
<p>对于出现的这个情况,自己也尝试着想办法解决,一个一个的进行尝试。</p>
<p>.a.假设:是不是由于两个证书的名称不对,导致没有正常解析?办法:修改证书的名称,让其不带任何特殊符号,比如小数点,不使用数字等等。<br>ssl_certificate /home/source/cert/yilang.pem;<br>ssl_certificate_key/home/source/cert/yilang.key;</p>
<p>测试配置文件是否正确,重启,测试结果没有效果。<br>/usr/local/nginx/sbin/nginx -t<br>/usr/local/nginx/sbin/nginx -s reload</p>
<p>.b.修改web访问端口号为80默认端口,SSL证书的端口为443已经打开,测试,重启,没有生效。</p>
<p>参考如下文章</p>
<p>https://blog.csdn.net/ws_zll/article/details/8486033</p>
<p> </p>
<p>.3.修改域名配置,去除www前缀。因为看到阿里云中域名解析显示的是xxx.com,重启nginx,没有效果,仍然报错。</p>
<p> </p>
<p>.4.仔细分析下面这几种情况都可以正常访问,</p>
<p>可以访问:<br>https://120.xxx.xxx.21/applets/gift/list</p>
<p>可以访问:<br>http://120.xxx.xxx.21:10003/applets/gift/list</p>
<p>可以访问<br>http://www.xxx.com:10003/applets/gift/list</p>
<p>不使用域名的时候就可以使用https进行访问,这让我很是疑惑,难道是域名有问题?可是使用http访问的时候,添加</p>
<p>域名也没问题。最后去找了一个高手咨询了一下,果然如此,就是这个原因导致的。</p>
<p> </p>
<p><strong>总结</strong>:</p>
<p>阿里云购买的域名,还没有进行备案。使用http+域名访问,没问题;使用https+域名,会访问不到,报如图所示的错误。</p>
<p>所以在国内购买域名后一定要进行备案,虽然我知道这非常麻烦,会填写各种详细的个人信息,比如电话、身份证号码,</p>
<p>还需要本人手持身份证拍照这种操作。极其麻烦,可是么得法,为了项目能够正常访问,还是进行去备案比较好。</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/yilangcode/p/15170404.html
頁:
[1]