2014-11-13 5 views
4

Используя keytool, я пытаюсь продлить срок действия trustedCertEntry в хранилище ключей, которое у меня есть. Хранилище ключей имеет содержание нижеПродление срока действия trustedCertEntry в хранилище ключей

$ keytool -list -keystore certs/authTruststore.jks 
Enter keystore password: 

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 3 entries 

sts, Nov 11, 2013, trustedCertEntry, 
Certificate fingerprint (SHA1): 8D:33:B7:69:DE:75:8F:22:E2:95:2C:EB:93:65:41:31:42:A6:E3:A7 
__ 
localhost, Nov 11, 2013, PrivateKeyEntry, 
Certificate fingerprint (SHA1): F4:A9:84:1E:7F:BF:5D:71:58:74:E4:C6:00:49:37:49:38:3E:31:BE 
__  
security_localhost, Nov 11, 2013, trustedCertEntry, 
Certificate fingerprint (SHA1): 6B:F8:E1:36:EB:36:D4:A5:6E:A0:5C:7A:E4:B9:A4:5B:63:BF:97:5D 

Я могу успешно изменить дату истечения второго входа, локального хоста типа PrivateKeyEntry, но при попытке изменить истечение срока действия двух других с той же командой, я получаю следующее сообщение об ошибке:

$ keytool -selfcert -v -alias security_localhost -validity 3650 -keystore certs/authTruststore.jks -storepass **** 

keytool error: java.lang.Exception: Alias <localhost> has no key 
java.lang.Exception: Alias <localhost> has no key 
    at sun.security.tools.KeyTool.recoverKey(KeyTool.java:3095) 
    at sun.security.tools.KeyTool.doSelfCert(KeyTool.java:2442) 
    at sun.security.tools.KeyTool.doCommands(KeyTool.java:1071) 
    at sun.security.tools.KeyTool.run(KeyTool.java:340) 
    at sun.security.tools.KeyTool.main(KeyTool.java:333) 

Как я могу продлить эти даты истечения срока?

ответ

2

Посмотрите на это link. Он говорит,

Generates an X.509 v1 self-signed certificate, using keystore information including 
the private key and public key associated with alias 

Таким образом, вы можете обновить сертификат с помощью -selfcert, которые связаны с ключом. Ваши first и third - это доверенные записи сертификатов, где ваша запись second является PrivateKeyEntry. Сертификат для этой записи связан с ее PrivateKey. Где, как другие 2, нет.

Если эти два сертификата истекли, вы можете обновить их только последним так же, как вы добавили их в хранилище ключей в первую очередь. Делает -importcert.

Примечание: -selfcert в настоящее время устарел. Вы можете узнать больше об этом here.