Créer ma propre autorité de certification pour un intranet

Jai besoin de créer ma propre autorité de certification pour un intranet et malheureusement, il semble quil ny ait pas de bonne réponse à ce sujet sur la sécurité. SE.

Il existe de nombreuses ressources en ligne à ce sujet, mais elles sont toutes différentes et certaines utilisent des valeurs par défaut obsolètes (MD5 / SHA1, etc.) qui ne semblent pas dignes de confiance. Il existe également des centaines de variantes différentes de openssl.cnf, allant dun fichier de 10 lignes à lénorme fichier fourni par défaut avec ma distribution.

Jaimerais une réponse canonique sur la mise en place dune autorité de certification simple pour émettre des certificats de serveur et des certificats de client.

Apparemment, il semble que certaines personnes ne comprennent toujours pas que je ne suis pas une grande entreprise où un compromis CA cause des milliards de pertes et ne peut pas être atténué facilement alors laissez-moi vous expliquer un peu mieux pourquoi jai besoin de lAC:

  • plusieurs serveurs connectés via des liens non sécurisés (Internet ) doivent communiquer en toute sécurité.

  • Jai besoin dun moyen de midentifier auprès de ces serveurs afin deffectuer des tâches administratives, sans passer par mon gestionnaire de mots de passe toutes les 10 secondes.

  • Aucune autre autorité de certification que la mienne ne devrait pouvoir se faire passer pour lun des serveurs, aussi improbable soit-il ( mais possible ) cest-à-dire .

Voilà. Ma propre PKI et un certificat installé sur chaque machine semblent parfaitement répondre aux besoins. Lun des logiciels que jutilise nécessite également lutilisation dune PKI, donc lutilisation de certificats auto-signés nest pas une option.

Pour compromettre la PKI, quelquun aurait besoin de compromettre ma machine de travail, et si cela « Cest fait, alors lattaquant peut déjà faire pas mal de dégâts sans même toucher le PKI (comme je me connecterais de toute façon via SSH au serveur depuis cette machine). Cest un risque que jaccepte de prendre, et cette PKI najoute pas plus de risque que ce qui existe déjà.

Commentaires

  • echo "Abandon all hope, ye who enter here."
  • @KristoferA Il ‘ est pour un intranet, il ‘ est plus que raisonnable de créer votre propre autorité de certification pour un réseau dentreprise.
  • Au fait, que se passe-t-il ‘ avec les migrations vers Superuser ou ServerFault? ‘ t lutilisation dOpenSSL est-elle parfaitement sur le sujet ici?
  •  » … un certificat auto-signé est un certificat signé par une autorité inconnue de la plupart des systèmes.  » Non. Un certificat auto-signé est un certificat dans lequel la clé publique, les attributs de stratégie et les attributs didentité ont été signés par la clé privée correspondant à la clé publique liée par la signature. Bien que cela nait rien à voir avec le fait que le certificat provienne dune source connue, il est vrai – par définition – que tous les certificats racine sont auto-signés. La différence est quun certificat racine est activé pour la signature mais pas pour le chiffrement, ce qui le rend inutile en tant que certificat personnel pour une application ou un serveur.
  • What Andr é est que le logiciel impliqué interdit spécifiquement les certificats auto-signés en tant que certificats personnels et que les certificats client et serveur doivent partager une autorité de certification commune. Bien quil sagisse dexigences inhabituelles, elles sont parfaitement valables. Cependant, ce qui est demandé concerne davantage les règles telles que  » la longueur du chemin du certificat racine ne doit pas être supérieure à x  » et  » le certificat personnel doit contenir lindicateur isCA=No et une longueur de chemin de zéro.  » Malheureusement, les stratégies sur lesquelles repose la plus grande partie de la confiance dans le système, telles que la révocation, lhygiène de lespace de noms et la sécurité racine, ne sont pas ‘ t adressées dans openssl.cnf.

Réponse

Si votre infrastructure est minuscule , la plupart des détails de lexécution dune autorité de certification (par exemple, les CRL et autres) peuvent probablement être ignorés. Au lieu de cela, tout ce dont vous avez vraiment à vous soucier est de signer les certificats.

Il existe une multitude d’outils qui géreront ce processus pour vous. Jen ai même écrit un il y a de nombreuses années. Mais celui que je recommande si vous voulez quelque chose de vraiment simple, cest easy-rsa du projet OpenVPN. Cest un wrapper très fin autour de loutil de ligne de commande OpenSSL. Si vous allez gérer BEAUCOUP de certificats et traiter réellement la révocation et tout le reste, vous aurez besoin dun utilitaire beaucoup plus complexe et complet. Il y a déjà suffisamment de suggestions, donc je vais plutôt men tenir aux bases de ce que vous essayez daccomplir.

