원인: java.security.복구할 수 없는 키예외: 키를 복구할 수 없습니다.
ABCC_client.store라는 jks keystore가 준비되어 있습니다.이 키 스토어를 cacerts에 Import하여 연결을 시도하면 No schealgorithm error라고 표시됩니다.스택 트레이스 PFA
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
단, 이 키스토어를 개별적으로 사용하면 즉, cacert에 추가하지 않고 동작합니다.
몇 가지 구글 검색을 통해 http://joewlarson.com/blog/2009/03/25/java-ssl-use-the-same-password-for-keystore-and-key/에 접속할 수 있었습니다.이 비밀번호는 키와 키스토어에 따라 다를 수 있습니다.
Tomcat 6 이전 버전을 사용하는 경우 keystore 암호와 key 암호가 동일한지 확인하십시오.Tomcat 7 이후를 사용하고 있는 경우는, 같은 패스워드가 설정되어 있는지, 또는 키 패스워드가 에 지정되어 있는 것을 확인해 주세요.server.xml파일.
앱/구성에서 정의된 개인 키 암호가 잘못되었습니다.먼저 다음과 같이 개인 키 비밀번호를 변경하여 개인 키 비밀번호를 확인합니다.
keytool -keypasswd -new changeit -keystore cacerts -storepass changeit -alias someapp -keypass password
위의 예에서는 비밀번호를 비밀번호에서 비밀번호로 변경합니다.이 명령어는 개인 키 비밀번호가 비밀번호일 경우 성공합니다.
를 가지지 않기 위해서Cannot recover key예외로 어플리케이션을 실행하고 있는 Java 설치에 Java Cryptography Extension(JCE) Unlimited Strength Combitory Policy Files를 적용해야 했습니다.이러한 파일의 버전 8은 여기에서 찾을 수 있습니다.또는 이 페이지에 최신 버전이 나열되어 있을 것입니다.다운로드에는 정책 파일을 적용하는 방법을 설명하는 파일이 포함됩니다.
JDK 8u151이므로 정책 파일을 추가할 필요가 없습니다.대신 JCE 관할권 정책 파일은 다음과 같은 보안 속성에 의해 제어됩니다.crypto.policy.로 설정unlimitedJDK에서 무제한 암호화를 사용할 수 있습니다.위의 상태에 링크된 릴리스 노트에 따라 또는 를 통해 설정할 수 있습니다.java.security파일.java.security파일을 추가할 수도 있습니다.-Djava.security.properties=my_security.properties명령어로 이동하여 프로그램을 시작합니다.
기본적으로는 JDK 8u161 무제한 암호화가 활성화되어 있습니다.
64비트 OpenSSL Version을 사용하여 빌드된 키스토어에 키를 Import 했을 때도 같은 오류가 발생하였습니다.32비트 OpenSSL 버전을 사용하여 빌드된 키스토어에 키를 Import할 때도 같은 절차를 수행했을 때는 모든 것이 정상적으로 진행되었습니다.
다음 명령을 실행하여 사용 중인 암호가 올바른지 확인합니다.
keytool -keypasswd -new temp123 -keystore awsdemo-keystore.jks -storepass temp123 -alias movie-service -keypass changeit
아래의 에러가 표시되는 경우는, 패스워드가 잘못되어 있습니다.
keytool error: java.security.UnrecoverableKeyException: Cannot recover key
때때로 이것은 아무 이유 없이 일어나는 것처럼 보인다.저도 Keytool Explorer 등 모든 방법을 시도해 보았습니다.
구글 플레이 서명이 유효하게 되어 있기 때문에, 최종적으로 구글에 키의 리셋을 의뢰하는 것이 종료되었습니다.이것은 따라야 할 좋은 권장 사항입니다.
https://support.google.com/googleplay/android-developer/answer/9842756?hl=en
언급URL : https://stackoverflow.com/questions/15967650/caused-by-java-security-unrecoverablekeyexception-cannot-recover-key
'source' 카테고리의 다른 글
| Python 문자열의 u 접두사는 무엇입니까? (0) | 2022.12.11 |
|---|---|
| 바이트 어레이란 어떤 의미입니까? (0) | 2022.12.11 |
| 테이블이 크래시로 표시되어 있으므로 복구해야 합니다. (0) | 2022.12.11 |
| MySql 5.7 설치 관리자가 VS 2013 재배포 가능을 감지하지 못함 (0) | 2022.12.11 |
| Java에서 사용되지 않는 가져오기 경고 억제 (0) | 2022.12.11 |