CSR(証明書署名要求) - 暗号化全般

暗号化全般 | IT用語集

CSR(証明書署名要求)とは

CSR(Certificate Signing Request / 証明書署名要求)は、SSL/TLS証明書を認証局(CA)から取得するために提出するファイルです。CSRには公開鍵と組織情報が含まれており、CAはこれを検証した上で証明書を発行します。

CSRに含まれる情報:

  • 公開鍵:サーバーの公開鍵
  • Common Name (CN):証明書を使用するドメイン名
  • Organization (O):組織名
  • Organizational Unit (OU):部門名
  • Locality (L):市区町村
  • State (ST):都道府県
  • Country (C):国コード(JPなど)

CSRの生成方法

基本的なCSR生成

# 秘密鍵とCSRを同時に生成
openssl req -new -newkey rsa:2048 -nodes \
  -keyout server.key -out server.csr

# 対話形式での入力
# Country Name (2 letter code) [AU]: JP
# State or Province Name (full name) [Some-State]: Tokyo
# Locality Name (eg, city) []: Shibuya
# Organization Name (eg, company) []: Example Inc.
# Organizational Unit Name (eg, section) []: IT Department
# Common Name (e.g. server FQDN) []: www.example.com
# Email Address []: admin@example.com

非対話形式でのCSR生成

# -subj オプションで一括指定
openssl req -new -newkey rsa:2048 -nodes \
  -keyout server.key -out server.csr \
  -subj "/C=JP/ST=Tokyo/L=Shibuya/O=Example Inc./CN=www.example.com"

SAN(Subject Alternative Name)付きCSR

# 設定ファイル(san.cnf)
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[dn]
C = JP
ST = Tokyo
L = Shibuya
O = Example Inc.
CN = www.example.com

[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com
DNS.2 = example.com
DNS.3 = api.example.com

# CSR生成
openssl req -new -key server.key -out server.csr -config san.cnf

AIエンジニアとしての実体験

AIサービスのAPI基盤を構築する際、ワイルドカード証明書のCSRを生成しました。サブドメインが動的に増えるマルチテナントアーキテクチャでは、ワイルドカード証明書が効率的です。

# ワイルドカード証明書用CSR
openssl req -new -newkey rsa:2048 -nodes \
  -keyout wildcard.key -out wildcard.csr \
  -subj "/C=JP/ST=Tokyo/O=AI Company/CN=*.example.com"

CSRの内容確認

# CSRの内容を人間が読める形式で表示
openssl req -in server.csr -noout -text

# CSRの内容確認(要約)
openssl req -in server.csr -noout -subject

# CSRに含まれる公開鍵の確認
openssl req -in server.csr -noout -pubkey

自社サーバー運用への応用

秘密鍵の安全な管理

CSR生成時に作成される秘密鍵は、サーバーに残しておき、絶対に外部に漏らさないようにします。認証局に送るのはCSRのみです。

# 秘密鍵のパーミッション設定
chmod 600 server.key
chown root:root server.key

鍵とCSRの一致確認

# 秘密鍵のmodulus
openssl rsa -noout -modulus -in server.key | openssl md5

# CSRのmodulus
openssl req -noout -modulus -in server.csr | openssl md5

# 発行された証明書のmodulus
openssl x509 -noout -modulus -in server.crt | openssl md5

# 3つのMD5ハッシュが一致すれば、鍵と証明書が対応している

関連ブログ記事

最新動向(2026年)

ACMEプロトコルによる自動化

Let's Encryptなどで使用されるACMEプロトコルでは、CSRの生成から証明書の取得まで自動化されています。手動でのCSR管理は減少傾向にありますが、EV証明書など一部では依然必要です。

楕円曲線暗号(ECC)の普及

# ECDSA鍵でのCSR生成
openssl ecparam -genkey -name prime256v1 -out server-ec.key
openssl req -new -key server-ec.key -out server-ec.csr \
  -subj "/C=JP/ST=Tokyo/O=Example Inc./CN=www.example.com"

トラブル事例と対策

⚠️ 秘密鍵の紛失

問題:発行された証明書があっても秘密鍵がないと使用できない

対策:CSR生成時に秘密鍵を安全にバックアップ。紛失した場合は証明書を再発行

⚠️ CNの間違い

問題:Common Nameにタイポがあると証明書が使えない

対策:CSR生成前にドメイン名を二重確認。openssl req -in server.csr -noout -subjectで確認

権威あるリソース

関連用語

この用語についてもっと詳しく

CSRに関するご質問や証明書取得のご相談など、お気軽にお問い合わせください。