8
votes

Authentification client Tomcat à l'aide de SSL

Je suis à perte, puisque je ne suis pas une personne de Tomcat. Je dois utiliser un service Web de la tige de 3ème partie et ils nécessitent une authentification client via SSL, elles ont donc généré et émis un certificat SSL. Malheureusement, cela est aussi loin que possible et ne peut me donner aucune direction sur la façon de utiliser . Je suis coincé en utilisant cette tierce partie si malheureusement, je dois supporter leur manque de soutien.

Donc, ce que j'ai est une application Java qu'un vendeur nous fournit (qui n'a apparemment jamais eu à traiter de cela), un serveur d'applications Tomcat exécutant 6.0.20 sur Centos 5.3 et le certificat SSL de la 3ème partie .

Qu'est-ce que je dois faire à ce stade? Tout ce que je peux trouver en ligne, c'est comment configurer un keyStore afin que mon application puisse utiliser l'authentification du client contre les choses qui se connectées à celle-ci, pas pour le moment où elle doit se connecter à quelqu'un d'autre ou comment utiliser SSL sur le port 8443 (que je connais comment faire déjà et avoir mis en place).


2 commentaires

J'ai tendance à être d'accord avec le fournisseur de services Web, en fonction des informations que vous avez fournies. Ils ont choisi d'utiliser un mécanisme d'authentification standard et largement pris en charge. Ils n'ont aucune affaire (à moins que vous ne les payiez à consulter) vous indiquent comment implémenter l'interface qu'ils ont spécifié. Heureusement, comme ils ont choisi une norme largement utilisée, vous avez de nombreuses ressources auxquelles vous pouvez tourner (beaucoup d'entre eux - Stackoverflow -Flow-sont gratuits) et d'apprendre une technologie qui pourrait vous bénéficier dans d'autres contextes.


Mon gripe avec eux court plus loin que celui-ci. Nous payons non seulement à obtenir un accès à le service, mais nous devons également payer par transaction, donc je m'attendais au moins un peu d'aide (autre que quelques fichiers PDF vagues avec presque non détail technique en eux). Tous mes autres fournisseurs de services tiers me donnent au moins des exemples de code ou peuvent me signaler dans la bonne direction lorsque j'ai des questions.


3 Réponses :


4
votes

Voici la réponse vraiment longue: http : //java.sun.com/javase/6/docs/technotes/guides/security/jsse/jsserefguide.html

Ne prenez pas mon mot pour cela, mais je pense que, en tant que client, l'authentification du client sera automatiquement effectuée lorsque le serveur la demande.

Si vous configurez Tomcat est la question, avez-vous lu http: / /tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html ? Notamment noter l'attribut clientauth de l'élément de connecteur.


2 commentaires

