【问题标题】:Android - SSLPeerUnverifiedException when connecting to a web service using an SSL certificate from Thawte CAAndroid - 使用 Thawte CA 的 SSL 证书连接到 Web 服务时出现 SSLPeerUnverifiedException
【发布时间】:2012-03-06 18:32:10
【问题描述】:

我从我的 Android 应用程序连接到 Web 服务时收到 SSLPeerUnverifiedException: "No Peer Certificate",该应用程序托管在服务器上,由 Thawte CA 提供 SSL 证书。

请记住,当谈到服务器端的事情时,我有点不知所措,但我在 SO 上看到的一系列解决方案都涉及公然信任任何证书。大部分解决方案都是从 2010 年到 2011 年初。

我有两个问题,具体来说:

  1. 如何/在哪里检查 Thawte CA 是否是 Android 的受信任 CA
  2. 我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: android ssl certificate


    【解决方案1】:

    对于任何寻求答案的人:在花费大量时间搜索 SO 和互联网之后,我了解到可能有两个可能的原因:

    1. 中间证书安装不正确(此处不是这种情况)
    2. 证书链的顺序不正确(这里就是这种情况)。

    真正帮助我的答案是 SO 用户 bdc 在此线程上:Apache HttpClient on Android producing CertPathValidatorException (IssuerName != SubjectName)

    简而言之,他建议通过运行openssl s_client -connect server.domain.com:443 来检查链排序。在 Mac 终端上使用托管 API 的服务器的域名运行此命令显示链排序不正确。

    在服务器端确定订单后,瞧!一切正常!

    【讨论】:

      【解决方案2】:

      在这里完全同意@Sid。请不要在 android 上添加任何虚假的 klugey 代码来绕过 SSL 异常。完全违背了 SSL 的目的。

      对于任何在通过 https 从 android 连接到 tomcat 服务器时遇到问题的人:

      确保使用 CA 的根证书和中间证书进行链接。 我没有生成用于为我们的 CA GoDaddy 创建 CSR 的私钥,因此我必须在导入密钥库之前将密钥和证书转换为 pkcs12。注意 -chain 选项。很重要。

      openssl pkcs12 -export -out mykey.pks -inkey private_key.key -in domain.crt -CAfile ca_intermed_root_bundle.crt -chain -name alias_name -passout stdin
      

      (通过标准输入输入密码)

      现在,将 mykey.pks 导入 java 密钥库

      keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore mystore.keystore -srckeystore mykey.pks -srcstoretype PKCS12 -alias alias_name
      

      现在可以在 tomcat 8443 连接器中使用此密钥库:

       <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
                     maxThreads="150" scheme="https" secure="true"
                     clientAuth="false" sslProtocol="TLS"
                      keystoreFile="/path../mystore.keystore"
                      keystorePass="changeit" keyAlias="alias_name"
                      />
      

      我在从 android 连接时重复了 SSLPeerUnverifiedExceptions,这完全修复了它。 最后,请使用http://www.sslshopper.com/ssl-checker.html 或任何其他工具验证证书是否正确链接。

      【讨论】:

      • 感谢您的意见,AVM!
      猜你喜欢
      • 1970-01-01
      • 2017-09-12
      • 2016-10-15
      • 1970-01-01
      • 2012-02-04
      • 2015-01-10
      • 2020-05-29
      • 2013-02-28
      • 2012-02-21
      相关资源
      最近更新 更多