Comment garder la clé SSL de notre site Web confidentielle?

12

Je souhaite garder confidentielle notre clé SSL pour notre site Web. Il est stocké sur 2 clés USB, une dans un coffre-fort et une que je garde en sécurité. Et puis je suis le seul à l'appliquer au serveur web pour qu'il soit totalement sécurisé.

Sauf...

Sur IIS au moins, vous pouvez exporter la clé. Ainsi, toute personne qui est administrateur peut alors obtenir une copie de la clé. Y a-t-il un moyen de contourner cela? Ou par définition, tous les administrateurs ont-ils un accès complet à toutes les clés?

Mise à jour: j'ai des administrateurs système en lesquels j'ai entièrement confiance. Ce qui a conduit à cela est l'un d'entre eux a démissionné (ils ont eu une heure de trajet vers notre entreprise, un trajet de 5 minutes vers la nouvelle). Bien que je fasse confiance à cette personne, tout comme nous désactivons son compte Active Directory lorsque quelqu'un part, je pensais que nous devrions avoir un moyen de nous assurer qu'ils ne conservent pas la possibilité d'utiliser notre SSL.

Et ce qui m'a le plus frappé, c'est si je suis le seul à l'avoir. Notre certificat expire en janvier, c'était donc le moment de changer la pratique si nous le pouvions. Sur la base des réponses, il semble que nous ne pouvons pas.

Cela mène donc à une nouvelle question - quand quelqu'un qui a accès au certificat quitte, est-ce une pratique courante d'obtenir un nouveau certificat et de faire révoquer le certificat existant. Ou si la personne qui est partie est digne de confiance, alors continuons-nous avec le certificat que nous avons?

