Устройство автоматической инициализации в группе регистрации не работает (java SDK) - PullRequest
0 голосов
/ 12 июня 2018

Я выполнил этот пример

https://docs.microsoft.com/en-us/azure/iot-dps/quick-enroll-device-x509-java

Он не отображается в «регистрационных записях» в группе регистрации, но выдает эту ошибку:

PROVISIONING_DEVICE_STATUS_FAILED, Исключение: com.microsoft.azure.sdk.iot.provisioning.device.internal.exceptions.ProvisioningDeviceHubException: информация сертификата подписи не соответствует элементам цепочки

Регистрация:

public class DeviceRegistration {
String idScope;
String globalEndpoint;
String clientCert;
String clientCertPrivateKey;
String signerCert;

public DeviceRegistration(String idScope, String globalEndpoint, String clientCert, String clientCertPrivateKey, String signerCert) {
    this.idScope = idScope;
    this.globalEndpoint = globalEndpoint;
    this.clientCert = clientCert;
    this.clientCertPrivateKey = clientCertPrivateKey;
    this.signerCert = signerCert;
}

public void register(ProvisioningDeviceClientRegistrationCallback callback) throws Exception {
    Collection<String> signerCertificates = new LinkedList<>();
    signerCertificates.add(signerCert);
    ProvisioningDeviceClient provisioningDeviceClient = null;

    SecurityProvider securityProviderX509 = new SecurityProviderX509Cert(clientCert, clientCertPrivateKey, signerCertificates);
    provisioningDeviceClient = ProvisioningDeviceClient.create(globalEndpoint, idScope, ProvisioningDeviceClientTransportProtocol.HTTPS,
                                                               securityProviderX509);

    provisioningDeviceClient.registerDevice(callback, this);

}

private static String loadFile(String filename) throws Exception {
    File f = new File(filename);
    if (!f.exists())
        throw new Exception("File not found: " + filename);
    BufferedReader reader = new BufferedReader(new FileReader(f));
    char[] buffer = new char[(int) f.length()];
    reader.read(buffer);
    reader.close();
    return new String(buffer);
}

public static void main(String[] args){
    try {
        CountDownLatch countDownLatch = new CountDownLatch(1);
        DeviceRegistration deviceRegistration = new DeviceRegistration(args[0], args[1], loadFile(args[2]), loadFile(args[3]), loadFile(args[4]));
        deviceRegistration.register(new ProvisioningDeviceClientRegistrationCallback() {
            @Override
            public void run(ProvisioningDeviceClientRegistrationResult provisioningDeviceClientRegistrationResult, Exception e, Object context) {
                if (provisioningDeviceClientRegistrationResult.getProvisioningDeviceClientStatus() == ProvisioningDeviceClientStatus.PROVISIONING_DEVICE_STATUS_ASSIGNED) {
                    System.out.println("IotHUb Uri : " + provisioningDeviceClientRegistrationResult.getIothubUri());
                    System.out.println("Device ID : " + provisioningDeviceClientRegistrationResult.getDeviceId());
                    countDownLatch.countDown();
                } else {
                    System.out.println("Result: "+provisioningDeviceClientRegistrationResult.getProvisioningDeviceClientStatus()+", Exception: "+e);
                }
            }
        });
        countDownLatch.await();
    } catch (Exception e) {
        e.printStackTrace();
    }

}}

1 Ответ

0 голосов
/ 12 июня 2018

Удалите отдельную регистрацию и убедитесь, что вы прошли проверку сертификата подписи X.509 (на вкладке Сертификаты на портале Azure).Если у вас есть и группа регистрации, и индивидуальная регистрация для устройства, индивидуальная регистрация имеет приоритет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...