JAVAlang.IllegalArgumentException:文件不包含有效的私钥:/Users/x/application。钥匙
关于web客户端发送http请求的小问题
我启动web客户端,以便使用此ssl上下文发送http请求,方法如下:
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;
}
}
当我cat
它时,"/Users/x/application.key"
文件如下所示:
-----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.<init>(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]
你能帮我指出为什么我得到一个“文件不包含有效的私钥”吗
多谢各位
# 1 楼答案
openssl rsa -in application.key -text
是调试问题的正确方法。 输出的格式将清楚地指示它是否为有效键