java中的SSL-没有RSA?

java中的SSL-没有RSA?,java,ssl,Java,Ssl,我有此代码,但在sslContext.init的行中,我得到以下异常: java.security.NoSuchAlgorithmException:RSA KeyManagerFactory不可用 有什么想法吗?替换 KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(this.getClass().getResourceAsStream("keystore.jks

我有此代码,但在sslContext.init的行中,我得到以下异常: java.security.NoSuchAlgorithmException:RSA KeyManagerFactory不可用

有什么想法吗?

替换

    KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
    keyStore.load(this.getClass().getResourceAsStream("keystore.jks"), "haslo1".toCharArray());
    TrustManagerFactory trustManagerFactory =
    TrustManagerFactory.getInstance("PKIX", "SunJSSE");
    trustManagerFactory.init(keyStore);
    X509TrustManager x509TrustManager = null;
    for (TrustManager trustManager : trustManagerFactory.getTrustManagers()) {
    if (trustManager instanceof X509TrustManager) {
    x509TrustManager = (X509TrustManager) trustManager;
    break;
    }
    }
        if (x509TrustManager == null) {
            throw new NullPointerException();
        }
        SSLContext sslContext = SSLContext.getInstance("TLS");

      sslContext.init( KeyManagerFactory.getInstance( "RSA" ).getKeyManagers(),
       new TrustManager[]{x509TrustManager}, null);

替换

    KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
    keyStore.load(this.getClass().getResourceAsStream("keystore.jks"), "haslo1".toCharArray());
    TrustManagerFactory trustManagerFactory =
    TrustManagerFactory.getInstance("PKIX", "SunJSSE");
    trustManagerFactory.init(keyStore);
    X509TrustManager x509TrustManager = null;
    for (TrustManager trustManager : trustManagerFactory.getTrustManagers()) {
    if (trustManager instanceof X509TrustManager) {
    x509TrustManager = (X509TrustManager) trustManager;
    break;
    }
    }
        if (x509TrustManager == null) {
            throw new NullPointerException();
        }
        SSLContext sslContext = SSLContext.getInstance("TLS");

      sslContext.init( KeyManagerFactory.getInstance( "RSA" ).getKeyManagers(),
       new TrustManager[]{x509TrustManager}, null);

KeyManagerFactory算法与RSA无关。如果您使用的是其他文档,则可使用的内容将记录在或提供商的文档中

这里唯一可用的选项是SunX509和PKIX。一般来说,最好使用KeyManagerFactory.getDefaultAlgorithm。您也可以为TrustManagerFactory执行此操作,而不是硬编码PKIX。列出了Sun JRE的默认值。

KeyManagerFactory算法与RSA无关。如果您使用的是其他文档,则可使用的内容将记录在或提供商的文档中


这里唯一可用的选项是SunX509和PKIX。一般来说,最好使用KeyManagerFactory.getDefaultAlgorithm。您也可以为TrustManagerFactory执行此操作,而不是硬编码PKIX。Sun JRE的默认值已列出。

我得到java.lang.IllegalStateException:KeyManagerFactoryImpl未初始化确定,您也不能只对其调用GetKeyManager,您需要先调用init。我得到java.lang.IllegalStateException:KeyManagerFactoryImpl未初始化确定,您也不能只对其调用GetKeyManager,您需要首先调用init。我获取java.lang.IllegalStateException:KeyManagerFactoryImpl未初始化我获取java.lang.IllegalStateException:KeyManagerFactoryImpl未初始化
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm())