AWS – createCertificateFromCsr – не удалось подключитьсяJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 AWS – createCertificateFromCsr – не удалось подключиться

Сообщение Anonymous »

до сих пор мы создавали сертификат с помощью метода SDK IotClient.CreateKeysAndCertificate. И легко управлять подключением со стороны клиента с помощью закрытого ключа и сертификата с помощью SDK устройства iot

Код: Выделить всё

AwsIotMqtt5ClientBuilder.newDirectMqttBuilderWithMtlsFromPath(iotEndpoint, pemCert, pemPrivateKey);
и pemPrivateKey — это возвращаемые значения метода IotClient.CreateKeysAndCertificate.
Теперь мы хотели бы изменить создание сертификата, создав собственные ключи. и позвольте AWS только создать и зарегистрировать наш сертификат Iot, вызвав метод IotClient.createCertificateFromCsr.
Нам удалось правильно создать сертификат, используя следующий код.

Код: Выделить всё

// Dependencies
// 'org.bouncycastle:bc-fips:1.0.2.5'
// 'org.bouncycastle:bcpkix-fips:1.0.7'
// 'software.amazon.awssdk:iot:2.25.52'

private KeyPair generateRSAKeyPair(int keySize) throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BCFIPS");
// Initialize the key size
generator.initialize(keySize);
// Generate the key pair
return generator.generateKeyPair();
}

private String convertToPemFormat(Object keyOrRequest) throws Exception {
StringWriter stringWriter = new StringWriter();
try (JcaPEMWriter pemWriter = new JcaPEMWriter(stringWriter)) {
pemWriter.writeObject(keyOrRequest);
}
return stringWriter.toString();
}

// .... Our code

KeyPair keyPair = generateRSAKeyPair(keySize);

// create the CSR
X500Principal subject = new X500Principal(principleName);
PKCS10CertificationRequestBuilder csrBuilder = new JcaPKCS10CertificationRequestBuilder(subject, keyPair.getPublic());
JcaContentSignerBuilder csBuilder = new JcaContentSignerBuilder("SHA256withRSA");
PKCS10CertificationRequest csRequest = csrBuilder.build(csBuilder.build(keyPair.getPrivate()));

// convert the CSR to PEM format
String pemCsr = convertToPemFormat(csRequest);

CreateCertificateFromCsrRequest request = CreateCertificateFromCsrRequest.builder()
.certificateSigningRequest(pemCsr)
.setAsActive(true)
.build();

CreateCertificateFromCsrResponse cert = IotClient.builder().build().createCertificateFromCsr(request);

// On the client side...
// using 'software.amazon.awssdk.iotdevicesdk:aws-iot-device-sdk:1.20.7'

String privateKeyPEM = convertToPemFormat(new PemObject("RSA PRIVATE KEY", keyPair.getPrivate().getEncoded()));

AwsIotMqtt5ClientBuilder builder = AwsIotMqtt5ClientBuilder.newDirectMqttBuilderWithMtlsFromMemory(
ourIotEndpoint, // This have to be from you AWS IOT environment
cert.certificatePem(),
privateKeyPEM);

builder.withPort(443L);
Mqtt5Client returnClient = builder.build(); // 

Подробнее здесь: [url]https://stackoverflow.com/questions/78658028/aws-createcertificatefromcsr-fail-to-connect[/url]
Ответить

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

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

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

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

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