首页 > 代码库 > 解决startssl证书在android 或者 手机版chrome 不信任的问题
解决startssl证书在android 或者 手机版chrome 不信任的问题
前段时间在startssl.com申请了一年的免费证书,配置到nginx上一切都正常,电脑上chrome IE 均正常,但是在手机上就提示不受信任,查看了android的受信任凭据列表,startcom 也在名单中。就纳闷了,,, iPhone ipad的safari也提示证书正常。
我还怀疑是我手机系统的问题(因为刷的是第三方精简系统),下午狠心吧系统也刷会索尼原厂ROM,特么迫不及待打开chrome 输入网页后还是提示证书不受信任。。。。 日 了,,,
上网一搜索,发现这情况还蛮普遍的,后来看到这样一段话。
有些浏览器不接受那些众所周知的证书认证机构签署的证书,而另外一些浏览器却接受它们。这是由 于证书签发使用了一些中间认证机构,这些中间机构被众所周知的证书认证机构授权代为签发证书, 但是它们自己却不被广泛认知,所以有些客户端不予识别。针对这种情况,证书认证机构提供一个证 书链的包裹,用来声明众所周知的认证机构和自己的关系,需要将这个证书链包裹与服务器证书合并 成一个文件。
也许 StartCom 的 Class 1 就是个中间签发机构,而Android并不认识它们。那么按照文章里提供的方法,只需要将 StartCom 的 CA证书链 合并到我的证书里面,就可以搞定了。
在 http://www.startssl.com/certs/ 上,我找到了 StartCom 的证书链包裹,文件名为 ca-bundle.crt。下载下来以后,我就用 Linux 的 cat 指令把它们和我的证书合并
cat ssl.crt ca-bundle.crt > ssl.new.crt
非常重要的一点是,执行cat命令时,自己的证书一定要放在 ca-bundle.crt 的前面,否则上传到服务器后会出现密钥验证错误。
做好新证书后先别急,由于是cat 的两个证书文件,所以两个证书文件拼接处是没有换行符的,
vim ssl.new.crt
编辑一下证书文件。
dGFydHNzbC5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQCKpjPPWa+UtYulvHBSFhF4^M s2SZOPKSmVnV005FhFwh3kbU03GUp/3fnf6hZ8I0QjEBMxuMeb+Ff3SVv936kCOn^M swTPQzbUFgRW0Gq9QBhXB06TLEKGEXwaISKbEHtAdXv1sywYoIBU2qF3jC1hGGyo^M zj2WXpCQZCptZK3LMPgqYTjLwjPNBA8KHq4ptLnKtQ/tIlvy/ln7kCbJRT6Rm6Cs^M OqoJaBhw4nSYqSlk5rtGGTDiecyTRyfLQFZp6aC2zD82j9m3vPdd5E9EdyEq3HAe^M 35AhGZWh0a6fgdshr04deJXY0jzCXEmh1LyG4JmlN8P7qtrZmLjjcYtBsITzuCZ9^M -----END CERTIFICATE----------BEGIN CERTIFICATE----- MIIFYzCCA0ukAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm aWNhdGlvbiBBdXRob3JpdRkgRzIwHhcNMTAwMTAxMDEwMDA5WhcNMzkxMjMxMjM1 OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G CSqGZIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ
看到了嘛,,
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
这里需要手动从中间插入一个换行符。
dGFydHNzbC5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQCKpjPPWa+UtYulvHBSFhF4^M s2SZOPKSmVnV005FhFwh3kbU03GUp/3fnf6hZ8I0QjEBMxuMeb+Ff3SVv936kCOn^M swTPQzbUFgRW0Gq9QBhXB06TLEKGEXwaISKbEHtAdXv1sywYoIBU2qF3jC1hGGyo^M zj2WXpCQZCptZK3LMPgqYTjLwjPNBA8KHq4ptLnKtQ/tIlvy/ln7kCbJRT6Rm6Cs^M OqoJaBhw4nSYqSlk5rtGGTDiecyTRyfLQFZp6aC2zD82j9m3vPdd5E9EdyEq3HAe^M 35AhGZWh0a6fgdshr04deJXY0jzCXEmh1LyG4JmlN8P7qtrZmLjjcYtBsITzuCZ9^M -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFYzCCA0ukAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm aWNhdGlvbiBBdXRob3JpdRkgRzIwHhcNMTAwMTAxMDEwMDA5WhcNMzkxMjMxMjM1 OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G CSqGZIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ
这样既可,合并后的证书只需要更改这一个地方即可上线了。
上线后
service nginx restart
重启服务后然后再在手机上测试 即正常了。
本文出自 “Professor哥” 博客,谢绝转载!
解决startssl证书在android 或者 手机版chrome 不信任的问题