piapia123
ja

自己署名証明書の生成

エンコード

処理はすべてブラウザ内で完結します。データは送信されません

出力

ローカル開発や社内テストの HTTPS 用に、RSA 鍵ペアと自己署名 X.509 証明書を生成します。すべてブラウザ内で完結し、秘密鍵は `crypto.subtle.generateKey` が生成してこの出力の中にだけ存在し、サーバーを一切通りません。⚠️ 2点はっきりさせておきます:自己署名証明書はどのブラウザも OS も信頼しません。外部に公開すれば訪問者に警告ページが出ます。正式な環境では信頼された CA の証明書を使ってください。また、秘密鍵をリポジトリにコミットしないでください —— それはあなたの身元そのものです。証明書には SAN 拡張が付き、CN が書き込まれます。これは重要で、Chrome はバージョン 58 以降コモンネームを完全に無視し、SAN だけで照合するため、CN しかない証明書は現代のブラウザでは接続できません。

機能

  • ローカルで RSA 鍵ペアと自己署名 X.509 v3 証明書を生成
  • SAN(subjectAltName)拡張付き —— 現代のブラウザはこれだけを見ます
  • 鍵長は 1024 / 2048 / 3072 / 4096 ビット、有効期間は1日〜10年
  • 署名ハッシュは SHA-256(互換性が最も高い)/ SHA-384 / SHA-512 から選択
  • 秘密鍵と証明書は標準 PEM で出力し、nginx・Node・Python でそのまま使えます
  • 証明書は ASN.1 DER を手組みで構築(ブラウザは証明書を発行できません)。OpenSSL で解析可能なことを検証済み
  • 秘密鍵はブラウザの外に出ません —— 送信も記録もされません

使い方

  1. コモンネームを入力します(ローカル開発なら `localhost`)
  2. 必要に応じて組織名・有効期間・鍵長・署名ハッシュを設定します
  3. 「実行」を押します —— 1024 / 2048 ビットは 0.2 秒ほど、3072 / 4096 ビットは数秒かかります(フリーズではありません)
  4. 秘密鍵と証明書の2つの PEM をコピーし、それぞれファイルに保存します

よくある質問

ブラウザの警告が消えないのはなぜですか?
自己署名証明書はどの信頼ストアにも入っていないからです。信頼チェーンの根は OS とブラウザに組み込まれた CA リストで、自己署名証明書は自分自身が CA になるためチェーンが繋がらず、警告は避けられません。ローカルで消すには、この証明書をシステムの「信頼されたルート証明機関」に手動でインポートします(macOS はキーチェーン、Windows は証明書マネージャー、Linux はディストリビューションごと)—— ただし自分の開発機だけで行い、他人のマシンには入れないでください.。
なぜ SAN が必要なのですか?CN だけではだめですか?
それは 2017 年より前の話です。Chrome 58(2017年)以降、コモンネームは完全に無視され、ホスト名は subjectAltName とのみ照合されます —— RFC 6125 が以前から要求していたやり方です。`CN=localhost` だけで SAN の無い証明書は、現在の主要ブラウザでは「名前が一致しません」と判定され、エラーは証明書が悪いとしか言わないため、署名を間違えたのだと誤解しがちです。本ツールは CN を SAN にも書き込みます。
生成された秘密鍵は安全ですか?
鍵はブラウザの `crypto.subtle.generateKey` が生成し、OS の暗号学的に安全な乱数源を使うため、鍵自体の強度は十分です。リスクは生成ではなくどこに置くかにあります:Git にコミットしない(一度コミットすると履歴に永遠に残り、後で消しても無意味です)、コンテナイメージに焼き込まない、チャットに貼らない。開発機ならいつでも削除して再生成できます —— 数秒で済みます。
鍵長と署名ハッシュはどれを選ぶべきですか?
ローカル開発なら 2048 ビット + SHA-256 で十分です:互換性が最も高く、生成も速い。1024 ビットはすでに安全とは見なされておらず、接続が必須の旧クライアントにだけ使ってください。3072 / 4096 ビットは将来の分解能力により強い一方、生成に数秒かかり、ハンドシェイクも遅くなります。ハッシュは SHA-256 がほぼすべてのクライアントで通ります。SHA-384 / SHA-512 はダイジェストがより長く理論上は強固ですが、一部の古いクライアントが対応していないことがあります —— 迷ったら SHA-256 のままで。

関連ツール