ツールの紹介
証明書署名要求(CSR)は、SSL/TLS 証明書を取得する最初の手順です。Web サイトで HTTPS を設定するには、まず CSR を生成し、署名のために認証局(CA)へ提出します。
オンラインの CSR 生成ツールは、この作業を簡単かつ安全にします。
- すべてローカルで処理: CSR の生成はブラウザ内で行われ、秘密鍵が端末の外へ出ることはありません
- 複数のアルゴリズムに対応: RSA(2048/3072/4096 ビット)と ECDSA(P-256/P-384/P-521)の署名アルゴリズムに対応します
- 柔軟な設定: 複数のドメイン(SAN)やワイルドカードドメインを追加できます
- インストール不要: OpenSSL などのコマンドラインツールを入れず、ブラウザで CSR を生成できます
セキュリティに関する注意
この CSR 生成ツールでは、秘密鍵と CSR のどちらもブラウザ内で生成され、サーバーへアップロードされません。オフラインでも使えます。
CSR が必要になるとき
次の場合に CSR を生成します。
- 新しい SSL 証明書を購入する: ドメインに初めて SSL/TLS 証明書を申請するとき
- 期限が近い証明書を更新する: 既存の証明書の期限が近く、作り直す必要があるとき
- ドメイン情報を変更する: 証明書のドメイン名や組織情報を変えるとき
- 鍵の漏えいが疑われる: 秘密鍵が漏れた可能性があるときは、すぐに新しい鍵ペアと CSR を生成します
CSR のハッシュアルゴリズムの選び方
ハッシュアルゴリズムは、証明書のデジタル署名を作るために使います。適切なアルゴリズムを選ぶことは、証明書の安全性に直結します。この CSR 生成ツールは、主要な 3 つのハッシュアルゴリズムに対応しています。
SHA-256(推奨)
SHA-256 は現在もっとも広く使われ、安全性と性能のバランスが取れています。
- 安全性: 256 ビットの出力で、既知の攻撃に対して十分な強度があります
- 互換性: 近年のブラウザとオペレーティングシステムが対応しています
- 性能: 計算が速く、ほとんどの用途に適します
- 推奨: 99% の場合はこれを選んでください
SHA-384
SHA-384 はより高い安全性を持ちますが、計算コストが少し増えます。
- 安全性: 384 ビットの出力で、余裕のある安全性があります
- 用途: 金融や医療など、セキュリティ要件が特に高い分野
- 互換性: 近年のシステムが対応しています
SHA-512
SHA-512 は、この中でもっとも高い安全性を持ちます。
- 安全性: 512 ビットの出力で、もっとも強い保証になります
- 性能への影響: 計算と検証が相対的に遅くなります
- 用途: 特別なセキュリティ要件がある、ごく限られた場面
推奨
ほとんどの利用者には SHA-256 を推奨します。特別なコンプライアンス要件がなければ、SHA-256 で十分な安全性があります。
CSR の署名アルゴリズムの選び方
オンラインで CSR を生成するときは、署名アルゴリズムを選びます。主な選択肢は RSA と ECDSA の 2 つです。
RSA アルゴリズム
RSA は、もっとも伝統的で広く使われている署名アルゴリズムです。
利点:
- 広い互換性: 古いシステムを含め、ほぼすべての端末とブラウザが対応しています
- 成熟して安定: 数十年の実用で確かめられています
- CA の対応: すべての認証局が対応しています
欠点:
- 鍵が大きい: 安全性のために、通常は 2048 ビットまたは 4096 ビットの鍵が必要です
- 性能の負荷: 暗号化と復号の処理が相対的に遅くなります
- 証明書が大きい: 生成される証明書ファイルが大きくなります
推奨する鍵長:
- 2048 ビット: 標準的な選択です。安全性と性能のバランスがよく、ほとんどの用途に適します
- 4096 ビット: 安全性は高くなりますが、性能への影響が見えます。高いセキュリティ要件向けです
ECDSA アルゴリズム
ECDSA(Elliptic Curve Digital Signature Algorithm)は、より新しい選択肢です。
利点:
- 鍵が小さい: 256 ビットの ECDSA 鍵は、3072 ビットの RSA 鍵と同等の安全性を持ちます
- 高い性能: 署名の生成と検証が速くなります
- 帯域に優しい: 証明書が小さく、転送が速くなります
- モバイル向き: リソースの少ない端末に適します
欠点:
- 互換性: 一部の古いシステムは対応していないことがあります(例: Windows XP、Android 4.x 以前)
- CA の対応: 対応していない認証局や、追加料金がかかる認証局があります
推奨する曲線:
- P-256(secp256r1): 標準的な選択で、広く対応されています
- P-384(secp384r1): より高い安全性です
どれを選ぶか
推奨: RSA 2048
古い端末を使う人を含めてすべての利用者をサポートする必要があるなら、RSA 2048 ビットがもっとも無難です。オンラインの CSR 生成ツールで、RSA の証明書署名要求を簡単に作れます。
推奨: ECDSA P-256
モバイルアプリは、性能と帯域の影響を受けやすい傾向があります。ECDSA はサイズが小さく性能が高いため、適しています。近年のモバイル端末は ECDSA に対応しています。
推奨: RSA 2048 以上
企業環境では、さまざまな OS のバージョンをサポートする必要があることがあります。その場合、RSA の互換性が有利です。特別なセキュリティ要件があれば RSA 4096 を選びます。
推奨: ECDSA P-256
API サービスは近年のクライアントから呼ばれることが多いため、ECDSA の性能を活かし、TLS ハンドシェイクの時間を短縮できます。
OpenSSL で CSR を生成する
便利なオンラインの CSR 生成ツールを提供していますが、コマンドラインでの生成方法も知っておくと役立ちます。OpenSSL は、もっとも一般的なコマンドラインツールです。
RSA の証明書署名要求
# Generate 2048-bit RSA private key and CSR
openssl req -new -newkey rsa:2048 -nodes \
-keyout domain.key \
-out domain.csr
# Generate 4096-bit RSA private key and CSR
openssl req -new -newkey rsa:4096 -nodes \
-keyout domain.key \
-out domain.csr実行後、次の情報の入力を求められます。
- Country Name(国コード。例: US)
- State or Province(州または都道府県)
- Locality Name(市区町村)
- Organization Name(組織名)
- Organizational Unit(部門)
- Common Name(ドメイン。例: autossl.dev)
- Email Address(任意)
まず設定ファイル csr.conf を作ります。
# Request configuration section
[req]
default_bits = 2048 # RSA key size in bits
prompt = no # Disable interactive prompts
default_md = sha256 # Hash algorithm for signature
distinguished_name = dn # Reference to DN section below
req_extensions = req_ext # Reference to extensions section
# Distinguished Name (certificate subject information)
[dn]
C = US # Country code
ST = California # State or Province
L = San Francisco # Locality (city)
O = Example Company # Organization name
CN = autossl.dev # Common Name (primary domain)
# Request extensions (additional certificate attributes)
[req_ext]
subjectAltName = @alt_names # Reference to alternative names section
# Subject Alternative Names (additional domains for this certificate)
[alt_names]
DNS.1 = autossl.dev # Primary domain
DNS.2 = www.autossl.dev # Subdomain with www
DNS.3 = *.autossl.dev # Wildcard for all subdomainsそのあと CSR を生成します。
openssl req -new -nodes \
-newkey rsa:2048 \
-keyout domain.key \
-out domain.csr \
-config csr.confopenssl req -new -newkey rsa:2048 -nodes \
-keyout domain.key -out domain.csr \
-subj "/C=US/ST=California/L=San Francisco/O=Example Company/CN=autossl.dev"注: この方法では SAN(サブジェクト代替名)を追加できません。
ECDSA の証明書署名要求
# Generate ECDSA private key using P-256 curve
openssl ecparam -genkey -name prime256v1 -out domain.key
# Using P-384 curve
openssl ecparam -genkey -name secp384r1 -out domain.key
# Generate CSR based on private key
openssl req -new -key domain.key -out domain.csr生成した CSR を確認する
CSR を生成したあと、次のコマンドで内容を確認します。
# View detailed CSR information
openssl req -text -noout -in domain.csr
# Verify CSR signature
openssl req -verify -in domain.csr
# Extract domain information from CSR
openssl req -noout -subject -in domain.csr秘密鍵の保護
生成された秘密鍵ファイル(domain.key など)は安全に保管し、他人に渡さないでください。ファイル権限を厳しくすることを推奨します。
chmod 600 domain.key
よくある質問
CSR と秘密鍵の関係
CSR を生成すると、実際には鍵ペア、つまり秘密鍵と公開鍵が作られます。CSR には公開鍵と身元情報が含まれ、秘密鍵は秘匿する必要があります。CA は CSR の情報をもとに証明書を発行し、その証明書は対応する秘密鍵と組み合わせてのみ使えます。
同じ CSR を再利用できるか
技術的には可能ですが、推奨しません。新しい証明書を申請するたびに、新しい鍵ペアと CSR を生成するのが望ましいやり方です。証明書の期限が切れたときや、CA を変えるなど再発行が必要なときは、新しい証明書署名要求を生成してください。
CSR を提出したあとに残すもの
秘密鍵ファイルは必ず保管してください。証明書が発行されたあと、SSL/TLS を設定するには秘密鍵が必要です。秘密鍵を失うと、証明書があっても使えず、再申請が必要になります。
オンラインツールとコマンドラインの違い
機能上の違いはありません。この CSR 生成ツールは Web Crypto API でブラウザ内に鍵を作り、OpenSSL の結果と互換性があります。オンラインツールの利点は、ソフトウェアのインストールやコマンドの暗記が不要で、直感的に使えることです。
ベストプラクティス
- 鍵長の選択: RSA は少なくとも 2048 ビット、ECDSA は P-256 以上を使います
- 証明書の定期的な更新: 期限切れを待たず、30 日前の更新を推奨します
- SHA-256 を使う: 特別な要件がなければ、SHA-256 が最適な選択です
- SAN を追加する: autossl.dev と www.autossl.dev のように複数のドメインがある場合は、CSR の生成時にすべてのドメインを追加します
- 秘密鍵を保護する: 厳しいファイル権限を使い、暗号化して保管することも検討します
- 秘密鍵をバックアップする: 安全な場所にバックアップし、バックアップ自体も適切に保護します
CSR 生成ツールを使い、Web サイト向けの証明書署名要求をすばやく、安全に生成してください。