Java Android服务中的MQTT连接错误
我有一个Android服务,它使用“org.eclipse.paho.Android.service.MqttAndroidClient”通过ssl使用以下地址方案连接到mqtt服务器:Java Android服务中的MQTT连接错误,java,android,ssl-certificate,android-service,mqtt,Java,Android,Ssl Certificate,Android Service,Mqtt,我有一个Android服务,它使用“org.eclipse.paho.Android.service.MqttAndroidClient”通过ssl使用以下地址方案连接到mqtt服务器:ssl://mybroker.address.com:8883 当应用程序在前台和后台运行时,一切正常,但当我关闭应用程序时,Android服务重新排序,mqtt客户端尝试重新连接到mqtt服务器,但失败 设备日志显示以下异常: MqttException (0) - javax.net.ssl.SSLHands
ssl://mybroker.address.com:8883
当应用程序在前台和后台运行时,一切正常,但当我关闭应用程序时,Android服务重新排序,mqtt客户端尝试重新连接到mqtt服务器,但失败
设备日志显示以下异常:
MqttException (0) - javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:736)
at java.lang.Thread.run(Thread.java:764)
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:219)
at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:159)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:722)
... 1 more
Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:646)
at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:495)
at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:418)
at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:339)
at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88)
at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:197)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:399)
at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
at com.android.org.conscrypt.SslWrapper.doHandshake(SslWrapper.java:374)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:217)
... 3 more
Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
... 14 more
mqtt服务器使用具有以下路径的公共证书:
Go Daddy Class 2 Certification Authorit
|_ Go Daddy Root Certificate Authority - G2
|_Go Daddy Secure Certificate Authority- G2
|_*.my.domain
我尝试了两种不同的设备(Android 7.0和Android 8.1.0),它们都在系统可信证书中列出了“Go Daddy Root Certificate Authority-G2”
来自应用程序和服务的其他HTTPS请求似乎总是可以正常工作