CSR
CSR (Certificate Signing Request) — файл-запрос на выпуск сертификата. Содержит публичный ключ + подписанные им данные (CN, SAN, организация). CA принимает CSR, проверяет что ты владеешь ключом, и выпускает сертификат.
Формат
PKCS #10 (RFC 2986). Обычно в PEM-обёртке: -----BEGIN CERTIFICATE REQUEST-----.
Что внутри
- Subject: CN, O, OU, C, ST, L
- Public Key: RSA/ECDSA/Ed25519
- SAN (Subject Alternative Names): DNS-имена, IP
- Signature: подпись CSR приватным ключом (доказательство владения)
Генерация openssl
# RSA
openssl req -new -newkey rsa:2048 -nodes -keyout key.pem -out csr.pem \
-subj "/CN=example.com/O=Acme"
# ECDSA P-256
openssl ecparam -genkey -name prime256v1 -out key.pem
openssl req -new -key key.pem -out csr.pem -subj "/CN=example.com"
# С SAN через конфиг
cat > san.cnf <<EOF
[req]
distinguished_name=req
req_extensions=v3
[req_extensions]
subjectAltName=DNS:example.com,DNS:www.example.com,DNS:api.example.com
EOF
openssl req -new -key key.pem -out csr.pem -subj "/CN=example.com" -config san.cnf
Просмотр
openssl req -in csr.pem -noout -text
ACME без CSR
Клиенты типа certbot/acme.sh генерируют CSR автоматически. Ручной CSR нужен только для commercial CA или EV/OV.