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

时间:2015-10-27 13:56:43

标签: java keystore saml-2.0

我有一些其他方提供的.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 个答案:

答案 0 :(得分:0)

解决了这个问题。

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

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

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