2015-10-27 4 views
0

У меня есть файл .cer, предоставленный какой-либо другой стороной. Мне нужно создать учетные данные saml с этим .cer-файлом.доверенные записи сертификатов не защищены паролем java

Для этого я импортировал файл .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 (критерииSet);

java.lang.UnsupportedOperationException: доверенный сертификат записи не защищен паролем

Может кто-нибудь, пожалуйста, руководство меня, чтобы решить эту проблему?

ответ

0

Решение проблемы.

Нам не нужно указывать пароль на карте паролей. Поскольку сертификат содержит только открытый ключ. Это не займет пароль.

Удалена строка, указанная ниже, и она отлично работает.

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