mkcert で作成した証明書の取り扱いについて 🔐
mkcert はローカル開発環境で簡単に HTTPS 環境を構築できる便利なツールですが、その証明書の取り扱いには注意が必要です。この記事では、mkcert 証明書の適切な使用方法と、やってはいけないことについて解説します。
mkcert 証明書を外部公開しても良いか?
結論:推奨されません
mkcert で作成した証明書を外部に公開するのは推奨されません。以下の理由があります。
主な問題点
1. 信頼性の欠如
mkcert が作成する証明書は自己署名証明書であり、一般のブラウザやクライアントからは信頼されません。外部ユーザーがアクセスすると、セキュリティ警告画面が表示されてしまいます 🚨
2. mkcert の設計思想
mkcert はローカル開発環境専用のツールとして設計されています。公式ドキュメントでも、本番環境での使用は想定されていません。
3. セキュリティ上の懸念
- 証明書の管理が適切でない可能性
- 秘密鍵の取り扱いがローカル開発向けの設定
- 証明書の更新や失効管理の仕組みが不十分
外部公開する場合の推奨方法
外部にサービスを公開する場合は、以下のような正規の証明書を使用してください ✅
- Let's Encrypt: 無料で自動更新可能な SSL/TLS 証明書
- 商用 CA: DigiCert、GlobalSign などの有料証明書
- クラウドプロバイダーの証明書サービス: AWS Certificate Manager、Google Managed Certificates など
これらは公的に信頼された CA(認証局)が発行するため、ユーザーのブラウザで警告なしに動作します。
GitHub にコードをアップロードしても良いか?
mkcert で作成した証明書ファイルを GitHub にアップロードすることについては、慎重に判断する必要があります。
アップロードして良いもの・悪いもの
❌ 絶対にアップロードしてはいけないもの
- 秘密鍵ファイル(
.key、.pemなど) - ルート CA 証明書の秘密鍵
- これらが含まれる設定ファイル
秘密鍵が流出すると、第三者がその証明書を悪用して中間者攻撃などを行う可能性があります 🔓
⚠️ 注意が必要なもの
- 公開鍵証明書(
.crt、.pemなど)
技術的には公開鍵なので漏れても直接的な被害は少ないですが、以下の理由で避けるべきです。
- 不要なファイルをリポジトリに含めることになる
- 開発環境の構成情報が外部に露出する
- セキュリティのベストプラクティスに反する
推奨される対応
1. .gitignore に証明書ファイルを追加
リポジトリに証明書ファイルが含まれないよう、.gitignore に以下を追加してください。
*.key
*.pem
*.crt
*.cert
2. 既にコミットしてしまった場合
- Git 履歴から完全に削除する(
git filter-branchやBFG Repo-Cleanerを使用) - 該当の証明書を再生成する
3. README に手順を記載
証明書ファイル自体はリポジトリに含めず、各開発者が自分の環境で生成する方式を推奨します。README には以下のような記載を追加すると良いでしょう 📝
## 開発環境のセットアップ
### HTTPS 証明書の生成
1. mkcert をインストール
2. 以下のコマンドで証明書を生成
mkcert localhost 127.0.0.1
3. 生成された証明書ファイルを適切な場所に配置
まとめ
- mkcert 証明書はローカル開発専用。外部公開には使用しない 🏠
- 秘密鍵ファイルは絶対に GitHub にアップロードしない 🔒
- 証明書ファイルは
.gitignoreで除外し、各開発者が自分で生成する - 本番環境では Let's Encrypt などの正規の証明書を使用する 🌐
適切な証明書管理を行い、安全な開発環境を維持しましょう!