HyperApp-Guide icon indicating copy to clipboard operation
HyperApp-Guide copied to clipboard

通过 Nginx 为网站生成 SSL 证书后无法正常访问

Open minimAluminiumalism opened this issue 6 years ago • 28 comments

近期一直困惑我的问题:利用 HyperApp 中的 Nginx Proxy 和 Ngnix SSL Support 为域名添加 SSL 证书后,网站无法正常访问(域名可以 ping 通,也可以正常解析出目标 IP)。

1.一开始以为是 GFW 阻断了连接,但是尝试了 4 个域名和两个不同 IP(墙内可以正常访问)之后,发现一直是同样的情况,一旦 SSL 证书添加后就无法访问。网络为西安联通宽带; 2.但是同时又有一个非常奇怪的现象,当开启全局代理(如 ShadowsocksR 的 Global Mode)或者更换到电信宽带或者移动 4G 网络下,网站又可以进入,从这一点表现来看很像是典型的 GFW 干扰,但是结合第一点提到的不同域名不同 IP 都不正常,就想不明白; 3.后来我偶然用 Wireshark 对目标域名连接过程抓包,发现本地到目标域名之间通信一直停留在 Client Hello 状态,也就是说 TLS 握手的第一阶段都没有完成,我对这方面了解并不多,但据我所知,如果是 GFW 的阻断应该作用在第二次握手时,所以我猜想问题还是出在生成 SSL 证书本身。 4.浏览器(Chrome、FireFox)的报错一般都是 SSL 握手时间(正在建立安全连接)过长无法建立连接。

minimAluminiumalism avatar Mar 11 '18 19:03 minimAluminiumalism

也有可能是运营商搞鬼啊… 移动宽带的幺蛾子好像很多…可以用 curl -v https:// 看下请求过程,方便的话可以贴出来

waylybaye avatar Mar 12 '18 02:03 waylybaye

image 跟 Wireshark 抓包的结果一致,一直停留在 Client Hello 阶段直到超时关闭连接。

minimAluminiumalism avatar Mar 12 '18 05:03 minimAluminiumalism

我使用代理时遇到过这种情况,有些代理对 TLS 支持不是太好,你可以用国外主机 curl 一下 https 试试,如果国外网络没问题,那么应该是防火墙,运营商或者挂的代理有问题。

waylybaye avatar Mar 12 '18 06:03 waylybaye

跟你同样的问题,请问老哥解决了吗?

zakiso avatar Jun 04 '18 08:06 zakiso

同样的问题,解决了吗?

chris-ss avatar Aug 08 '18 07:08 chris-ss

其实我两个月前就大概知道原因了,问题其实不在 Let's Encrypt 的免费域名证书本身,还是运营商的责任。我偶然一次在 V2EX 上看到了一个讨论贴,说部分地区运营商会干扰使用 Let's Encrypt 证书授权的域名连接,我突然想起来了自己其实就是同样的问题。暑假期间我回到安徽使用移动宽带,之前的问题就不存在了。所以要解决这个问题,要么换证书,要么换网络环境。

minimAluminiumalism avatar Aug 11 '18 07:08 minimAluminiumalism

确实可能是这个原因… 但我发现好像只有国外VPS会卡在 Client Hello,国内的用LE证书没有问题。最近好像情况好了一些。

waylybaye avatar Aug 11 '18 07:08 waylybaye

我想了解一下其它情况,出问题的都是阿里云国际版嘛?我目前得到明确反馈的都是用的阿里云…… @gitcue @chris-ss @zakiso

waylybaye avatar Aug 17 '18 11:08 waylybaye

部分地区运营商会干扰使用 Let's Encrypt 证书授权的域名连接

终于找到原因。。。

fengmk2 avatar Aug 17 '18 14:08 fengmk2

@waylybaye 我是阿里云新加坡机房。

fengmk2 avatar Aug 17 '18 14:08 fengmk2

@waylybaye 我是阿里云美国,运营商南昌电信 比较神奇的是,我公司和家里同样是南昌电信,公司有这个问题,家里的却没有

chris-ss avatar Aug 17 '18 15:08 chris-ss

@chris-ss 商宽和家宽可能路由不一样。

目前来看好像真的只有阿里云有这个问题…

waylybaye avatar Aug 17 '18 15:08 waylybaye

@chris-ss 我的更加奇怪,在公司网络,我电脑没问题,旁边同事电脑打开有问题。然后过几天,调转过来。。

