当我们通过https访问我们的网站时,我收到了访问我们网站的用户的“证书不可信”错误报告。 我似乎没有任何问题,但是我的团队中有两个不同的人在我们办公室以外的其他无线networking上随机得到这个错误。 他们在办公室没有同样的问题。
我读了中级证书,但这似乎只是一个浏览器的事情,而不是一个networking相关的问题。
我有一个来自GoDaddy的SSL证书,它是在nginx +独angular兽上运行的Rails应用程序。
有没有人有任何其他的想法,为什么这可能发生? 我很难过
运行openssl s_client -connect $hostname:443
时,我得到了下面的(redacted)。
CONNECTED(00000003) depth=2 C = US, O = "The Go Daddy Group, Inc.", OU = Go Daddy Class 2 Certification Authority verify error:num=19:self signed certificate in certificate chain verify return:0
此问题与添加整个证书链有关 – 对于我来说,我需要将gd_bundle.crt
文件连接到我的分布式证书,然后将其重新上传到服务器。 我能够通过使用在线SSL检查器validation它是否工作。
我假定您已经知道SSL / TLS是如何工作的:SSL证书必须由受信任的授权机构(CA)签署,而受信任的机构已经将其公钥(根证书)实施到浏览器软件中。 信任当局的私钥变得相当有价值,损失将是最大的可信的事故。 因此,可信pipe理机构(CA)已经locking了他们的私钥,并且不用它们来签署客户的普通证书请求。 为此,他们使用子证书和子子证书(我们称之为中间证书)。
您的浏览器能够看到信任链(您的证书 – > CA的中间证书#2 – > CA的中间证书#1 – CA的根证书)并遵循它。
实际上,大多数证书提供了不止一个信任链。 如果浏览器没有执行正确的根证书,这是一个倒退。
为了让大多数浏览器遵循您的信任链,您必须将您的服务器证书和所有必需的中间证书连接成一个大的文本文件。 如果证书的信任链正在工作,请重新启动服务器并使用OpenSSL进行testing。
如果您对OpenSSL不熟悉,可以使用Qualys SSL Labs网站 。 在这里,您可以看到所有提供的信任链是否正在运行,以及有关您的SSL / TLS设置的其他非常有用的信息。
您可以在vhostconfiguration中的SSLCertificateChainFile指令中添加包含GoDaddy信任链的PEM文件。