有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    openssl rsa -in application.key -text

    是调试问题的正确方法。 输出的格式将清楚地指示它是否为有效键