fengmk2 avatar Aug 17 '18 15:08 fengmk2

@waylybaye 并非如此,我不使用海外阿里云。我分别在 DigitalOcean 纽约机房和 Vultr 迈阿密机房的两台 VPS 上测试过,两台 VPS 上绑定域名先后使用了由 Freenom 提供的免费域名和 Godaddy 的付费 .com 域名,但是同样的问题依然存在,只有当切换网络环境时问题会自动消失。但是还有一个很奇怪的现象,就是当你处在相同的网络环境下,白天连不上,夜里又能打开了,第二天白天又连不上...如此循环。就好像干扰是分时间段进行的。

minimAluminiumalism avatar Aug 17 '18 15:08 minimAluminiumalism

你们有没有用路由用的梅林的? 有的话试试把koolproxy 卸载了! 我卸载了立马能打开了!!! Koolproxy 去广告导致的...

chris-ss avatar Aug 20 '18 01:08 chris-ss

@gitcue 这个确实有点奇怪,我最近遇到了自己的网站打不开,但是第二天又好了。所以我现在也很怀疑到底是运营商搞的问题还是墙的问题…

@chris-ss 我根本没安装这个插件…

waylybaye avatar Aug 20 '18 02:08 waylybaye

我用的阿里云香港,没想到也是这样。。。有没有办法解决?确定不是赛门铁克免费证书的问题?

bengle avatar Sep 06 '18 08:09 bengle

问题类似,主机用的vultr,用阿里云申请的.cn域名,一旦安装Let's Encrypt的免费证书就连不上

Guofeng-Lin avatar Sep 06 '18 13:09 Guofeng-Lin

这个很迷,阿里云的海外机房是重灾区,其它主机商好像遇到的比较少,也可能是因为建站的用阿里云的比较多。

waylybaye avatar Sep 06 '18 14:09 waylybaye

@waylybaye 我认为根本上还是 GFW 的问题,GFW 大部分挂靠在运营商的基建下,针对特定 SSL(TLS)证书的封锁本身就是 GFW 的方式之一。

minimAluminiumalism avatar Sep 07 '18 15:09 minimAluminiumalism

freenom域名、Let's Encrypt证书、vultr主机、本地移动4G也不时存在tls干扰

jiuqianyuan avatar Oct 09 '18 18:10 jiuqianyuan

题主用的是什么域名,tls握手的server hello包也没收到,如果是针对证书的,那应该是第三个包Certificate收不到吧

jiuqianyuan avatar Oct 23 '18 06:10 jiuqianyuan

.tk .com .ml 域名都尝试过,应该不是域名问题。

minimAluminiumalism avatar Oct 23 '18 16:10 minimAluminiumalism

大神们解决了么,我用的 vultr 洛杉矶机房,也是 lets encrypt免费证书,偶尔能访问https,偶尔不能访问。本地抓包,也是在 client hello之后就卡住了;在服务器上抓包,发现服务器在 收到 client hello 之后,立即发了一个 FIN/ACK 的包,试图关闭server端链接。但是,我本地居然要过很久才会收到这个 FIN/ACK 包,导致在这期间,本地一直在重新发包。实在不知道是啥情况了

sophister avatar Oct 24 '18 06:10 sophister

.tk .com .ml 域名都尝试过,应该不是域名问题。

那要么就是机房的问题了,我用trustasia的证书一样被阻断,我是手机端,估计移动阻断vultr机房

jiuqianyuan avatar Oct 28 '18 11:10 jiuqianyuan

应该是 GFW 的干扰导致的,在 clientHello中,包含 SNI 字段的话,我这的现象是,GWF随机性的丢包,导致客户端报超时。用 openssl s_client connect去连接相同的https域名,默认不会包含 SNI,就不会有问题

sophister avatar Oct 29 '18 02:10 sophister

我和你一模一样的问题,总是早上好,晚上又不行了。。。然后切到全局代理,就可以正常访问了,一度以为是 nginx 的问题,配了一天的 nginx conf ,刚刚才找到你这个帖子。。表示很崩溃。。按照博主你的分析,是否只能换收费的证书,或者直接把站切到国内?

zhangzhanqicixi avatar Dec 04 '18 07:12 zhangzhanqicixi

GFW,应该是备案的问题,国内主机没有备案就会这样

qduyang avatar May 04 '19 03:05 qduyang