Код: Выделить всё
AwsIotMqtt5ClientBuilder.newDirectMqttBuilderWithMtlsFromPath(iotEndpoint, pemCert, pemPrivateKey);
Код: Выделить всё
pemCertТеперь мы хотели бы изменить создание сертификата, создав собственные ключи. и позвольте 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]
Мобильная версия