Je suis fourni avec un keystore jks nommé ABCC_client.store. Lorsque j'importe ce keystore dans cacerts et que j'essaye de le connecter, il indique No such Algorithm error. PFA le stacktrace
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at java.security.Provider$Service.newInstance(Provider.java:1245)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:147)
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:125)
at javax.net.ssl.SSLContext.getDefault(SSLContext.java:68)
at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102)
at org.apache.axis.components.net.JSSESocketFactory.initFactory(JSSESocketFactory.java:61)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:79)
... 32 more
Caused by: java.security.UnrecoverableKeyException: Cannot recover key
at sun.security.provider.KeyProtector.recover(KeyProtector.java:311)
at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:121)
at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:38)
at java.security.KeyStore.getKey(KeyStore.java:763)
at com.sun.net.ssl.internal.ssl.SunX509KeyManagerImpl.<init>(SunX509KeyManagerImpl.java:113)
at com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:48)
at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:239)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:170)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(DefaultSSLContextImpl.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Provider$Service.newInstance(Provider.java:1221)
... 39 more
Mais si j'utilise ce keystore indépendamment c'est à dire sans l'ajouter aux cacerts ça marche.
Certains googlages m'ont conduit à http://joewlarson.com/blog/2009/03/25/java-ssl-use-the-same-password-for-keystore-and-key/ qui dit que le mot de passe pourrait être différent pour la clé et le keystore.
java
ssl
ssl-certificate
jks
Mrinal Bhattacharjee
la source
la source
Réponses:
Si vous utilisez Tomcat 6 et versions antérieures, assurez-vous que le mot de passe du fichier de clés et le mot de passe de la clé sont identiques. Si vous utilisez Tomcat 7 et versions ultérieures, assurez-vous qu'ils sont identiques ou que le mot de passe clé est spécifié dans le
server.xml
fichier.la source
keytool
invite vous indiquera que le fait d'appuyer sur la touche ENTRÉE le fait automatiquement pour vous.)keytool
invite vous indiquera que le fait d'appuyer sur la touche ENTRÉE utilise automatiquement le même mot de passe pour la clé que le fichier de clés. Vous êtes libre d'utiliser le même mot de passe ou d'en sélectionner un personnalisé. Si vous sélectionnez un mot de passe différent du mot de passe duserver.xml
fichier de clés, vous devrez également spécifier le mot de passe personnalisé dans le fichier de configuration.Le mot de passe de la clé privée défini dans votre application / configuration est incorrect. Essayez d'abord de vérifier le mot de passe de la clé privée en remplaçant par un autre comme suit:
keytool -keypasswd -new changeit -keystore cacerts -storepass changeit -alias someapp -keypass password
L'exemple ci-dessus change le mot de passe de password à changeit. Cette commande réussira si le mot de passe de la clé privée était mot de passe.
la source
-keypasswd -keystore storefile -alias somealias
et de saisir tout le reste dans une invite."keytool error: java.security.UnrecoverableKeyException: Cannot recover key"
Existe - t-il un moyen de vérifier quel est mon mot de passe de clé d'alias ou de le modifier sans connaître l'ancien?Afin de ne pas avoir d'
Cannot recover key
exception, j'ai dû appliquer les fichiers de stratégie de juridiction de force illimitée Java Cryptography Extension (JCE) à l'installation de Java qui exécutait mon application. La version 8 de ces fichiers peut être trouvée ici ou la dernière version devrait être répertoriée sur cette page . Le téléchargement comprend un fichier qui explique comment appliquer les fichiers de stratégie.Depuis le JDK 8u151, il n'est pas nécessaire d'ajouter des fichiers de stratégie. Au lieu de cela, les fichiers de stratégie de juridiction JCE sont contrôlés par une propriété Security appelée
crypto.policy
. Définir cela surunlimited
avec autorise l'utilisation d'une cryptographie illimitée par le JDK. Comme les notes de publication liées à l'état ci-dessus, il peut être défini parSecurity.setProperty()
ou via lejava.security
fichier. Lejava.security
fichier peut également être ajouté en ajoutant-Djava.security.properties=my_security.properties
à la commande pour démarrer le programme comme détaillé ici .Depuis JDK 8u161, la cryptographie illimitée est activée par défaut.
la source
J'ai eu la même erreur lorsque nous avons importé une clé dans un keystore qui a été construit à l'aide d'une version OpenSSL 64 bits. Lorsque nous avons suivi la même procédure pour importer la clé dans un keystore qui a été construit à l'aide d'une version OpenSSL 32 bits, tout s'est bien passé.
la source
Vérifiez si le mot de passe que vous utilisez est correct en exécutant la commande ci-dessous
keytool -keypasswd -new temp123 -keystore awsdemo-keystore.jks -storepass temp123 -alias movie-service -keypass changeit
Si vous obtenez une erreur ci-dessous, votre mot de passe est incorrect
la source