3 votes

Configuration de SSL sur JBoss 5

Comment puis-je activer SSL sur JBoss 5 sur une machine Linux (Red Hat - Fedora 8) ?

Ce que j'ai fait jusqu'à présent est :

(1) Créez un keystore de test.

(2) Placez le server.keystore nouvellement généré dans $JBOSS_HOME/server/default/conf

(3) Effectuez la modification suivante dans le server.xml de $JBOSS_HOME/server/default/deploy/jbossweb.sar pour inclure ceci :

<!-- SSL/TLS Connector configuration using the admin devl guide keystore -->
  <Connector protocol="HTTP/1.1" SSLEnabled="true"
       port="8443" address="${jboss.bind.address}"
       scheme="https" secure="true" clientAuth="false"
       keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
       keystorePass="mypassword" sslProtocol = "TLS" />

(4) Le problème est que lorsque JBoss démarre, il enregistre cette exception (pendant le démarrage) (mais je suis toujours en mesure de tout visualiser sous http://localhost:8080/ ):

03:59:54,780 ERROR [Http11Protocol] Error initializing endpoint

java.io.IOException : Impossible de récupérer la clé at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:456) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:139) at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:498) at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:175) at org.apache.catalina.connector.Connector.initialize(Connector.java:1029) at org.apache.catalina.core.StandardService.initialize(StandardService.java:683) at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:821) at org.jboss.web.tomcat.service.deployers.TomcatService.startService(TomcatService.java:313)

Je sais qu'il y a encore beaucoup à faire pour permettre une authentification complète du client SSL.....

1voto

Ce n'est peut-être pas la réponse la plus directe que vous recherchez, mais après des années de mise en place d'un grand nombre d'infrastructures basées sur Tomcat, je les place toujours en frontal avec Apache et mod_ssl, en utilisant mod_jk (ajp13) pour les connecter. Cela est bénéfique pour de très nombreuses raisons :

  • vous pouvez décharger tout le traitement des fichiers statiques vers Apache pour de meilleures performances
  • vous avez accès à toutes les fonctionnalités de mod_rewrite (et d'autres modules géniaux)
  • La mise en place de SSL avec Apache est un jeu d'enfant, Tomcat ne sait même pas qu'il s'agit d'un canal SSL.

...et ainsi de suite. Bien que le moteur Java puisse gérer SSL, ce n'est pas l'un de ses points forts et il a tendance à être plus compliqué que ce qu'il vaut. Laissez java gérer les applications web et leur code java, laissez Apache faire ce qu'il fait de mieux. Vous constaterez également que mod_jk dispose d'un grand nombre d'options intéressantes pour s'assurer que votre moteur d'application n'est pas surchargé ; en utilisant la bonne combinaison de paramètres, vous pouvez faire en sorte que vos utilisateurs soient temporairement redirigés de manière propre et esthétique lorsque les instances de Tomcat ne répondent pas assez rapidement (ou se bloquent).

1voto

macbutch Points 141

C'est peut-être un peu tard mais comme vous êtes très proche, cela vaut la peine de donner une réponse :

  1. Votre description n'est pas claire mais je suppose que vous avez un certificat de serveur dans le keystore ? Si ce n'est pas le cas, vous devez le faire - vous pouvez générer un certificat en utilisant OpenSSL si vous ne l'avez pas encore fait.

  2. Vous devez ajouter un nouveau paramètre au fichier server.xml pour spécifier l'alias à utiliser pour rechercher le certificat dans le fichier server.keystore. Ainsi, si l'alias de votre certificat est "localhost", vous devez ajouter le paramètre suivant keyAlias="localhost" à votre server.xml pour qu'il ressemble à ceci :

    <Connector protocol="HTTP/1.1" SSLEnabled="true"
       port="8443" address="${jboss.bind.address}"
       scheme="https" secure="true" clientAuth="false"
       keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
       keystorePass="mypassword" sslProtocol = "TLS" 
       keyAlias="localhost"/>

Remplacer localhost par le nom d'alias que vous avez choisi pour le certificat dans votre server.xml.

En fonction de vos besoins spécifiques, je suis d'accord avec Tactical Vim pour dire que l'utilisation de mod_ssl est une meilleure option.

Dernière remarque : la configuration de l'authentification du client, une fois que le côté serveur fonctionne, est relativement simple. Vous avez besoin d'un nouveau keystore qui contiendra les CA de confiance pour signer les certificats des clients. Vous avez donc ces nouveaux paramètres à ajouter truststoreFile, truststorePassword et clientAuth. Le réglage de clientAuth à 'want' signifie que l'on vous demandera une authentification mais que l'annulation ne vous bloquera pas, le réglage à true signifie que vous ne pourrez pas accéder au serveur si vous ne fournissez pas d'accès client (à ce stade, vous voudrez probablement désactiver le connecteur cleartext). Les deux autres paramètres sont équivalents aux paramètres correspondants du keystore, mais faites très attention aux certificats que vous mettez dans votre truststore, car tout certificat signé par un certificat du truststore sera accepté pour l'authentification du client (si vous y réfléchissez un peu, vous comprendrez).

1voto

J'ai eu exactement le même problème.

http://forums.novell.com/novell-product-support-forums/identity-manager/im-userapp-workflow/321716-error-enabling-ssl.html

"Le problème est dû à un bogue dans Tomcat. Ce bogue provoque cette erreur si le mot de passe du keystore et le mot de passe de la clé ne sont pas les mêmes, ce qui était le cas dans ma configuration. La solution consiste simplement à recréer le keystore avec les deux mots de passe identiques. "

Maintenant ça marche pour moi.

0voto

djangofan Points 4152

Personnellement, je pense que le problème est que lorsque ce type a créé sa clé privée dans le keystore, il lui a donné le mauvais nom d'alias. Il doit lui donner l'alias de "tomcat". Sinon, tomcat pensera que le keystore est vide et il ne vous dira pas que c'est le cas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X