Tomcat Serveur/Client Certificat SSL Auto-Signé
J'ai un Apache Tomcat 6.x server en cours d'exécution avec un certificat SSL auto-signé. Je veux que le client de présenter leur propre certificat pour le serveur pour que je puisse authentifier sur la base d'une base de données d'utilisateurs. J'ai tout travail basé sur un exemple que j'ai trouvé en ligne, mais l'exemple est venu avec des conserves de certificats et de pré-construction JKS banque de données. Je veux créer mon propre magasin de données avec mon propre certs mais j'ai pas de chance.
Comment puis-je créer une banque de données pour Tomcat?
Comment puis-je créer un certificat auto-signé pour Tomcat?
Comment puis-je créer un certificat auto-signé pour le client?
Comment puis-je la force de Tomcat à faire confiance à la signature de la client?
J'ai joué avec java keytool pour de nombreuses heures maintenant.
Vous devez vous connecter pour publier un commentaire.
Enfin eu la solution à mon problème, donc je vais poster les résultats ici si quelqu'un d'autre est coincé.
Grâce à Michael Martin de Michael est un Logiciel Pensées & Divagations j'ai découvert que:
J'ai simplement mis le drapeau, effacé tous les fichiers de cache de FireFox et cela a fonctionné comme un charme! J'utilise cela comme un test-le programme d'installation pour mon projet et j'ai besoin de partager avec d'autres personnes, j'ai donc écrit un petit script batch qui crée deux certificats SSL. On peut tomber dans le Tomcat de l'installation et de l'autre est un .p12 fichier qui peut être importé dans FireFox/IE. Merci!
Utilisation: premier argument de ligne de commande est le nom d'utilisateur du client. Tous les mots de passe "mot de passe" (sans guillemets). Modifier l'unité de bits codés pour répondre à vos besoins.
Les résultats sont de deux fichiers. L'un appelé serveur.jks que vous déposez dans Tomcat et un autre fichier appelé {nom d'utilisateur}.p12 que vous importez dans votre navigateur. Le serveur.jks fichier a le certificat du client ajoutée de confiance cert.
J'espère que quelqu'un d'autre trouve cela utile.
Et voici le XML qui doit être ajouté à votre serveur Tomcat conf/sever.xml fichier (testé uniquement sur Tomcat 6.x)
Pour Tomcat 7:
Pour activer l'authentification du client, vous devez spécifier un "magasin de confiance" pour Tomcat: un magasin de clés contenant les certificats à partir de la racine des autorités de certification de confiance, chaque signalé comme un "trustEntry".
Cela est spécifié par l'
Connector
attributs de l'élément:truststoreFile
,truststorePass
(qui est par défaut la valeur dekeystorePass
), ettruststoreType
(qui est par défaut "notre établissement").Si un client utilise un certificat auto-signé, puis sa "racine" CA y est le certificat lui-même; il s'ensuit, donc, que vous avez besoin d'importer du client certificat auto-signé dans Tomcat, magasin de confiance.
Si vous avez beaucoup de clients, cela va vite devenir une corvée. Dans ce cas, vous voudrez peut-être regarder dans les certificats de signature pour vos clients. La Java
keytool
commande ne peut pas le faire, mais l'ensemble des utilitaires de ligne de commande sont disponibles dans OpenSSL. Ou vous pouvez regarder dans quelque chose comme EJBCA sur une grande échelle.Mieux encore, demandez à vos clients d'utiliser un existant sans CA, comme startcom.org. Ce n'est pas toujours le cas pour les certificats de serveur, car StartCom du certificat n'est pas inclus dans tous les navigateurs, mais cette situation est inversée, et la StartCom certificat racine pourrait facilement être importés dans le Tomcat magasin de confiance.
Créer le certificat:
Entrer toutes les données pour le certificat auto-signé, vous devez alors modifier Tomcat server.xml et spécifier le fichier de clés propriétés sur le connecteur SSL, par exemple:
ou de suivre le Tomcat docs...
http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
Les réponses précédentes sont utiles pour moi, mais ne pas avoir un shell version de l'outil. J'ai donc écrit un.
key_gen.sh:
Pour
tomcat8
, pourrait ajouter la configuration suivante pourserver.xml
: