Question

Je travaille actuellement sur un projet où j'ai créé un certificat CA et un couple de certs enfant que CA cert. Les certificats vont être utilisés pour protéger les communications inter-serveur dans une configuration SAMLv2 donc je vais avoir un cert pour le fournisseur d'identité et un cert pour le fournisseur de services. L'utilisateur / navigateur ne va pas valider les certs il est donc seulement les serveurs qui ont besoin de faire confiance à mon autorité de certification personnalisée Mon arbre cert ressemble à ceci:

  • CustomRootCACert
    • CustomIdentityProviderCert
    • CustomServiceProviderCert

Maintenant, je l'ai entendu beaucoup de gens dire qu'il est mauvais d'utiliser un certificat fait maison dans la production. Mais quand je demande pourquoi, les gens habituellement juste marmonne quelque chose sur la sécurité, mais ne vont jamais dans les détails. Y a-t-il des raisons techniques de ne pas utiliser mes propres certs dans la production? Je ne peux pas penser à tout ... Bien sûr, je me rends compte que si je perds le contrôle de ma racine cert quelqu'un pourrait commencer à créer toutes sortes de certificats. Mais dans ce cas, ils devraient également installer les certificats sur mes serveurs et configurer l'application SAML pour les utiliser. Alors seulement ils commencent à générer des demandes de SAML fausses et des réponses à mes demandes.

Si c'est le seul problème, cette solution (en utilisant certs faits maison dans la production) serait encore mieux que la configuration de la connexion que nous avons aujourd'hui.

Était-ce utile?

La solution

Demandez-vous ce qu'est un certificat prouve.

Si vous obtenez un certificat délivré par une autorité de certification de bonne réputation, il prouve que le titulaire du certificat a vérifié leur identité à ce CA, à leurs normes de preuve.

Si vous obtenez un certificat délivré par une autorité de certification ad-hoc, il prouve que quelqu'un sait comment faire des certificats.

Si vous contrôlez les deux extrémités de la conversation, je pense qu'il est bien d'avoir votre propre autorité de certification privée dans le but. Vous faites confiance à votre propre autorité de certification Vous pouvez probablement faire de ce fait très sûr (en gardant la clé privée CA hors ligne endroit sûr et faire signer un exercice sneakernet).

La difficulté serait si vous aviez besoin de persuader quelqu'un d'autre à faire confiance à votre CA. Pourquoi devraient-ils? Vous auriez besoin de les convaincre qu'il était sûr de le faire, et ils auraient les frais généraux d'administration d'ajouter votre certificat CA à leurs clients.

Autres conseils

Puisque vous utilisez uniquement le certificat pour protéger le trafic réseau et d'authentifier les utilisateurs / ordinateurs puis il semble que vous avez une utilisation légitime pour l'utilisation MakeCert.exe.

Je sens qu'il ya une chose intéressante à mentionner. Une fois que vous passez un certain temps de travail avec l'interface MakeCert.exe vous pourriez envisager d'utiliser une racine autonome Certificate Server à la place.

Tenez compte de ces points:

  • (presque) toutes les versions de Windows Server incluent les services de certificats serveur gratuitement
  • autonome de Windows CA Server est extrêmement simple à installer et à configurer
  • de Windows CA serveur autonome peut être installé sur une machine virtuelle et sous tension / hors tension chaque fois que vous avez besoin d'émettre un certificat supplémentaire
  • une machine virtuelle fonctionnant sous Windows autonome CA Server peut être exécuté à l'aide très peu de mémoire (ex. 256mb)
  • de Windows CA serveur autonome comprend une interface d'inscription sur le web agréable et propre pour simplifier demander des certificats.
  • vérification des LCR peut être utilisé ou non, en fonction de vos besoins.

Dans le passé, j'ai commencé avec SelfSSL.exe et finalement déplacé à MakeCert.exe pour générer un certificat racine puis émis mes certificats clients. Mais après avoir lutté avec la syntaxe et toujours avoir à se rappeler où je mets que le certificat racine je suis passé à l'aide d'une racine autonome CA dans une machine virtuelle.

Si les certificats ne sont passés autour en interne, entre vos propres serveurs (et non utilisés par le client, d'une façon ou l'autre) - alors il est parfaitement acceptable d'utiliser votre propre autorité de certification interne
Cependant, une suggestion - n'avez pas votre autorité de certification racine publier votre certs fournisseur. Au lieu de cela, utilisez votre CA racine pour créer un CA intermédiaire - utiliser alors que pour délivrer des certificats de fournisseur. Cela vous aidera à plus long terme, lorsque vous devez commencer à gérer l'expiration du certificat, l'extension du système / infrastructure, les listes de révocation, etc.

Il n'y a pas de problème réel avec l'aide d'un certificat auto-signé en usage privé, qui est utilisé lorsque vous contrôlez tous les systèmes qui ont besoin de faire confiance au certificat racine homebrew.

Vous installez manuellement votre cert racine sur chacun des systèmes qui ont besoin de confiance.

Vous pouvez le faire dans la production aussi bien pour l'utilisation du navigateur - par exemple au sein d'une organisation où l'autorité de certification racine peut être déployé via la méthode logiciel de distrubution - il n'y a aucune raison d'aller à la dépense de payer une autorité de certification que Microsoft arrive faire confiance.

[modifier] En ce qui concerne la question de secruity est l'un des contenant la clé privée de votre certificat racine, aussi longtemps que vous pouvez vous assurer que les séjours privés alors vous pouvez valider un certificat ce racine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top