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 :

Types de SSL Pinning

Différentes approches de pinning :

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 :

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.