SSL Pinning Mobile - Implémentation et Sécurité

Renforcez la sécurité de vos applications mobiles avec le certificate pinning.

Le SSL Pinning (ou Certificate Pinning) est une technique de sécurité qui associe une application mobile à un certificat SSL spécifique ou à sa clé publique. Cela empêche les attaques de type man-in-the-middle même si l'attaquant possède un certificat valide émis par une autorité de certification de confiance.

Sans pinning, une application fait confiance à tout certificat signé par une CA dans le trust store du système. Avec le pinning, l'application ne fait confiance qu'au certificat ou à la clé publique que vous avez spécifiquement configuré.

MoniTao vous aide à surveiller vos certificats et vous alerte en cas de changement, ce qui est crucial si vous utilisez le SSL Pinning car vous devrez mettre à jour vos applications lors des renouvellements.

Qu'est-ce que le SSL Pinning ?

Comprendre le concept du certificate pinning :

  • Trust store vs Pinning : normalement, une application fait confiance à toutes les CA du système. Le pinning restreint cette confiance à un certificat ou clé spécifique.
  • Protection MITM : même si un attaquant obtient un certificat valide (via compromission d'une CA ou social engineering), l'application le rejettera.
  • Pin certificate vs Pin public key : vous pouvez pinner le certificat entier ou seulement la clé publique. Pinner la clé publique permet de renouveler le certificat sans changer le pin.
  • Backup pins : configurez toujours des pins de backup pour éviter de bloquer vos utilisateurs en cas de renouvellement de certificat.

Types de SSL Pinning

Différentes approches de pinning :

  • Certificate Pinning : pin le certificat exact. Simple mais nécessite une mise à jour de l'app à chaque renouvellement de certificat.
  • Public Key Pinning : pin seulement la clé publique. Permet de renouveler le certificat tant que la clé reste la même.
  • Intermediate/Root Pinning : pin le certificat intermédiaire ou root. Plus flexible mais moins sécurisé car la CA peut émettre d'autres certificats.
  • SPKI Hash Pinning : pin le hash SHA-256 de la Subject Public Key Info. La méthode la plus courante et recommandée.

Implémentation du SSL Pinning

Étapes pour implémenter le pinning :

  1. Extraire le pin : obtenez le hash SPKI de votre certificat ou clé publique.
  2. Configurer l'application : ajoutez le pin dans votre application (iOS: Info.plist, Android: network-security-config).
  3. Ajouter des backup pins : incluez au moins un pin de backup pour éviter les lockouts lors des renouvellements.
  4. Tester rigoureusement : testez que l'application refuse les certificats non pinnés et accepte les bons.

Exemples d'Implémentation

Code pour différentes plateformes :

# Extraire le hash SPKI d'un certificat
openssl s_client -connect api.monsite.com:443 2>/dev/null | \
  openssl x509 -pubkey -noout | \
  openssl pkey -pubin -outform DER | \
  openssl dgst -sha256 -binary | base64

# Résultat: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

# Android (network_security_config.xml)
<network-security-config>
  <domain-config>
    <domain includeSubdomains="true">api.monsite.com</domain>
    <pin-set expiration="2025-01-01">
      <pin digest="SHA-256">AAAA...=</pin>
      <pin digest="SHA-256">BBBB...=</pin> <!-- backup -->
    </pin-set>
  </domain-config>
</network-security-config>

Le hash SPKI est ajouté à la configuration de sécurité réseau de l'application. Incluez toujours un backup pin.

Bonnes Pratiques

Conseils pour un SSL Pinning réussi :

  • Toujours avoir des backup pins : sans backup, un renouvellement de certificat bloquera tous vos utilisateurs jusqu'à ce qu'ils mettent à jour l'app.
  • Pin la clé publique, pas le certificat : cela permet de renouveler le certificat sans changer le pin, tant que vous gardez la même clé.
  • Planifiez les renouvellements : coordonnez le renouvellement du certificat avec une mise à jour de l'application pour ajouter le nouveau pin.
  • Surveillez vos certificats : utilisez MoniTao pour être alerté avant l'expiration et avoir le temps de préparer le nouveau pin.

Checklist SSL Pinning

  • Hash SPKI extrait correctement
  • Backup pin configuré
  • Configuration testée avec certificat valide
  • Test de rejet avec certificat invalide
  • Processus de mise à jour documenté
  • Monitoring de l'expiration configuré

Questions Fréquentes

Le SSL Pinning est-il obligatoire ?

Non, mais il est fortement recommandé pour les applications traitant des données sensibles (bancaires, santé, etc.).

Que se passe-t-il si je change de certificat sans mettre à jour l'app ?

L'application refusera de se connecter à votre serveur. C'est pourquoi les backup pins sont essentiels.

Comment gérer le pinning avec Let's Encrypt ?

Let's Encrypt renouvelle les certificats souvent. Pin la clé publique et gardez la même clé lors des renouvellements, ou pin le certificat intermédiaire.

Le pinning fonctionne-t-il avec les CDN ?

C'est complexe car les CDN peuvent avoir plusieurs certificats. Consultez la documentation de votre CDN.

Comment débugger les erreurs de pinning ?

Utilisez Charles Proxy ou Wireshark pour capturer le trafic et vérifier quel certificat est présenté.

MoniTao peut-il aider avec le SSL Pinning ?

MoniTao surveille vos certificats et vous alerte avant leur expiration, vous donnant le temps de préparer les nouveaux pins.

Sécurisez Vos Applications Mobiles

Le SSL Pinning est une couche de sécurité essentielle pour les applications mobiles traitant des données sensibles. Bien implémenté, il protège contre les attaques MITM même sophistiquées.

Avec MoniTao, surveillez vos certificats et anticipez les renouvellements pour maintenir une expérience utilisateur fluide tout en gardant une sécurité optimale.

Prêt à dormir sur vos deux oreilles ?

Commencez gratuitement, sans carte bancaire.