David Thielen
la source
5
Même si le serveur que vous utilisez ne vous a pas permis de l'exporter, il doit tout de même être en mémoire et peut donc être extrait. La seule option que je vois utilise un module cryptographique matériel, comme une carte à puce, trois seulement un avec la clé, mais toute personne ayant un accès physique à la machine pourrait le voler. Vous pouvez toujours le révoquer s'il est volé.
user2313067
27
Si vous ne pouvez pas faire confiance à vos administrateurs, vous avez un problème de ressources humaines.
Michael Hampton
5
Pourquoi avez-vous copié la clé sur ces supports USB en premier lieu? La clé secrète utilisée avec SSL n'a pas besoin d'être ailleurs que sur le serveur où elle est utilisée. (Il peut bien sûr être inclus dans les copies de sauvegarde du serveur, mais il est moins important de sauvegarder cette clé que les autres données sur le serveur, car vous pouvez toujours générer une nouvelle clé secrète et la faire signer comme vous l'avez fait avec le ancien.)
kasperd
Je ne suis pas un expert dans ce domaine, mais les modules de chiffrement matériel n'existent-ils pas qui contiennent une clé qui reste à l'intérieur et seules les demandes de signature entrent et les signatures sortent? Souder ou coller un dans le serveur pourrait être la solution.
matega

Réponses:

26

Une personne disposant d'un accès administratif (ou souvent même physique) à un serveur va pouvoir extraire la clé privée. Que ce soit par l'exportation, le reniflement de la mémoire ou toute autre astuce de ce type.

Vos administrateurs ont accès aux clés privées de vos serveurs Web. Acceptez cela comme un fait et contournez cela. Si vos administrateurs système ne sont pas fiables, vous aurez peut-être besoin de meilleurs administrateurs système ou d'au moins moins d'administrateurs système ayant accès aux serveurs Web. S'il s'agit d'une paranoïa de sécurité de gestion, il peut y avoir un problème plus profond concernant leur capacité à faire confiance à un administrateur système.

Cela ne veut pas dire que vous devez simplement laisser tout le monde avoir accès à la clé privée. Il devrait toujours y avoir un besoin d'accès avant que l'accès ne soit accordé. Dans cet esprit, allez-vous prendre des mesures extrêmes pour vous assurer qu'un administrateur système avec le contrôle total d'un site Web ne peut pas exporter la clé privée, mais peut toujours manipuler le site Web lui-même de nombreuses façons presque introuvables? Nous sommes de retour à la confiance ici, et je pense que c'est le cœur du problème qui doit être résolu.

Hyppy
la source
2
+1 pour "Vos administrateurs ont accès aux clés privées de vos serveurs Web. Acceptez cela comme un fait et contournez cela". Questions à l'effet de "Comment empêcher les personnes disposant de droits d'administrateur de faire X?" indiquer un problème plus profond pour moi. Soit trop méfiant, soit trop laxiste dans l'octroi des droits d'administrateur.
Brandon
2
J'ai mis à jour pourquoi j'ai demandé. Ce n'est pas une préoccupation avec les administrateurs système, c'est une volonté de suivre les meilleures pratiques.
David Thielen
11

Lorsque vous importez la clé, vous avez la possibilité de la marquer comme non exportable. Cela vous empêchera d'utiliser IIS ou le certificat MMC pour l'exporter. Au moins, cela rend un peu plus difficile.

Cependant, s'ils ont un compte d'administrateur sur la machine ou y ont un accès physique - ils pourront toujours obtenir la clé par d'autres moyens.

Subvention
la source
1
Ce n'est vraiment pas beaucoup plus difficile. isecpartners.com/tools/application-security/jailbreak.aspx
Greg Askew
0

C'est là qu'une «autorité de certification intermédiaire» peut vous aider.

La "Root CA" dans cet exemple ci-dessous appartient à une société SSL et non à vous.

Vous n'avez pas de contrôle direct sur les clés créées par l'autorité de certification racine, donc si une clé signée par l'autorité de certification racine est compromise, vous devez les parcourir pour la révoquer.

Mais:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key for site

Si vous placez une autre autorité de certification au milieu et que votre certificat SSL acheté signe votre propre certificat d'autorité de certification au lieu de signer directement votre certificat de serveur, vous pouvez conserver le contrôle des certificats de serveur ci-dessous et émettre des certificats de révocation ou faire quoi que ce soit d'autre si les choses en dessous sont compromises. .

Vous conservez la clé privée de l'AC intermédiaire pour vous et les administrateurs n'ont pas besoin de la voir.

Vous pouvez également le faire:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key 1 for site
   +-Server Key 2 for site 
   +-Server Key 3 for site

Vous pouvez vous préparer au compromis et générer des certificats à l'avance, afin de pouvoir basculer rapidement en cas de révocation d'une clé individuelle. Les administrateurs n'obtiennent pas de clés pour 2 ou 3 jusqu'à un compromis de 1. Vous pouvez mettre un avis sur votre site à propos de ce schéma, et cela signifierait également à vos administrateurs que vous êtes prêt en cas de compromis et que l'affaire drôle sur leur end ne détruira pas votre site.

LawrenceC
la source
1
Cela ne provoquerait-il pas des avertissements SSL pour les utilisateurs d'une autorité de certification non fiable?
ceejayoz
1
Je suppose que cela ne fonctionnerait bien que si vous pouvez installer l'autorité de certification en tant que certificat de confiance sur le navigateur de l'utilisateur, comme dans un paramètre intranet d'entreprise. Je savais que quelque chose n'allait pas avec mon plan brillant. :(
LawrenceC
0

Il existe de nombreux articles qui suggèrent de stocker les clés privées ailleurs que sur le serveur, mais ces clés privées sont destinées aux certificats de signature de code . Imaginez que vous avez les clés sur un ordinateur hors ligne auquel vous seul avez accès, certains logiciels sont écrits, vous obtenez la clé privée du serveur hors ligne, signez le code, puis vous n'avez plus besoin de la clé privée jusqu'à ce que vous deviez en signer code à nouveau.

La meilleure solution a toujours été et continuera de stocker votre clé hors ligne. La façon dont vous le faites dépend entièrement de vous (il existe quelques méthodes), n'oubliez pas de le garder bien gardé dans un coffre-fort de bureau ou quelque part qu'il n'est pas facile pour quelqu'un de mettre en poche.

En savoir plus sur: https://www.thesslstore.com/blog/heres-what-happens-when-your-private-key-gets-compromised/

En revanche, les certificats SSL sont destinés aux sites Web pour permettre la communication HTTPS: la clé privée est nécessaire lors de chaque prise de contact par le serveur Web. Par conséquent, le stockage hors ligne ne fonctionnera pas.

CodageYoshi
la source