Я запускаю веб-клиент для отправки http-запросов с этим SSL-контекстом следующим образом:
Код: Выделить всё
public SslContext getSslContext() {
try {
final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
try (InputStream trustStoreFile = getFileFromClassPathOrFileSystem(trustStorePath)) {
final KeyStore trustStore = KeyStore.getInstance(trustStoreType);
trustStore.load(trustStoreFile, trustStorePassPhrase.toCharArray());
trustManagerFactory.init(trustStore);
}
return SslContextBuilder.forClient().keyManager(new File("/Users/x/application.crt"), new File("/Users/x/application.key"), "somepassword").trustManager(trustManagerFactory).build();
} catch (CertificateException | NoSuchAlgorithmException | IOException | KeyStoreException e) {
return null;
}
}
Код: Выделить всё
-----BEGIN PRIVATE KEY-----
MIGH...
...
...FhMMXep
-----END PRIVATE KEY-----
Однако при выполнении http-вызова я сталкиваюсь с этой проблемой. >
Код: Выделить всё
Caused by: java.lang.IllegalArgumentException: File does not contain valid private key: /Users/x/application.key
at io.netty.handler.ssl.SslContextBuilder.keyManager(SslContextBuilder.java:350) ~[netty-handler-4.1.58.Final.jar:4.1.58.Final]
Caused by: java.io.IOException: overrun, bytes = 111
at java.base/javax.crypto.EncryptedPrivateKeyInfo.(EncryptedPrivateKeyInfo.java:95) ~[na:na]
at io.netty.handler.ssl.SslContext.generateKeySpec(SslContext.java:1072) ~[netty-handler-4.1.58.Final.jar:4.1.58.Final]
at io.netty.handler.ssl.SslContext.getPrivateKeyFromByteBuffer(SslContext.java:1133) ~[netty-handler-4.1.58.Final.jar:4.1.58.Final]
at io.netty.handler.ssl.SslContext.toPrivateKey(SslContext.java:1113) ~[netty-handler-4.1.58.Final.jar:4.1.58.Final]
at io.netty.handler.ssl.SslContextBuilder.keyManager(SslContextBuilder.java:348) ~[netty-handler-4.1.58.Final.jar:4.1.58.Final]
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/657 ... ate-key-us
Мобильная версия