2013-03-03 16 views
5

Java SSLに問題があります。問題は私のキーにパスワードがあることです。 openssl req -new -newkey rsa:1024 -nodes -out local.csr -keyout local.keyというコマンドを使用してキーを生成したときに、A challenge password []:を入力すると、MyKeyPassと入力しました。それから私は認証局から証明書を得ました。その後、証明書をKeyStoreとTrustStoreにインポートしました。javax.net.sslを使用してキーパスワードを指定する方法は?

私のAppsの1つはJettyに基づいており、Mavenを使用して実行され、もう1つはrawソケットを使用し、Mavenを使用しません。

私は以下の構成を使用して、突堤で証明書を使用すると、すべてが正常に動作します:

<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> 

ただし、アプリケーションは、桟橋/ Mavenを使用していないため、以下の設定が機能していない:

-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 \ 
もちろん

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 

が、それは次のとおりです。

は、私は次のエラーを取得しますKeyPassword(MyKeyPass)がありません。私は-Djavax.net.ssl構文を使用してそれを指定する方法を見つけようとしていますが、それを見つけることはできません。キーパスワードを指定するにはどうすればよいですか?

答えて

5

これらのシステムプロパティを使用して実行することはできません。デフォルトを使用してキーストアパスワードと同じにする必要があります。または、カスタムKeyManagerをインストールします。

+0

'KeyStorePass'を' MyKeyPass'に変更しました。ありがとう。 –

関連する問題