受信任的证书条目不受密码保护 java

Posted

技术标签:

【中文标题】受信任的证书条目不受密码保护 java【英文标题】:trusted certificate entries are not password-protected java 【发布时间】:2016-01-26 23:33:49 【问题描述】:

我有一个其他方提供的 .cer 文件。我需要用这个 .cer 文件创建一个 saml 凭证。

为此,我使用以下命令将 .cer 文件导入 jks 文件。 (密码与密码相同。它从提示中要求接受证书。我给了 y 然后它说证书已添加到密钥库)

keytool -importcert -file xyz.cer -keystore test.jks -alias "testsp"

然后我使用这个 jks 文件来创建凭证,如下所示。

    private Credential getCredential() 
          KeyStore keystore = readKeystoreFromFile("C:\\Users\\WTC\\Downloads\\icicistage\\test.jks", "password");
          Map<String, String> passwordMap = new HashMap<String, String>();
          passwordMap.put("testsp", "password");
          KeyStoreCredentialResolver resolver = new KeyStoreCredentialResolver(keystore, passwordMap);

          Criteria criteria = new EntityIDCriteria("testsp");
          CriteriaSet criteriaSet = new CriteriaSet(criteria);

          Credential credential = null;
          try 
             credential = resolver.resolveSingle(criteriaSet);
           catch (SecurityException e) 
              e.printStackTrace();
          
         return credential;
    

    private static KeyStore readKeystoreFromFile(String pathToKeyStore, String keyStorePassword) 
        try 
            KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
            InputStream inputStream = new FileInputStream(pathToKeyStore);
            keystore.load(inputStream, keyStorePassword.toCharArray());
            inputStream.close();
            return keystore;
         catch (Exception e) 
            throw new RuntimeException("Something went wrong reading keystore", e);
        
    

下面的行在 try 块中给了我以下错误。

credential = resolver.resolveSingle(criteriaSet);

java.lang.UnsupportedOperationException:受信任的证书条目不受密码保护

谁能指导我解决这个问题?

【问题讨论】:

【参考方案1】:

解决了这个问题。

我们不需要在密码映射中提供密码。由于证书仅包含公钥。它不会取密码。

从代码中删除了以下行,它工作正常。

           passwordMap.put("testsp", "password");

【讨论】:

以上是关于受信任的证书条目不受密码保护 java的主要内容,如果未能解决你的问题,请参考以下文章

如何进入不受密码保护的 Java 密钥库或更改密码?

Spring Security SAML 可信证书条目不受密码保护

在 ios 上使用不受信任的证书加密数据

允许 Java 使用不受信任的证书进行 SSL/HTTPS 连接

保护/清理不受信任的客户端对服务器的远程调用

服务器证书不受信任怎么解决