web-dev-qa-db-fra.com

que faites-vous lorsqu'un certificat SSL expire et que votre application utilise l'épinglage SSL?

J'ai initialement posté cette question sur StackOverflow, mais republiée ici en raison du manque de réponses.


J'essaie de décider si c'est une bonne idée de faire l'épinglage SSL dans mon jeu iOS qui utilise un serveur pour fournir du contenu. Il semble que ce soit important, mais la seule chose qui me dérange vraiment, c'est la pensée du jour où le certificat expire. Étant donné que le certificat doit être inclus dans l'ensemble d'applications, cela signifie qu'il y aura un point où les utilisateurs seront obligés de mettre à niveau. En fonction de ce que Apple fait à ce moment-là, cela peut signifier qu'ils ne peuvent pas mettre à niveau en raison de contraintes de périphérique/os. Donc, je suis vraiment nerveux à l'idée de mettre cela.

Quelqu'un a-t-il une expérience avec l'épinglage SSL et les certificats expirés, ce qui en fait une chose transparente et sans interruption pour vos utilisateurs?

17
patrick

Votre application peut stocker plusieurs certificats dans sa liste de broches. La procédure de modification du certificat serait alors:

  1. Quelque temps avant l'expiration du certificat, publiez une nouvelle version de votre application avec un certificat de remplacement dans la liste des broches, ainsi que le certificat d'origine
  2. lorsque l'ancien certificat expire, remplacez-le sur le serveur - l'application devrait alors continuer à fonctionner car le nouveau certificat sera déjà dans la liste des broches
  3. Quelque temps après l'expiration du certificat, publiez une nouvelle version de votre application supprimant l'ancien certificat

Cela devrait réduire le risque d'interruption de service mais ne le supprime pas complètement, car certains utilisateurs peuvent ne pas installer la nouvelle version de votre application.

En outre, cela peut ne pas vous aider dans les cas où vous devez changer le certificat de serveur à la hâte (par exemple, vous pensez que le certificat peut avoir été compromis).

J'ai également entendu parler de personnes qui ont autorisé leurs applications à mettre à jour leur liste de broches lors de la connexion sur des réseaux "plus fiables". Par exemple, le WiFi serait moins fiable que la 3G/4G car il est moins cher et plus facile de faire un homme au milieu attaque sur le WiFi.

Dans l'ensemble et d'un point de vue opérationnel, je pense que l'épinglage de certificats pose plus de problèmes qu'il n'en résout, à moins que vos données soient particulièrement sensibles et que la confidentialité/l'intégrité l'emporte largement sur la disponibilité dans votre liste de préoccupations. (Je me rends compte que je pourrais obtenir des downvotes pour cette vue).

9
Mike Goodwin

Vous signez un nouveau certificat avec votre clé de signature intermédiaire .
Plus précisément, ce qui est "inclus dans le package d'application" est votre clé de vérification de la signature racine .

1
user49075

Je dois supposer que vous décrivez l'épinglage de clé publique (HPKP) tel que documenté à https://developer.mozilla.org/en/docs/Web/Security/Public_Key_Pinning (Les activités liées à TLS sont assez rapides se déplaçant ces jours-ci, alors peut-être qu'il y a un autre épinglage SSL en cours d'expérimentation).

Comme décrit dans la réponse de Ricky, vous pouvez épingler la clé publique des certificats intermédiaires (ou même racine), et/ou vous pouvez également épingler la clé "suivante" de l'autorité de certification. (Par exemple, vous pouvez épingler l'autorité de certification actuelle et l'autorité de certification intermédiaire letsencrypt). Le danger avec cela est évidemment qu'il n'y a aucune garantie que leur prochain certificat délivré utilisera cette clé spécifique du tout! Et en épinglant toute autre clé, vous faites confiance à ce que ce ne sera pas celui qui délivrera un certificat pour votre domaine à quelqu'un d'autre - les risques ne doivent être pesés que par vous. (Certains a été mordu par l'autorité de certification qui passe à une nouvelle clé juste avant le renouvellement).

Il existe une autre option, car la broche concerne en fait la clé publique, si vous réémettez le certificat avec la même clé publique, le nouveau certificat aura le même hachage de broche. De la même manière, vous pouvez préparer la nouvelle broche avec le nouveau CSR que vous avez déjà généré, mais pas encore envoyé à une autorité de certification.

0
chexum