azure iothub create-device-identity样例报错: unable to find valid certification path

Posted yondy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了azure iothub create-device-identity样例报错: unable to find valid certification path相关的知识,希望对你有一定的参考价值。

https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-java-java-getstarted

在IDEA中执行上述的代码,会出现下面的报错信息:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
	at com.microsoft.azure.iot.service.transport.http.HttpConnection.getResponseStatus(HttpConnection.java:236)
	at com.microsoft.azure.iot.service.transport.http.HttpRequest.send(HttpRequest.java:76)
	at com.microsoft.azure.iot.service.sdk.RegistryManager.addDevice(RegistryManager.java:108)
	at xxxx.azure.CreateDevIdentity.main(CreateDevIdentity.java:24)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

  

通过IE访问接口的网址:https://xxx.azure-devices.cn/devices/xxdevId?api-version=2016-02-03

将网站的证书导出为CER文件

然后通过java的keytool导入证书(如果是windows平台,需要以管理员身份打开CMD来执行命令)

keytool -import -file E:\azure-devices.cn.cer -keystore "C:\Program Files\Java\jdk1.8.0_66\jre\lib\security\cacerts" -alias azure-devices.cn

重新运行程序即可

以上是关于azure iothub create-device-identity样例报错: unable to find valid certification path的主要内容,如果未能解决你的问题,请参考以下文章

Azure IoTHub:获取连接设备的 IP 地址/位置

Azure IoThub - 类 RegistryManager - 方法 AddDeviceAsync(device) 抛出 ErrorCode:ArgumentNull;BadRequest

面对 ImportError:DLL 加载失败,同时实现 Microsoft azure iothub_service_client

azure iothub create-device-identity样例报错: unable to find valid certification path

Azure 事件中心 Event Grid(事件网格)+Azure Functions处理IOT Hub中的消息

Azure IoT Hub 十分钟入门系列 - 实现从设备上传日志文件/图片到 Azure Storage