我有一個Java應用程序,該應用程序使用第三方JVM在Windows Mobile設備上運行。該應用程序通過HTTP與Apache Tomcat服務器進行通信。我們還使用HTTPS進行了一些連接,並使用Sun keytool實用程序創建了證書。首先使用genkey創建密鑰庫,然後使用導出導出證書,最後使用導入將其導入到另一個密鑰庫。由genkey創建的文件被加載到Apache服務器中,並且使用導入創建的密鑰庫被加載到PDA上的JVM中。一切都按預期工作。如何創建用於Apache Tomcat的X509自簽名證書
我現在正在使用PDA上的新JVM以及(無論什麼原因),我已經確定此JVM要求密鑰存儲區採用X509(DER)格式。大約一個月前我開始研究這個問題,並且讓它工作,但是愚蠢地從未寫下我採取的步驟,現在我不能記住我做了什麼。我似乎記得使用openssl,但除此之外我完全迷失了。我現在使用openssl創建的任何東西,並嘗試加載到Apache導致啓動時出現錯誤(無效的密鑰存儲格式),所以我可能完全丟失了一些東西。
有沒有人有任何想法,我應該如何創建這個自簽名的X509證書,可以加載到Apache服務器和運行在PDA上的JVM?
UPDATE
我也跟着上創建自簽名證書從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格式,所以我不知道如何去做這件事?