Question

Est-il possible pour une application web java pour obtenir des informations sur les certificats de sécurité installés sur sa machine via une requête HTTP et d'accorder un accès sélectif si un certifiicate particulier est installé sur la machine.

En gros l'exigence est, l'application Web ne devrait examiner la demande que d'un ordinateur portable de l'entreprise d'autre doit refuser l'accès avec le texte d'erreur approprié.

(Ceux-ci pourraient être gagner des ordinateurs portables avec certains certifcates installés sur leur machine ou ils peuvent être d'un certain ensemble de ips statiques).

Était-ce utile?

La solution

Oui, cela est possible en utilisant des certificats clients HTTPS. La configuration exacte et la configuration dépend de votre serveur d'applications et exigences spécifiques, mais un scénario commun woul être que vous créez une entreprise CA interne (autorité de certification) pour délivrer les certificats de clients qui peuvent être limités à des adresses IP des clients spécifiques et configurer votre serveur d'applications de HTTPS connecteur d'exiger un certificat client et de confiance des certificats émis par votre CA.

Une fois la configuration appropriée a été fait, le certificat client (s) est / sont mis à la disposition de l'application Web par un attribut de requête de servlet:

X509Certificate[] certificates = (X509Certificate[])
    request.getAttribute("javax.servlet.request.X509Certificate");

Autres conseils

Comme jambjo dit - vous pouvez absolument obtenir des certificats clients via HTTPS avec authentification du client comme il le décrit. Je recommande que sur les adresses IP statiques, un certificat est plus difficile à falsifier et permet plus de flexibilité si vous avez besoin de reconfigurer le réseau différemment à l'avenir.

Quelques autres pensées:

  • Presque tous les serveurs d'application vous permettra de définir un magasin de certificats de confiance - la liste des certificats de votre demande CA acceptera pour auth client HTTPS. Limiter au CA qui fournit des certificats clients - soit un CA ou un fournisseur de certificat interne de l'entreprise.
  • Le choix du fournisseur CA ou CA interne est une entreprise. Une autorité de certification interne prendra la main-d'œuvre pour mettre en place et maintenir, un fournisseur de CA vous coûtera de l'argent par certificat. Il atteint un point de compromis entre où il est moins cher de faire les certificats vous-même, mais jusqu'à ce que vous frappez ce point, le fournisseur de CA peut être moins cher.
  • Si vous avez une autorité de certification interne et votre règle est que « toute la machine de l'entreprise (avec un certificat) peut accéder à cette application », votre travail est fait à la liste des CA de confiance dans le serveur applicaiton, puisque vous connaissez l'entreprise CA ne sera pas utilisé pour tout le monde, mais les gens dans la société.
  • Si vous avez un fournisseur de CA, vous devrez peut-être limiter votre contrôle d'accès et utiliser le jambjo de code fourni pour obtenir le certificat et examiner les renseignements qu'il contient. En règle générale, il y a une organisation (O) et le composant unité d'organisation (OU) dans le sujet DN (nom distinctif) qui vous dira quelle organisation a produit ce certificat. Vous devriez être en mesure de vérifier que, pour être sûr que vous avez un ordinateur de l'entreprise.
  • Il est viable pour faire le O et OU vérifier si vous savez que votre fournisseur de CA ne donnera jamais les noms de votre entreprise O et OU à personne, mais un membre de votre entreprise. Si ce n'est pas le cas, vous devrez peut-être vérifier contre un magasin de données back-end (comme un annuaire LDAP) pour être sûr que l'utilisateur ou la machine de l'utilisateur est connu pour vous.
  • Il est également possible de relier l'adresse IP de la machine au certificat - souvent SubjectAltName (Subject Alternative Name) est utilisé pour quand le certificat est en cours de construction. Je ne le recommanderais pas, parce que vous aurez besoin d'un besoin d'un nouveau certificat si jamais vous changez l'adresse IP de la machine. Il semble inutilement complexe pour vos besoins.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top