Ответ
Для получения TLS/SSL сертификата от доверенного центра сертификации (CA) необходимо сгенерировать и отправить Запрос на подпись сертификата (Certificate Signing Request - CSR), содержащий ключевую информацию.
1. Генерация приватного ключа и CSR: Сначала создается приватный ключ, затем на его основе — CSR.
# Генерация 2048-битного приватного ключа RSA
openssl genrsa -out example.key 2048
# Создание CSR на основе приватного ключа
openssl req -new -key example.key -out example.csr
2. Ключевые поля, которые необходимо указать при создании CSR:
Во время выполнения команды openssl req вас запросят:
- Common Name (CN): Самое важное поле. Должно точно соответствовать доменному имени, для которого выдается сертификат (например,
www.example.com). Для wildcard-сертификата укажите*.example.com. - Organization (O): Юридическое название вашей компании.
- Organizational Unit (OU): Подразделение (например, IT Department).
- Locality (L): Город.
- State/Province (ST): Область, штат или регион.
- Country (C): Двухбуквенный код страны (например, RU, US).
3. Subject Alternative Names (SANs):
Для сертификатов, покрывающих несколько доменов, необходимо указать SANs. Это можно сделать через конфигурационный файл.
Создайте файл example.cnf:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[dn]
C = RU
ST = Moscow Oblast
L = Moscow
O = MyCompany LLC
OU = DevOps
CN = myservice.example.com
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = myservice.example.com
DNS.2 = api.example.com
DNS.3 = www.example.com
Сгенерируйте CSR с SANs:
openssl req -new -key example.key -out example.csr -config example.cnf
4. Процесс получения в CA:
- Вы отправляете содержимое файла
example.csr(публичную часть) в CA (например, Let's Encrypt, DigiCert). - CA проводит верификацию (Domain Validation - DV, Organization Validation - OV, Extended Validation - EV). Для DV нужно подтвердить владение доменом (через DNS-запись или HTTP-файл).
- После проверки CA выдает подписанный сертификат (обычно в формате
.crtили.pem).
DevOps-практика: Используйте автоматизацию (например, certbot для Let's Encrypt) для генерации и обновления сертификатов, чтобы избежать истечения срока действия.