У меня есть приложение Java, которое работает на устройствах Windows Mobile с использованием сторонней JVM. Приложение связывается с сервером Apache Tomcat по HTTP. Мы также использовали HTTPS для некоторых соединений, и сертификаты были созданы с помощью утилиты Sun keytool. Сначала было создано хранилище ключей с помощью genkey, затем сертификат экспортирован с использованием экспорта и, наконец, он был импортирован в другое хранилище ключей с помощью импорта. Файл, созданный genkey, был загружен на сервер Apache, а хранилище ключей, созданное с помощью импорта, было загружено в JVM на КПК. Все работает как положено.
Сейчас я работаю с новой JVM на КПК и (по любой причине) я установил, что для этой JVM требуется, чтобы хранилище ключей было в формате X509 (DER). Я начал работать над этим около месяца назад, и он работал, но тупо никогда не записывал шаги, которые я предпринял, и теперь я не могу на всю жизнь вспомнить, что я делал. Кажется, я помню, что использовал openssl, но в остальном я полностью потерян. Все, что я создаю сейчас, используя openssl и пытаюсь загрузить в Apache, приводит к ошибке при запуске (Неверный формат хранилища ключей), поэтому я, вероятно, что-то упускаю полностью.
У кого-нибудь есть идеи, как мне поступить, создавая самозаверяющий сертификат X509, который можно загрузить на сервер Apache и 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 для устройства, поэтому я не уверен, как это сделать?