Цепочка сертификатов недействительна при попытке зарегистрировать устройство (DPS)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Цепочка сертификатов недействительна при попытке зарегистрировать устройство (DPS)

Сообщение Anonymous »

Я пытаюсь решить эту проблему уже несколько дней и не могу найти решение относительно приведенной ниже ошибки: цепочка сертификатов недействительна. У меня есть родительский сертификат, полученный из хранилища, с помощью которого я создаю и подписываю дочерний сертификат, а затем пытаюсь зарегистрировать устройство с помощью клиента подготовки устройств. Пока устройство пытается зарегистрироваться, появляется следующая ошибка. Я точно не уверен, в чем я ошибаюсь, поскольку шаги по созданию и подписанию дочернего сертификата выглядят абсолютно правильно.
Caused by: java.security.KeyStoreException: Certificate chain is not valid
at java.base/sun.security.pkcs12.PKCS12KeyStore.setKeyEntry(PKCS12KeyStore.java:650)
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineSetKeyEntry(PKCS12KeyStore.java:593)
at java.base/sun.security.util.KeyStoreDelegator.engineSetKeyEntry(KeyStoreDelegator.java:114)
at java.base/java.security.KeyStore.setKeyEntry(KeyStore.java:1192)
at com.microsoft.azure.sdk.iot.provisioning.security.SecurityProviderX509.generateSSLContext(SecurityProviderX509.java:73)
at com.microsoft.azure.sdk.iot.provisioning.security.SecurityProviderX509.getSSLContext(SecurityProviderX509.java:40)

Вот пример фрагмента кода.
generateSelfSignedX509Certificate предназначен для подписания и создания дочернего сертификата. Тип параметра KeyPair SigningCertKeyPair представляет собой комбинацию родительского закрытого ключа и открытого ключа для дочернего элемента, созданного как новая KeyPair. Итак, SigningCertKeyPair = ParentPrivateKey + childPublicKey. Родительский закрытый ключ используется для подписи нового сгенерированного дочернего сертификата x509.
var childCertificate = generateSelfSignedX509Certificate(signingCertKeyPair, certificateRequest.getDeviceId,
parentCertPolicy.getProperties().getNotBefore(), parentCertPolicy.getProperties().getExpiresOn());
Collection signerCertificates = new LinkedList();
byte[] certificateContent = parentCertPolicy.getCer();
String parentCertificate = Base64.getEncoder().encodeToString(certificateContent);
signerCertificates.add(parsingOfPublicKeyCertificate(parentCertificate));
var securityProvider = SecurityProviderX509.newBuilder()
.withChildCert(childCertificate)
.withSignerCertificates(signerCertificates)
.withSignerCommonName(certificateRequest.deviceId)
.withPrivateKey(signingCertKeyPair.getPrivate())
.build();
var provisioningDeviceClient = ProvisioningDeviceClient.create(dpsCertConfig.globalEndpoint(), dpsCertConfig.idScope(), PROTOCOL, securityProvider);
provisioningDeviceClient.registerDeviceSync();//This line is throwing certificate invalid exception
provisioningDeviceClient.close();


Подробнее здесь: https://stackoverflow.com/questions/790 ... device-dps
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»