Mais voici la procédure de base. Je vais lexpliquer avec OpenSSL , mais nimporte quel système fera laffaire.

Commencez par créer votre autorité de certification «racine» – ce sera un certificat auto-signé. Il y a plusieurs façons de le faire; en voici une. Nous allons faire le nôtre un certificat de 10 ans avec une clé de 2048 bits.Ajustez les chiffres comme il convient. Vous avez mentionné que vous vous inquiétiez de lalgorithme de hachage, jai donc ajouté -sha256 pour massurer quil « est signé avec quelque chose dacceptable. Je crypte la clé en utilisant AES-256, mais cest facultatif . Il vous sera demandé de remplir le nom du certificat et autres; ces détails ne sont pas particulièrement importants pour une autorité de certification racine.

# First create the key (use 4096-bits if that"s what floats your boat) openssl genrsa -aes256 -out root.key 2048 # Then use that key to generate a self-signed cert openssl req -new -x509 -key root.key -out root.cer -days 3652 -sha256 

Si vous avez chiffré la clé lors de la première étape, vous devrez fournir le mot de passe à utilisez-le dans le second. Vérifiez votre certificat généré pour vous assurer que sous «Contraintes de base», vous voyez «CA: TRUE». Cest vraiment le seul élément important dont vous ayez à vous soucier:

openssl x509 -text < root.cer 

Cool. OK, maintenant signons un certificat. Nous aurons besoin dune autre clé et cette fois dune requête. Vous serez à nouveau interrogé sur votre nom et votre adresse. Les champs que vous remplissez et ce que vous fournissez dépendent de vous et de votre application, mais le champ qui compte le plus est le « Nom commun ». Cest là que vous fournissez votre nom dhôte ou votre nom de connexion ou tout ce que ce certificat va attester.

# Create new key openssl genrsa -aes256 -out client1.key 2048 # Use that key to generate a request openssl req -new -key client1.key -out client1.req # Sign that request to generate a new cert openssl x509 -req -in client1.req -out client1.cer -CA root.cer -CAkey root.key -sha256 -CAcreateserial 

Notez que cela crée un fichier appelé root.srl pour gardez nos numéros de série droits. Lindicateur -CAcreateserial indique à openssl de créer ce fichier, vous le fournissez donc pour la première demande que vous signez, puis plus jamais. Et une fois de plus, vous pouvez voir où pour ajouter largument -sha256.

Cette approche – tout faire manuellement – nest à mon avis pas la meilleure idée. Si vous exécutez une opération importante , alors vous voudrez probablement un outil qui peut garder une trace de tous vos certificats pour vous.

Au lieu de cela, mon objectif ici était de vous montrer que la sortie que vous voulez – les certificats signés comme vous le souhaitez eux – ne dépend pas des outils que vous utilisez, mais plutôt des options que vous fournissez à ces outils. La plupart des outils peuvent générer une grande variété de configurations, à la fois fortes et faibles, et cest à vous de fournir les chiffres que vous souhaitez m approprié. Les valeurs par défaut obsolètes sont normales pour le cours.

Commentaires

  • Il est ‘ important de noter que lorsque vous signez un certificat client, il sagit uniquement de la partie publique . Aucune clé privée ne doit être transmise ou générée par lautorité de certification.
  • Pouvez-vous préciser votre réponse sur la création dun certificat de lautorité de certification intermédiaire? Merci.
  • @Andr é Les certificats intermédiaires ne sont que des certificats normaux avec basicConstraints = CA:TRUE défini dans leurs attributs étendus. Rien de magique, juste un autre certificat.
  • @tylerl Mec, tu es génial.
  • Cette réponse est FANTASTIQUE et a été super utile, mais jai une mise à jour 2017 à ajouter. Chrome et dautres nécessitent désormais lextension x509v3 subjectAlternativeName; sinon, ils considèrent le certificat invalide, même avec un certificat racine CA correctement installé sur le système. Jai lutté pendant un certain temps pour trouver la bonne solution. Cette page a été inestimable pour moi et a résolu la dernière pièce du puzzle pour moi: cmrg.fifthhorseman.net/wiki/SubjectAltName . LOMI, ajouter le SAN lors de la signature, plutôt que lors de la demande, est à la fois plus facile et plus proche de ce que font réellement les autorités de certification publiques.

