自己署名証明書 じこしょめいしょうめいしょ
自己署名オレオレ証明書開発環境TLS証明書エラー内部利用
自己署名証明書について教えて
簡単に言うとこんな感じ!
第三者機関(CA)の署名なしに、自分で自分の証明書を作ったものだよ。「俺が俺であることは俺が保証する」という通称「オレオレ証明書」。開発・テスト環境では便利だけど、本番のWebサイトには使えないんだ!
自己署名証明書とは
自己署名証明書(Self-Signed Certificate) とは、信頼できる第三者機関(CA)の署名を受けずに、証明書の発行者と利用者が同一である証明書のことです。発行者が自分自身の秘密鍵で署名するため、「オレオレ証明書」とも呼ばれます。
通常のサーバー証明書はCAが発行するため、ブラウザは事前に登録されたルートCAをたどって信頼を検証できます。しかし自己署名証明書には信頼チェーンがないため、ブラウザは「この証明書は信頼できません」というエラーを表示します。
用途としては以下が主です。
- 開発・テスト環境でのHTTPS動作確認
- 社内システム(ブラウザに自社ルートCAを追加登録した上で使用)
- mTLSでのクライアント証明書(相互認証の内部用途)
- Kubernetes内部通信などコンテナ環境での暗号化
自己署名証明書とCA署名証明書の比較
| 比較項目 | 自己署名証明書 | CA署名証明書 |
|---|---|---|
| 発行コスト | 無料(opensslコマンドで即時生成可能) | 有料〜無料(Let’s Encrypt) |
| ブラウザの信頼 | デフォルトでエラー表示 | 信頼済み(自動で緑錠前) |
| 発行の手間 | 非常に簡単 | CA審査が必要 |
| 公開Webサイトへの利用 | 不可(ユーザー離脱を招く) | 必須 |
| 社内・開発環境 | 適切(ルートCA登録との組み合わせで) | 使えるが過剰な場合も |
歴史と背景
- 1990年代:SSL普及初期、CA証明書が高価だったため自己署名が多用される
- 2000年代:フィッシングサイトが自己署名を悪用。ブラウザの警告が強化される
- 2010年代:Let’s Encryptの登場により無償CA証明書が普及し、本番サイトへの自己署名利用がほぼ不要になる
- 現在:開発環境専用ツール(mkcert等)が登場し、ローカル開発でのHTTPSが容易になる
opensslで自己署名証明書を作成する例
# 秘密鍵の生成
openssl genrsa -out server.key 2048
# CSR(証明書署名要求)の生成
openssl req -new -key server.key -out server.csr
# 自己署名証明書の生成(有効期限365日)
openssl x509 -req -days 365 -in server.csr \
-signkey server.key -out server.crt
また mkcert というツールを使うと、ローカルのルートCAを自動登録した上で自己署名証明書を生成できるため、開発環境でのブラウザ警告を回避できます。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 5280 | X.509証明書フォーマット(自己署名を含む) |
| RFC 8555 | ACME(CA証明書の自動発行プロトコル:Let’s Encrypt等) |