Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
minimAluminiumalism opened this issue Mar 11, 2018 · 28 comments
Open

Comments

@minimAluminiumalism
Copy link

minimAluminiumalism commented Mar 11, 2018

近期一直困惑我的问题:利用 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 握手时间(正在建立安全连接)过长无法建立连接。

@waylybaye
Copy link
Owner

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

@minimAluminiumalism
Copy link
Author

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

@waylybaye
Copy link
Owner

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

@zakiso
Copy link

zakiso commented Jun 4, 2018

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

@chris-ss
Copy link

chris-ss commented Aug 8, 2018

同样的问题,解决了吗?

@minimAluminiumalism
Copy link
Author

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

@waylybaye
Copy link
Owner

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

@waylybaye
Copy link
Owner

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

@fengmk2
Copy link

fengmk2 commented Aug 17, 2018

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

终于找到原因。。。

@fengmk2
Copy link

fengmk2 commented Aug 17, 2018

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

@chris-ss
Copy link

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

@waylybaye
Copy link
Owner

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

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

@fengmk2
Copy link

fengmk2 commented Aug 17, 2018

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

@minimAluminiumalism
Copy link
Author

minimAluminiumalism commented Aug 17, 2018

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

@chris-ss
Copy link

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

@waylybaye
Copy link
Owner

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

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

@bengle
Copy link

bengle commented Sep 6, 2018

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

@Guofeng-Lin
Copy link

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

@waylybaye
Copy link
Owner

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

@minimAluminiumalism
Copy link
Author

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

@jiuqianyuan
Copy link

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

@jiuqianyuan
Copy link

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

@minimAluminiumalism
Copy link
Author

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

@sophister
Copy link

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

@jiuqianyuan
Copy link

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

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

@sophister
Copy link

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

@zhangzhanqicixi
Copy link

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

@qduyang
Copy link

qduyang commented May 4, 2019

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests