【发布时间】: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:受信任的证书条目不受密码保护
谁能指导我解决这个问题?
【问题讨论】: