2012-05-06 4 views
1

Je travaille sur le service Web Java et utilisant le serveur Tomcat. Puisque cette application serait B2B, nous demandons l'authentification du client. Nous utilisons openssl pour créer un certificat. Pour chaque utilisateur, nous allons créer un certificat auto-signé et nous l'enverrons par courrier ou quelque chose. Maintenant, le problème vient, quand le client appelle le serveur via une connexion sécurisée, le client doit envoyer le certificat fourni par le serveur. Je veux que ce client puisse envoyer le certificat pour l'authentification du client, sans aucune implémentation de code côté client. Y'a-t-il une quelconque façon de réussir cela? Quelqu'un peut-il me dire les étapes exactes nécessaires pour mettre en œuvre cela?Authentification du client en utilisant SSL sans code côté client mise en œuvre

Répondre

3

Pour chaque utilisateur, nous allons créer un certificat auto-signé et nous l'enverrons par courrier ou quelque chose.

arrêter là. C'est déjà peu sûr. Cela implique que vous avez la clé privée de l'utilisateur. L'utilisateur, et seulement l'utilisateur, doit avoir la clé privée de l'utilisateur. L'utilisateur doit générer sa propre clé privée et si vous insistez sur son propre certificat auto-signé, ou mieux encore le faire signer par une autorité de certification. Il devrait alors l'envoyer à vous si vous en avez besoin pour une raison quelconque.

Ce que vous faites est complètement arrière vers l'avant et du point de vue juridique/sécurité tout à fait sans valeur. En fait, il contient juridique risques majeurs que vous devez vous informer avant d'aller plus loin. L'un d'eux est la perte totale de la non-répudiation des transactions de l'utilisateur. C'est suffisant pour fermer votre entreprise.

+0

Il est notre exigence que notre propre CA (qui est pas le CA certifié) signera le certificat, et ce certificat sera envoyé au côté client. Maintenant, pour l'authentification du client, soit nous devons ajouter un certificat client au truststore du côté serveur, soit le client enverra certains détails comme la clé publique, que seul le client peut envoyer et que le côté serveur peut vérifier. Je ne sais pas ce que je devrais faire sans créer un risque légal. Mais une chose est sûre que je dois vérifier l'utilisateur sur la base des détails du certificat que le serveur a fourni. – Vaibhav

+0

@ user1367714 Si vous agissez en tant que CA dans le cas où vous ne devriez certainement pas générer de certificats auto-signés. Vous devez générer un certificat d'autorité de certification pour votre autorité de certification, soit l'obtenir signé par une autorité de certification, soit l'importer dans votre fichier de clés certifiées, puis signer les demandes CSR client avec ce certificat. Ensuite, tout ce que vous avez à faire est de configurer votre serveur pour exiger l'authentification du client. Si le client a sa clé privée et son certificat signé dans son keystore (Java) ou l'OpenSSL correspondant ou une configuration quelconque, tout fonctionnera de manière transparente et automatique pendant la négociation SSL. – EJP

+0

ohh ok! Dernier doute. Pour la connexion avec le client, nous avons un certificat pour le serveur qui serait vérifié par une autorité de certification (comme Verisign, Entrust). Maintenant, pour le client, notre AC signera le certificat. L'idée derrière la création d'un certificat client côté serveur et l'envoi d'un certificat était que nous n'avions pas prévu de fournir une interface au client pour générer un certificat client. Comme notre application est un WebService, nous ne voulons pas d'implémentation côté client (ce qui peut être évité). Maintenant, si nous suivons votre suggestion, notre AC signera les CSR du client. – Vaibhav

Questions connexes