Код: Выделить всё
AwsIotMqtt5ClientBuilder.newDirectMqttBuilderWithMtlsFromPath(iotEndpoint, pemCert, pemPrivateKey);
Код: Выделить всё
pemCertТеперь мы хотели бы изменить создание сертификата, создав собственные ключи. и позвольте AWS только создать и зарегистрировать наш сертификат Iot, вызвав метод IotClient.createCertificateFromCsr.
Нам удалось правильно создать сертификат, используя следующий код.
Код: Выделить всё
private KeyPair generateRSAKeyPair(int keySize) throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", BouncyCastleFipsProviderSingleton.getInstance().getName());
// Initialize the key size
generator.initialize(keySize);
// Generate the key pair
return generator.generateKeyPair();
}
private GuardedString 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();
return getIotClient().createCertificateFromCsr(request);
Мы также преобразовали наш закрытый ключ в PEM, используя описанный выше метод.
Но когда мы пытаемся подключиться на стороне клиента с MQTT мы получаем следующую ошибку.
Код: Выделить всё
TlsContext.tls_ctx_new: Failed to create new aws_tls_ctx (aws_last_error: AWS_IO_FILE_VALIDATION_FAILURE(1038), A file was read and the input did not match the expected value)Чего мне не хватает?
Подробнее здесь: https://stackoverflow.com/questions/786 ... to-connect