2013-03-03 21 views
5

Java SSL ile ilgili sorun yaşıyorum. Sorun benim anahtarımın bir şifresi var. için sorulduğunda openssl req -new -newkey rsa:1024 -nodes -out local.csr -keyout local.key komutunu kullanarak anahtarı oluşturduğumda, MyKeyPass girdim. Daha sonra Sertifika Yetkilisi'nden sertifika aldım. Daha sonra sertifikayı bir KeyStore ve TrustStore'a aktardım.javax.net.ssl ​​kullanarak anahtar parolası nasıl belirlenir?

Uygulamalarımdan biri Jetty'ye dayanıyor ve Maven'i kullanıyor, diğeri ham soket kullanıyor ve Maven'i bunun için kullanmıyorum.

aşağıdaki yapılandırmayı kullanarak, Jetty'e ile sertifika kullanmak

, her şey iyi çalışır: Ancak

<connector implementation="org.mortbay.jetty.security.SslSelectChannelConnector"> 
    <port>443</port> 
    <maxIdleTime>30000</maxIdleTime> 
    <keystore>keys/domain.jks</keystore> 
    <password>KeyStorePass</password> 
    <keyPassword>MyKeyPass</keyPassword> 
    <truststore>keys/truststore_domain.jks</truststore> 
    <trustPassword>TrustStorePass</trustPassword> 
</connector> 

App İskele/Maven kullanmayan için, aşağıdaki yapılandırma çalışmıyor:

-Djavax.net.ssl.keyStore=./keys/domain.jks \ 
-Djavax.net.ssl.keyStorePassword=KeyStorePass \ 
-Djavax.net.ssl.trustStore=./keys/truststore_domain.jks \ 
-Djavax.net.ssl.trustStorePassword=TrustStorePass \ 
tabii

Caused by: java.security.UnrecoverableKeyException: Cannot recover key 
    at sun.security.provider.KeyProtector.recover(KeyProtector.java:328) 
    at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:138) 
    at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:55) 
    at java.security.KeyStore.getKey(KeyStore.java:792) 
    at sun.security.ssl.SunX509KeyManagerImpl.<init>(SunX509KeyManagerImpl.java:131) 
    at sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:68) 
    at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:259) 
    at sun.security.ssl.SSLContextImpl$DefaultSSLContext.getDefaultKeyManager(SSLContextImpl.java:621) 
    at sun.security.ssl.SSLContextImpl$DefaultSSLContext.<init>(SSLContextImpl.java:486) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at java.lang.Class.newInstance0(Class.java:372) 
    at java.lang.Class.newInstance(Class.java:325) 
    at java.security.Provider$Service.newInstance(Provider.java:1238) 
    ... 12 more 

, öyle:

aşağıdaki hatayı alıyorum KeyPassword eksik (MyKeyPass). -Djavax.net.ssl sözdizimini kullanarak nasıl belirtileceğini bulmaya çalışıyorum, ancak bulamıyor gibi görünmüyor. Anahtar Şifresini nasıl belirleyebilirim?

cevap

5

Bu sistem özellikleri aracılığıyla yapamazsınız: anahtar deposunun parolasıyla aynı olan varsayılan değeri kullanmanız gerekir. Veya özel bir KeyManager yükleyin.

+0

'KeyStorePass' işlevinin' MyKeyPass' olarak değiştirilmesi işe yaradı. Teşekkürler. –

İlgili konular