mkcert : Générer facilement des certificats SSL valides en local

jeudi 3 juillet 2025

Lorsque vous développez un site web en local, notamment avec Docker ou Laravel, vous avez probablement déjà rencontré des messages d’alerte dans votre navigateur à propos de connexions non sécurisées, de certificats invalides ou d’erreurs du type SSL_ERROR_RX_RECORD_TOO_LONG.

Pour remédier à cela de manière propre, l’outil mkcert est votre meilleur allié.

Qu’est-ce que mkcert ?

mkcert est un utilitaire simple et rapide qui vous permet de générer des certificats SSL valides pour des environnements de développement locaux.

Il crée :

  • une autorité de certification (CA) locale,
  • des certificats signés pour les domaines personnalisés que vous utilisez (ex : mon-site.test, localhost, api.local.dev, etc.),
  • et il ajoute automatiquement cette CA au trousseau système et à Firefox pour éviter les messages d’alerte.

En résumé, avec mkcert, vous pouvez utiliser HTTPS localement, sans messages de sécurité de votre navigateur.

⚙️ Installation avec Homebrew (macOS)

Sur macOS, l’installation est très simple grâce à Homebrew :

brew install mkcert
brew install nss # (facultatif, mais nécessaire si vous utilisez Firefox)

Ensuite, initialisez la CA locale :

mkcert -install

Si Firefox était ouvert au moment du mkcert -install, pensez à le fermer et relancer la commande pour que la CA soit bien intégrée.

️Générer un certificat local

Une fois mkcert installé et initialisé, vous pouvez générer des certificats pour n’importe quel nom de domaine local :

mkcert mon-site.test

Cela crée deux fichiers dans le répertoire courant :

    mon-site.test.pem → le certificat public

    mon-site.test-key.pem → la clé privée

Ces fichiers peuvent ensuite être utilisés dans votre serveur Apache, Nginx ou Docker.

Exemple avec Docker + Apache

Si vous avez un projet local en Docker avec Apache, vous pouvez :

  • monter les certificats dans le conteneur
  • activer SSL dans votre configuration Apache
  • et accéder à votre site via https://mon-site.test:PORT
# Exemple de volume dans docker-compose.yml
volumes:
  - ./certs:/etc/apache2/ssl

# Exemple dans la conf Apache
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/mon-site.test.pem
SSLCertificateKeyFile /etc/apache2/ssl/mon-site.test-key.pem

✅ Avantages de mkcert

  • Pas besoin d’acheter un certificat ou de passer par Let’s Encrypt en local
  • Plus de messages de sécurité « connexion non sécurisée »
  • Idéal pour tester des fonctionnalités HTTPS (comme les cookies secure, les redirections HTTPS, les APIs CORS, etc.)
  • Compatible macOS, Linux et Windows

Tags: Apache , Docker , https