首页 > 代码库 > 解决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 不信任的问题