Question

Je construis une application et je prévois d'utiliser OpenSSL pour sécuriser les transferts de données.

Je prévois de demander au client de valider le certificat du serveur. Je ne comprends pas comment sécuriser le certificat du serveur. Je souhaite chiffrer le certificat du serveur contenant la clé privée, mais je ne souhaite utiliser aucune clé codée en dur pour ce chiffrement.

Quelles sont certaines des pratiques courantes suivies par les applications utilisant SSL?

Était-ce utile?

La solution

Juste pour nous assurer que notre terminologie est claire, un " certificat SSL " dans le langage courant est vraiment composé de deux composants:

  • Un certificat public
  • une clé privée

Le composant de certificat public est signé par l’autorité de certification choisie (autorité de certification), après quoi il peut être distribué librement. Il n’est pas nécessaire de le sécuriser ni de le chiffrer. En effet, il sera envoyé aux clients qui se connectent à votre serveur dans le cadre de la négociation SSL.

Le composant de clé privée doit être protégé. Dans la majorité des cas, cela est simplement stocké sous forme de fichier crypté sur le serveur. Les solutions haut de gamme utilisent des solutions dédiées "inviolables". matériel de cryptage (HSM - modules de sécurité matérielle) pour stocker la clé privée. Celles-ci vont des solutions basées sur les cartes à puce aux appliances multi-clés activées en réseau avec des contrôles m / n, etc. Il existe des risques (pour ne pas mentionner les coûts) associés aux HSM que je ne vais pas aborder ici.

De nombreuses applications conservent simplement la clé privée sur le disque. Il existe plusieurs options pour sécuriser le fichier de clé:

  • Faites confiance à la sécurité des autorisations du système et des fichiers (par exemple, ne chiffrez pas la clé privée). Par exemple, la plupart des démons ssh font cela.
  • Utilisez le mécanisme que votre serveur fournit pour chiffrer le fichier - le chiffrement protégé par mot de passe est une fonctionnalité standard utilisée sur la plupart des serveurs Web. (Si vous lancez le vôtre avec l’API OpenSSL, choisissez l’un des formats de clé natifs évidents.)

Comme toujours, il existe un compromis en matière de sécurité. En particulier, si vous utilisez un chiffrement protégé par mot de passe sur le fichier de clé privée et que vous rencontrez un redémarrage inattendu de l'application (par exemple, une panne de courant), il faudra que quelqu'un soit disponible pour fournir le mot de passe à l'application lors du redémarrage. Stocker le mot de passe dans un fichier qui est lu par les scripts d'initialisation du système (comme encouragé par au moins deux fournisseurs de serveurs Web) n'ajoute pas grand-chose en termes de sécurité réelle. Il est difficile de recommander de laisser le fichier de clé privée non crypté, mais si vous êtes le seul administrateur / technicien dans un petit magasin, vous devez absolument envisager ce qui pourrait se produire si le serveur redémarre lorsque vous n'êtes pas disponible, ainsi que les coûts que cela peut représenter pour votre entreprise. .

Autres conseils

Je ne sais pas trop ce que vous essayez de demander. le certificat de serveur vous est envoyé, le client; vous validez le certificat en vérifiant sa signature (utilisez SHA-1 et non pas MD5, MD5 a été fissuré). La clé que vous avez de l'autorité de certification est le côté public; L'AC et le détenteur de certificat de serveur gardent leurs clés privées pour eux-mêmes. Vous pouvez valider le certificat car la clé publique est suffisante pour déchiffrer un message qui a été chiffré avec la clé privée. Vous n’avez donc pas à vous soucier de garder le certificat crypté.

Consultez le article de Wikipedia sur SSL / TLS .

  

Je ne comprends pas comment sécuriser le certificat du serveur.

Il n'est pas nécessaire de sécuriser le certificat du serveur. C'est un document public

  

Je souhaite chiffrer le certificat du serveur contenant la clé privée

Le certificat du serveur ne contient pas la clé privée.

  

mais je ne souhaite utiliser aucune clé codée en dur pour ce cryptage.

Vous n'avez pas besoin de chiffrer. Le seul actif de serveur que vous devez protéger est sa clé privée, qui est entièrement distincte de son certificat. Dans le cas d’OpenSSL, il peut même s'agir d’un fichier différent.

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