J'ai une application Java qui s'exécute sur des périphériques Windows Mobile à l'aide d'une JVM tierce. L'application communique avec un serveur Apache Tomcat via HTTP. Nous avons également utilisé HTTPS pour certaines connexions et les certificats ont été créés à l'aide de l'utilitaire Sun keytool. Un keystore a d'abord été créé en utilisant genkey, puis le certificat exporté en utilisant export et finalement importé dans un autre keystore en utilisant import. Le fichier créé par genkey a été chargé dans le serveur Apache et le fichier de clés créé à l'aide de l'importation a été chargé dans la JVM sur le PDA. Tout fonctionne comme prévu.Comment créer un certificat auto-signé X509 à utiliser dans Apache Tomcat
Je travaille maintenant avec une nouvelle machine virtuelle Java sur le PDA et (pour une raison quelconque) j'ai établi que cette machine virtuelle nécessite que le fichier de clés soit au format X509 (DER). J'ai commencé à travailler dessus il y a environ un mois et je l'ai fait fonctionner, mais stupidement, je n'ai jamais noté les étapes que j'ai suivies, et maintenant je ne peux pas me souvenir de ce que j'ai fait. Je me souviens d'utiliser openssl mais à part ça, je suis totalement perdu. Tout ce que je crée maintenant en utilisant openssl et essaye de charger dans Apache provoque une erreur au démarrage (Invalid Keystore Format) donc je suis probablement en train de rater complètement quelque chose.
Est-ce que quelqu'un a des idées sur la façon dont je devrais créer ce certificat X509 autosigné qui peut être chargé sur un serveur Apache et sur une machine virtuelle exécutée sur un PDA?
MISE À JOUR
J'ai suivi les instructions d'Apache sur la création du certificat auto-signé:
openssl req -new -x509 -nodes -out server.crt -keyout server.key
Mais quand je copie la clé du répertoire conf Apache et le démarrage je reçois une exception:
java.io.IOException: invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
...
le fichier server.xml contient l'entrée suivante pour 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"
/>
Je suppose que le keystore doit être un format de keystore Java? Mais j'ai besoin que le certificat soit au format x509 pour l'appareil, donc je ne suis pas sûr de savoir comment faire cela?