Réponse

Si vous souhaitez vraiment devenir une autorité de certification, tenez compte des implications de sécurité de le faire.

  1. La clé privée utilisée pour générer lautorité de certification racine de votre intranet doit littéralement être enfermé dans un coffre-fort. Et laccès à ce coffre-fort doit être surveillé physiquement.
  2. Lutilisation dune autorité de certification racine auto-signée oblige vos utilisateurs non seulement à avoir confiance que vous effectuez une diligence raisonnable avec la protection des clés, mais également à insérer une racine non approuvée initialement peuvent dans leur chaîne de certificats.
  3. Cela rompt également la fonctionnalité dagrafage OSCP en ce qui concerne la vérification externe de la chaîne de certificats, raison pour laquelle les services de gestion didentité existent en premier lieu.

Un certain nombre de personnes soutiendraient le raisonnement derrière la gestion de votre propre autorité de certification, comme; cest pour un intranet dentreprise où une partie de nos builds de bureau inclut la racine ca ou cest pour un petit nombre dutilisateurs.

Bien que ce ne soit pas nécessairement mal de le faire et puisse offrir certains avantages, il le fait annule la chaîne de vérification pour laquelle la gestion des identités basée sur les certificats a été conçue.

Si vous décidez de mettre en œuvre votre propre racine, assurez-vous simplement de suivre les mêmes pratiques de sécurité que toute autre autorité racine. la dernière chose que vous souhaiteriez, cest que quelquun compromette la clé privée utilisée pour votre CA root et commence à signer des certificats pour les campagnes de phishing contre vos clients.

Il existe des tonnes de guides de bonnes pratiques disponibles pour cela, NIST ( Institut national des normes et de la technologie) est un groupe collaboratif qui participe à lélaboration de diverses normes relatives à des sujets de sécurité informatique.

Lecture recommandée:
Audit (PDF)
Reprise après sinistre (PDF)
Systèmes de clés publiques (PDF)
Sans institut concernant déploiements PKI plus petits

Ok, je vois que vous avez mis à jour votre question pour être plus spécifique.

Deux documents pour configurer votre fichier openssl.cnf pour les spécificités de lautorité de certification:

https://www.openssl.org/docs/apps/ca.html

https://www.openssl.org/docs/apps/config.html

Je me rends compte que ce nest peut-être pas la réponse que vous voulez, mais parce que lenvironnement et les exigences de chacun sont différents, vous allez doivent définir une portée pour votre implémentation CA pour un bon exemple de configuration.

Commentaires

  • Là ‘ Il ny a aucune raison pour laquelle votre propre autorité de certification ne peut ‘ faire OCSP. Même la ligne de commande OpenSSL peut le faire, et cela ‘ s sur la barre la plus basse possible.
  • liens openssl sont maintenant 404

Answer

Là nest pas un moyen de faire cela simplement. il existe des outils qui peuvent vous aider à démarrer facilement.

comme:

aucun dentre eux nest un PKI complète à part peut-être EJBCA mais ce nest pas simple à installer.

  • XCA est un petit outil frontal pour obtenir une interface graphique pour générer, signer et révoquer des certificats.
  • Lautorité de certification EJBCA ou Enterprise Java Beans est une application Web JBOSS / Jetty qui peut faire linfrastructure PKI complète pour une entreprise.
  • openssl est loutil de ligne de commande de base. il peut faire tous les bits hors ligne dune autorité de certification mais aucune vérification (prête à lemploi). vous pouvez créer vos propres vérificateurs OCSP avec, mais vous devez créer vous-même le code « en ligne ».

