サードパーティのJVMを使用してWindowsモバイルデバイスで実行されるJavaアプリケーションがあります。アプリケーションは、HTTPを介してApacheTomcatサーバーと通信します。一部の接続にはHTTPSも使用しており、証明書はSunkeytoolユーティリティを使用して作成されています。最初にgenkeyを使用してキーストアが作成され、次にexportを使用して証明書がエクスポートされ、最後にimportを使用して別のキーストアにインポートされました。genkeyによって作成されたファイルはApacheサーバーにロードされ、importを使用して作成されたキーストアはPDAのJVMにロードされました。すべてが期待どおりに機能します。
現在、PDAで新しいJVMを使用していますが、(何らかの理由で)このJVMではキーストアがX509(DER)形式である必要があることを確認しました。私は約1か月前にこれに取り組み始め、それを機能させましたが、愚かなことに、私が行った手順を書き留めることはありませんでした。私はopensslを使用したことを覚えているようですが、それ以外は完全に失われています。現在opensslを使用して作成し、Apacheにロードしようとすると、起動時にエラー(無効なキーストア形式)が発生するため、何かが完全に欠落している可能性があります。
PDAで実行されているApacheサーバーとJVMにロードできるこの自己署名X509証明書を作成する方法について誰かが考えていますか?
アップデート
自己署名証明書の作成については、Apacheの指示に従いました。
openssl req -new -x509 -nodes -out server.crt -keyout server.key
しかし、キーをApache confディレクトリにコピーして起動すると、例外が発生します。
java.io.IOException: invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
...
server.xmlファイルには、HTTPSの次のエントリが含まれています。
<Connector port="6969"
protocol="HTTP/1.1"
SSLEnabled="true"
maxThreads="150"
scheme="https"
sslProtocol="TLS"
secure="true"
clientAuth="false"
keystoreFile="./conf/server.key"
keystorePass="password"
ciphers="SSL_RSA_WITH_RC4_128_MD5"
/>
キーストアはJavaキーストア形式である必要があると思いますか?しかし、デバイスの証明書はx509形式である必要があるため、これを行う方法がわかりません。