CSRデコーダー

認証局(CA)がTLS証明書に署名する前に、証明書署名要求(CSR)を提出します。CSRはbase64形式のデータの塊で、証明書に記載したいサブジェクトとあなたの公開鍵、そして対応する秘密鍵を保有していることを示す署名が含まれます。このデコーダーはPEM形式のCSRを受け取り、サブジェクトの各フィールドと公開鍵のパラメータを表示するので、CAに提出する前にコモンネーム、組織、鍵長を確認できます。

CSRのデコード方法

  1. 1

    CSRを貼り付ける

    `-----BEGIN CERTIFICATE REQUEST-----` と `-----END CERTIFICATE REQUEST-----` のマーカーを含めます。空白は許容されます。

  2. 2

    デコーダーを実行

    要求が解析され、サブジェクトの各フィールドと公開鍵が読み取られます。

  3. 3

    出力を確認

    コモンネームや組織などのサブジェクトのフィールドと、鍵のアルゴリズム・鍵長を確認します。

  4. 4

    結果に応じて対応

    サブジェクトや鍵に誤りがあれば、CAに提出する前にCSRを再生成します。

デコーダーが表示する内容

CSRはASN.1構造(PKCS #10)です。デコーダーはそこから次の2つを読み取ります:

  • サブジェクト:要求された識別名(Distinguished Name)の各フィールド。通常は国(C)、組織(O)、組織単位(OU)、所在地(L)、都道府県(ST)、コモンネーム(CN)です。
  • 公開鍵:アルゴリズム(RSA、EC、DSA)と鍵長(ビット数)。

CSRに含まれる署名は、提出者が対応する秘密鍵を保有していることをCAに証明するものです。このデコーダーは署名を表示しません。署名の検証はCAが要求を処理する際に行います。

出力例

一般的なドメイン証明書の要求では、出力は次のようになります:

Subject: commonName=www.example.com, organizationName=Example Inc., countryName=US
Key bits: 2048
Key type: RSA

サブジェクトの属性名の正確な表記は、要求の生成方法によって異なります。

確認するフィールド

  • コモンネーム(CN):主要なホスト名にすべきです。最近のブラウザはCNを無視してSANのみを参照しますが、多くのCAは依然として有効なCNを要求します。
  • サブジェクト代替名(SAN):証明書が保護するすべてのホスト名とワイルドカードを列挙します。ブラウザはCNではなくSANと照合します。
  • 国(C):完全な名称ではなく、2文字のISOコード(US、GB、DE)です。CAは誤ったコードを拒否します。
  • 鍵サイズ:RSA 2048が下限で、より高いセキュリティには3072または4096を使います。ECDSA P-256は優れた現代的な代替案で、より小さな証明書を生成します。
  • 署名アルゴリズム:SHA-256以上。SHA-1はとうに非推奨であり、拒否されます。

サブジェクト代替名(SAN)について

デコーダーは要求のサブジェクトを表示しますが、SAN拡張は表示しません。ブラウザはCNではなくSANと証明書を照合するため、証明書に追加のホスト名が必要な場合は、要求を生成するときに含めてください。例:

openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

デコーダーがCSRを解析できない場合

最も多い原因は、PEMブロックの欠落や破損です:

  • テキストが切れている:両方のマーカーを含む完全なブロックを貼り直してください。
  • 改行が挿入されている:生成されたままの形でブロックを貼り付けてください。
  • 内容が違う:誤って公開鍵や証明書、秘密鍵を貼り付けた場合、CSRとして解析できません。

対応する鍵の生成

CSRは常に秘密鍵とともに生成されます。典型的なコマンド:

openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr

またはECDSAの場合:

openssl req -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes -keyout example.key -out example.csr

秘密鍵は厳重に保護してください。漏洩した場合は証明書を失効させる必要があります。

よくある質問

CSRには公開情報(公開鍵、サブジェクト、SAN)と署名のみが含まれており、CAと共有したりデコーダーに貼り付けたりしても安全です。秘密に保つべきなのは、対応する秘密鍵です。

できません。このデコーダーは BEGIN/END CERTIFICATE REQUEST マーカー付きのテキスト形式PEMを対象としています。バイナリのDER要求を使う場合は、まずPEMに変換してください。例:openssl req -in request.der -inform DER -out request.pem

いいえ。ほとんどの公的CA(Let’s Encrypt、DigiCert、Sectigo)はCNとSANのみを要求し、ドメイン認証証明書ではO、OU、L、ST、Cを無視します。組織認証証明書や拡張認証証明書では、これらのフィールドが別途検証されます。

ほとんどの場合、貼り付けたテキストが切れていたり改行が挿入されたりしたか、CSRの代わりに鍵や証明書を貼り付けたためです。2つのマーカーの間の完全なブロックを貼り直してください。

関連ツール