CSR とは?
証明書署名要求(CSR)は、認証局(CA)が TLS 証明書やコード署名証明書を発行するために必要な小さな PKCS#10 文書です。鍵ペアの公開鍵、CA に証明してもらいたい身元情報(Subject)、DNS 名や IP アドレスなどの追加識別子(Subject Alternative Names、略して SAN)をまとめ、対応する秘密鍵で署名したものです。
このツールは Web Crypto API と @peculiar/x509 を使用して、CSR をすべてブラウザー内で構築します。鍵やリクエストに関するデータがサーバーに送信されることはありません。
このツールを使う場面
- Let’s Encrypt・DigiCert・ZeroSSL・Sectigo などの公的 CA から TLS 証明書を申請する際に、CA のワークフローで独自の CSR の貼り付けを求められる場合。
- ACME ベース・smallstep・EJBCA・AD CS などの内部認証局向けの CSR を、ホスト型フォームを信頼せずに生成する場合。
- 既存の PKCS#8 PEM 鍵をインポートして新しい CSR のみに署名することで、同じ秘密鍵のまま証明書を再発行する場合。
フォームの入力方法
- 鍵ソース — 新しい鍵ペアを作成するには「新しく生成」を、暗号化されていない PKCS#8 PEM 鍵を貼り付けるには「既存をインポート」を選択します。暗号化済みの鍵、レガシー形式の
RSA PRIVATE KEY、およびEC PRIVATE KEYブロックは受け付けられません。使用前にopenssl pkcs8 -topk8 -nocryptで変換してください。 - アルゴリズム — RSA は最も広い互換性を持つデフォルトの選択肢です。ECDSA は署名サイズが小さく、最新の CA や TLS クライアントで広くサポートされています。
- Subject — ほとんどの公的 CA は Common Name 以外のフィールドを無視し、DNS の SAN リストを正式な識別子として扱いますが、プライベート CA では完全な DN が必要な場合があります。
- SAN エントリ — 証明書でカバーしたいホスト名・IP アドレス・メールアドレス・URI を列挙します。1 行に 1 エントリ、またはカンマ区切りで入力してください。
注意事項
- CSR とともに表示される秘密鍵はローカルで生成され、ブラウザー外には送信されません。タブを閉じる前に必ず保存してください。対応する秘密鍵がなければ、署名済み証明書は使用できません。
- 公的 CA では、Common Name(または少なくとも 1 つの SAN エントリ)が検証可能な DNS 名である必要があります。IP アドレスの SAN は主に内部証明書向けです。
- 生成された秘密鍵は暗号化されていません。保管前にパスフレーズを追加する必要がある場合は、
openssl pkcs8 -in key.pem -topk8 -out key-enc.pemを使用してください。 - サポートされているのは RSA(2048/3072/4096)と ECDSA(P-256/P-384/P-521)のみです。EdDSA はブラウザーおよび CA 間での対応が依然として一貫していないため、意図的に除外されています。