Si tout ce que vous cherchez est la bonne configuration openssl. XCA peut vous aider à les générer. (il a une fonction dexportation de configuration openssl

Commentaires

  • EJBCA a maintenant une image de VM que vous pouvez utiliser. Sinon  » pas simple à configurer  » peut être considéré comme un euphémisme. Il sagit essentiellement dun énorme script ant qui tente de configurer le ( JBoss) serveur dapplication qui peut (et dans mon cas va ) tomber en panne.
  • limage de la VM est ou à des fins dévaluation, donc je ne le recommanderais pas pour un serveur de production.
  • Je me pencherai peut-être sur XCA. LEJBCA nest certainement pas ‘ une option – une interface Web ajoute une surface dattaque inutile et est plus difficile à configurer. Je préfère définitivement utiliser uniquement openssl cependant.
  • @Andr é en ce qui concerne EJBCA, il peut également être utilisé à partir de la ligne de commande, vous avez donc gagné ‘ Vous devez exposer linterface Web. Mais ‘ est une chose au niveau de lentreprise et probablement exagérée pour vos objectifs es (et je dis cela comme quelquun qui gagne sa vie en travaillant avec).

Réponse

Pour certains bon contexte, veuillez consulter ma présentation Comment créer et exploiter votre propre centre de gestion des certificats de médiocrité . Lessentiel de la présentation est que la chose la plus nécessaire nest pas une liste des commandes à exécuter, mais plutôt une compréhension approfondie de tous les différents contrôles qui entrent dans le fonctionnement dune autorité de certification commerciale, comment ils interagissent ensemble, limpact exact de la suppression de tout contrôle. lun deux, limpact cumulatif de la suppression de plusieurs dentre eux, et les contrôles datténuation nécessaires pour compenser la réduction de la sécurité.

Cest pourquoi il ny a pas de « réponse canonique sur la mise en place dune simple autorité de certification ». vous parcourez toute la route ISO, en commençant par une partie signataire clé, des certificats racine en double entreposés et voûtés, plusieurs signataires intermédiaires, des serveurs de révocation, etc., etc., ou vous devez concevoir un compromis basé sur le coût / avantage et le risque uniques profil que lentreprise est prête à accepter. Toute personne ayant suffisamment de compétences et dexpérience pour faire cette évaluation par définition na pas besoin de la feuille de triche. Ils peuvent analyser la syntaxe de commande correcte en fonction dune compréhension approfondie de la fonction métier à accomplir et des primitives de sécurité utilisées pour implémenter cette exigence.

Dans la présentation, il y a des histoires de véritables engagements de magasins qui se sont engagés dans cette voie et qui se sont terriblement trompés. Dans certains cas, mon évaluation a révélé que rien de ce que je peux faire avec la sécurité de votre middleware ne peut surmonter les faiblesses inhérentes à lautorité de certification interne. Nimporte qui aux États-Unis doit se rendre compte quil achète probablement des services à au moins un des fournisseurs auxquels la présentation fait référence. Ce sont les banques, les coopératives de crédit, les assureurs maladie, les détaillants et plus encore.

Étant donné que pour que les recommandations soient « correctes », le répondant doit faire des hypothèses majeures sur vos profils de risque acceptables, et pour vous de faire des hypothèses majeures sur le degré dalignement de vos idées et en phase, la proposition même est risquée à première vue. Dans la plupart de ces cas, lévaluation de la pertinence des didacticiels fournis a plus à voir avec la présentation quavec le niveau effectif de sécurité résultant du respect de leurs procédures. Sil est bien organisé et clairement articulé, cela importe BEAUCOUP plus que son efficacité. Nous choisissons la feuille de triche canonique qui nous semble .

Pour ces raisons, je ne crois pas qu’un expert crédible fournirait des informations « correctes et à jour openssl.cnf files », mais pourrait au mieux fournir un processus dévaluation pour mieux évaluer les exigences et le risque acceptable. Puisque vous pariez lentreprise sur le résultat, aucun expert crédible ne le ferait en dehors de la protection de un contrat. Toutes les recommandations que vous obtiendrez devraient, presque par définition, provenir dun expert crédible in . Bonne chance.

Commentaires

  • Même pour un intranet pour les ressources internes? Vous pouvez également indiquer que la présentation est la vôtre.
  •  » Même pour un intranet pour les ressources internes?  » Surtout pour lintranet depuis que ‘ s où la plupart des violations de données se produisent.  » Vous pouvez également indiquer que la présentation est la vôtre.  » Je pensais lavoir fait en décrivant mon expérience des évaluations, mais ce point est pris. Je ‘ lai mis à jour.

Réponse

Suivez ces étapes instructions pour configurer une autorité de certification Windows . Puisque vous émettez des certificats clients, sachez que les hachages SHA2 ne sont pas pris en charge sur XP.

La réponse simple est de:

  1. Installer AD
  2. Installer une autorité de certification dentreprise sur le contrôleur de domaine
  3. Modifier le modèle de certificat pour émettre des certificats dutilisateur final (définir lautorisation pour les utilisateurs de sauto-inscrire ou accéder à une page Web)
  4. Déployez la clé publique du certificat racine sur tous les serveurs qui valident les utilisateurs
  5. Si les utilisateurs sont sur AD, utilisez GPO pour activer linscription automatique

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *