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
構文を使用してそれを指定する方法を見つけようとしていますが、それを見つけることはできません。キーパスワードを指定するにはどうすればよいですか?
'KeyStorePass'を' MyKeyPass'に変更しました。ありがとう。 –