我们在连接Google的GCM API(https://android.googleapis.com/gcm/send)时遇到了一些问题,因为我们的服务器提供Android推送通知(SSLHandshakeException)。 从2018年2月28日到3月8日,问题是间歇性的(有时推送,否则会发生SSL握手错误)。从2018年3月9日开始,问题仍然存在。
请参阅下面的日志。想知道发行的证书是否有任何变化。
com.sun.jersey.api.client.ClientHandlerException:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到有效请求目标的证书路径 at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:151)
答案 0 :(得分:0)
我不完全了解细节,但是当我更新推送提供商/服务器"外部服务证书"并添加下面的证书..我的推动开始再次工作。因此,即使我最初在2年前安装的Equifax证书在几周前工作,GCM服务器上的某些内容也发生了变化,该证书不再有效。它的截止日期为2018年8月,接近但不应该到期为止。
我注意到新证书是SHA256而原始证书是SHA1,所以这可能是必需的安全升级。由于我的推送内容提供商是分发的,而不是在一个易于更新证书的位置,这有点让我感到困惑:(
修复我的问题的证书是:
-----开始证书----- MIIEXDCCA0SgAwIBAgINAeOpMBz8cgY4P5pTHTANBgkqhkiG9w0BAQsFADBMMSAw HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFs U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xNzA2MTUwMDAwNDJaFw0yMTEy MTUwMDAwNDJaMFQxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVHb29nbGUgVHJ1c3Qg U2VydmljZXMxJTAjBgNVBAMTHEdvb2dsZSBJbnRlcm5ldCBBdXRob3JpdHkgRzMw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKUkvqHv / OJGuo2nIYaNVW XQ5IWi01CXZaz6TIHLGp /洛伊+ 600 / 4hbn7vn6AAB3DVzdQOts7G5pH0rJnnOFUAK 71G4nzKMfHCGUksW /莫纳+ Y2emJQ2N + aicwJKetPKRSIgAuPOB6Aahh8Hb2XO3h9 RUk2T0HNouB2VzxoMXlkyW7XUR5mw6JkLHnA52XDVoRTWkNty5oCINLvGmnRsJ1z ouAqYGVQMc / 7sy + / + EYhALrVJEA8KbtyX r8snwU5C1hUrwaW6MWOARa8qBpNQcWT kaIeoYvy / sGIJEmjR0vFEwHdp1cSaWIr6 / 4g72n7OqXwfinu7ZYW97EfoOSQJeAz AgMBAAGjggEzMIIBLzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUH AwEGCCsGAQUFBwMCMBIGA1UdEwEB / wQIMAYBAf8CAQAwHQYDVR0OBBYEFHfCuFCa Z3Z2sS3ChtCDoH6mfrpLMB8GA1UdIwQYMBaAFJviB1dnHB7AagbeWbSaLd / cGYYu MDUGCCsGAQUFBwEBBCkwJzAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AucGtpLmdv b2cvZ3NyMjAyBgNVHR8EKzApMCegJaAjhiFodHRwOi8vY3JsLnBraS5nb29nL2dz cjIvZ3NyMi5jcmwwPwYDVR0gBDgwNjA0BgZngQwBAgIwKjAoBggrBgEFBQcCARYc aHR0cHM6Ly9wa2kuZ29vZy9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEA HLeJluRT7bvs26gyAZ8so81trUISd7O45skDUmAge1cnxhG1P2cNmSxbWsoiCt2e ux9LSD + PAj2LIYRFHW31 / 6xoic1k4tbWXkDCjir37xTTNqRAMPUyFRWSdvt + nlPq wnb8Oa2I / maSJukcxDjNSfpDh / Bd1lZNgdd / 8cLdsE3 + wypufJ9uXO1iQpnh9zbu FIwsIONGl1p3A8CgxkqI / UAih3JaGOqcpcdaCIzkBaR9uYQ1X4k2Vg5APRLouzVy 7a8IVk6wuy6pm + T7HT4LY8ibS5FEZlfAFLSW8NwsVz9SBK2Vqn1N0PIMn5xA6NZV c7o835DLAFshEWfC7TIe3g == -----结束证书-----
我通过运行这个openssl cmd获得它,它是链中的第二个。由于我没有该文件并且存在投诉,但仍然显示所需的证书链,因此可以不需要该CAfile parm。
openssl s_client -connect gcm-http.googleapis.com:443/gcm/send -debug -showcerts -CAfile entrust_2048_ca.cer
答案 1 :(得分:0)
问题是由于GeoTrust向GoogleTrust迁移了googleapis.com的SSL证书。当我们从URL导入新证书时,问题得到修复:https://android.googleapis.com并添加到我们服务器的信任存储区。
答案 2 :(得分:0)
Kari - 这就是我的想法。感谢您的回复..但您列出的网址为404 ..如果您有正确的网址,可以仔细检查和更新。
答案 3 :(得分:-1)
我看到了同样的问题和相同的SSL错误。还有关于此的讨论吗?