Ale*_*xis 81 android ssl-certificate
从今天早上起,我的证书在Android上不再受信任,然后我的应用程序再也无法连接:
Catch exception while startHandshake: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
return an invalid session with invalid cipher suite of SSL_NULL_WITH_NULL_NULL
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:137)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:591)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:807)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:781)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:770)
Run Code Online (Sandbox Code Playgroud)
如果我尝试在谷歌浏览器(在PC上)没有问题,证书是可信的,但如果我在Android上使用Chrome浏览器,它会告诉我证书不受信任.我能做什么?
Luc*_*eos 92
您可能缺少证书文件中的中间证书.如果您已访问过具有相同证书销售商的其他网站,则会在您的浏览器中记住中间证书.对于您网站的每位访问者来说,这可能不会 - 甚至更好 - 不会出现这种情况.要解决SSL连接中缺少的中间证书,您需要将中间证书添加到您自己的证书文件中.
GoDaddy有关于中间证书的一些信息(但最好的来源始终是您的证书提供者):http: //support.godaddy.com/help/article/868/what-is-an-intermediate-certificate
我曾经有过这个问题的中间证书(也有Commodo),并且必须将我自己的证书文件与中间CA一起工作.完成后不再发生错误.
Godaddy每个网络服务器的安装说明:http://support.godaddy.com/help/article/5346/installing-an-ssl-server-instructions? locale= en
以下是Commodo自己最常见的安装指南列表:https://support.comodo.com/index.php?/ Default/Knoveledgebase/Article/View/1145/0/how-do-i-make- 我-自己束文件,从-CRT-文件
根据您使用的Web服务器,您需要指定所有证书(域证书,中间和根)或按顺序将它们合并为一个(例如,对于Nginx):
在SSH终端中执行此操作的简单方法是键入:
cat domainfile intermediatefile rootfile > targetfile
Run Code Online (Sandbox Code Playgroud)
如果您遇到其他问题或不确定证书是否正确,请尝试使用在线工具验证您的SSL证书.例如:networking4all.com/en/ssl+certificates/quickscan
请注意,android 2.2(可能更旧)不支持SNI,它允许不同主机名的多个SSL证书在一个IP地址上无问题地工作.感谢@technyquist提供该信息.有关此问题的更多信息,请查看有关SNI的此问题.
小智 19
你必须创建一个crt包然后它会没事的.您将收到三个crt文件.全部使用它们!如果您只使用domain.crt,则会在Android上发出警告,但不会在PC上发出警告.
我在nginx上.我打开domain_name.crt然后打开positivesslca2.crt,选择all并复制到domain_name.crt的末尾.然后打开AddTrustExternalCARoot.crt,再次复制到domain_name.crt的末尾.然后安装domain_name.crt
效果很好.
在这里添加它可能对某人有帮助.我遇到Android问题,显示弹出窗口和无效的证书错误.
我们有Comodo扩展验证证书,我们收到了包含4个文件的zip文件:
我将它们连接在一起就像这样:
cat www_mydomain_com.crt COMODORSAExtendedValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >www.mydomain.com.ev-ssl-bundle.crt
然后我使用该捆绑文件作为我ssl_certificate_key的nginx.就是这样,现在有效.
灵感来自这个要点:https://gist.github.com/ipedrazas/6d6c31144636d586dcc3
| 归档时间: |
|
| 查看次数: |
108017 次 |
| 最近记录: |