Donc, tout ce que je dois faire est de générer un keyStore (sans utiliser d'attributs de port, je suppose) et lorsque mon application accède à la tierce partie (par exemple, via SOAP), elle prendra la demande d'authentification SSL et envoie le long du client SSL. J'ai?


S'ils vous ont donné un certificat que vous devez utiliser pour vous connecter, ils auraient également dû vous donner une clé privée. Normalement, vous généreriez les deux, conservez la clé privée et envoyez-leur une copie du certificat pour mettre son serveur. Mais oui, obtenez cette clé privée et cette certificat dans un magasin de clés, obtenez le certificat de leur serveur dans une trouvaille de confiance et mettez ceux-ci dans un SSLContext pour générer des sockets SSL.



1
votes

Je ne sais pas qu'il s'agit de configurer Tomcat, autre que de pouvoir passer dans des propriétés du système à une application Web en cours d'exécution dans Tomcat.

Le fournisseur qui fournit l'application Web devrait vraiment pouvoir vous dire que Comment obtenir la connexion cliente à partir de son logiciel pour utiliser un certificat client spécifique lorsque vous effectuez une connexion SSL à un service Web distant. P>

Par exemple, ils pourraient avoir leur application implémenter une personnalisation KeyManager pour connexions SSL capables de rechercher Le certificat client et la clé privée d'un emplacement configurable. P>

S'ils ne l'ont pas fait, ils utilisent probablement le clavier Sunx509 par défaut. P>

pour le clavier par défaut, vous pouvez apparemment Utilisez KeyTool pour créer un site de clés contenant le certificat client et la clé privée que le certificat décrit. Ensuite, vous pouvez spécifier ce magasin de clé à l'aide des paramètres système suivants: P>

-Djavax.net.ssl.keyStore="/path/to/keystore"
-Djavax.net.ssl.keyStorePassword="<password>"


0 commentaires

8
votes

mise à jour: strong>

Essayez de suivre la manière suivante pour activer l'authentification du client dans Tomcat. P>

Pour faire des avantages de Tomcat, nous avons besoin de trois certificats. I.e Certificat de serveur pour Tomcat, certificat client pour le navigateur et certificat de la CA qui signera les deux certificats mentionnés ci-dessus. Ici, je vais montrer comment le faire sous Windows. P>

Il y a deux manières. P>

  1. Vous devez avoir un fichier CSR, c'est-à-dire une demande de signature de certificat. Vous pouvez le soumettre à l'autorité de certification comme VeriSign ou COMODO ou beaucoup d'autres comme eux. Ils vous fourniront le certificat. Ou p> li>

  2. Vous pouvez créer votre propre autorité de certificat et signer les certificats. Mais il est recommandé de le faire pour un usage personnel uniquement. P> li> ol>

    Vous devez avoir Java et OpenSSL installé pour effectuer les étapes ci-dessous. P>

    Pour générer la demande de signature de certificat, vous devez avoir la clé. Pour générer le type de clé, la commande suivante dans cmd. P>

    OpenSSL Genrsa -out ServerKey.Key 1024 P> blockQuote>

    Ceci générera un fichier "serverkey.key". La taille de la clé est de 1024. Vous pouvez le donner selon vos besoins. P>

    générer maintenant le fichier CSR à l'aide de la commande suivante. P>

    openssl req -new -kew -key serverkeykekey.key -outerserq.csr -config /path/to/openssl.cnf P> blockQuote>

    Une fois que vous exécutez cette commande, vous serez invité à donner des informations. Après cela, vous trouverez le fichier CSR dans votre annuaire. Vous pouvez soumettre ce fichier à la ca. Si vous le faites pour votre usage personnel et que vous souhaitez avoir votre propre CA, créer une clé et une CSR pour votre CA à l'aide de deux commandes ci-dessus. Après avoir eu votre CSR pour CA, vous pouvez signer avec la clé de la CA avec l'aide de la commande suivante. P>

    OpenSSL X509 -REQ -Days 365 -In Careq.csr -Signkey Cakey.Key -out CA.CRT P> blockQuote>

    Une fois que vous avez le certificat CA, vous pouvez l'utiliser pour signer d'autres certificats. P>

    openssl x509 -req -days 365 -ca ca.crt -cakey gâteauy.key -cacreatesérial -in serverreq.csr -out serveur.crt p> blockQuote>

    Vous pouvez également utiliser la même commande pour le certificat client aussi. P>

    Le navigateur qui est notre client ici, acceptera le certificat de format P12. Le format P12 est un fichier contenant votre certificat ainsi que la clé. P>

    à convertir le CRT en P12 Utilisez la commande suivante. P>

    openssl pkcs12 -export -in serveur.crt -inkeyserkeykeykekey.key -chain -cafile ca.crt -out -out serveurcert.p12 p> BlockQuote>

    à Tomcat, il y a une trusttore qui aura le certificat de CA et une autre est un keyStore qui aura la clé et le certificat de serveur (fichier P12). P>

    pour importer le certificat de CA en fiduciaire Utilisez la commande suivante. P>

    Tool-Tool -import -alias certauth -keystore cacert.jks -file ca.crt p> BlockQuote>

    Vous pouvez donner un alias comme ce que vous voulez. Notez le mot de passe que vous donnez lorsqu'il est demandé après avoir exécuté la commande ci-dessus. Nous utiliserons ce mot de passe dans le fichier server.xml. La même chose s'applique à la commande ci-dessous. P>

    pour importer le certificat de format P12 à la touche KeyStore Utilisez la commande suivante. P>

    Too-keytool -importkeystore -destkeystore tomcat.keystore -srckeystore -Servercercert.p12 -srcstoretype PKCS12 -Alias ​​1 P> BlockQuote>

    Maintenant, changez le Server.xml de Tomcat comme suit. P>

    <Connector port="8443" 
               protocol="org.apache.coyote.http11.Http11NioProtocol"
               SSLEnabled="true" scheme="https" secure="true"
               truststoreFile="path/to/truststorefile" truststorePass="password" 
               keystoreFile="path/to/keystorefile" keystorePass="password"
               clientAuth="true" sslProtocol="TLS"
               />
    


1 commentaires

Pouvez-vous s'il vous plaît réparer le blog cassé post lien?