OpenSSL, само подписанный сертификат SSL, запрос CSR

VMP

OpenSSL and error in reading openssl.conf file
take care of the right extension (openssl.cfg not cnf)!

Как выпустить самоподписанный SSL сертификат и заставить ваш браузер доверять ему

Как сгенерировать самоподписанный сертификат
1. Откройте командную строку (cmd) от имени администратора и перейдите в ранее созданную папку.
2. Выполните следующую команду:
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
3. где:-x509 — уточнение, что нам нужен именно самоподписанный сертификат;
-newkey — автоматическое создание ключа сертификата;
-days — срок действия сертификата в днях;
-keyout — путь (если указан) и имя файла ключа;
-out — путь (если указан) и имя файла сертификата.
4. Последовательно введите: код страны, её название, город, название компании, название отдела, FQDN сервера или ваше имя и адрес электронной почты.
5. сгенерируются 2 файла:
certificate.crt — сам сертификат;
privateKey.key — файл ключа.

openssl genrsa -out private.key 2048
openssl req -new -key private.key -out domain.csr -sha256
ручками вводить данные

Как создать CSR и приватный ключ

openssl req -batch -new -newkey rsa:2048 -nodes -keyout cert.key -subj “/C=RU/ST= Novgorod /L= Novgorod /O= droid /OU= droid /emailAddress=*****@gmail.com/CN= one.ru” -out cert.csr

openssl genrsa -des3 -out private.key 2048
openssl req -new -key private.key -out domain.csr

set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg

take care of the right extension (openssl.cfg not cnf)!

#
# OpenSSL configuration file.
#

# Establish working directory.

dir = .

[ ca ]
default_ca = CA_default

[ CA_default ]
serial = $dir/serial
database = $dir/certindex.txt
new_certs_dir = $dir/certs
certificate = $dir/cacert.pem
private_key = $dir/private/cakey.pem
default_days = 365
default_md = md5
preserve = no
email_in_dn = no
nameopt = default_ca
certopt = default_ca
policy = policy_match

[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[ req ]
default_bits = 1024 # Size of keys
default_keyfile = key.pem # name of generated keys
default_md = md5 # message digest algorithm
string_mask = nombstr # permitted characters
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]
# Variable name Prompt string
#————————- ———————————-
0.organizationName = Organization Name (company)
organizationalUnitName = Organizational Unit Name (department, division)
emailAddress = Email Address
emailAddress_max = 40
localityName = Locality Name (city, district)
stateOrProvinceName = State or Province Name (full name)
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
commonName = Common Name (hostname, IP, or your name)
commonName_max = 64

# Default values for the above, for consistency and less typing.
# Variable name Value
#———————— ——————————
0.organizationName_default = My Company
localityName_default = My Town
stateOrProvinceName_default = State or Providence
countryName_default = US

[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always

[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash

Создание (генерация) приватного ключа pKey
openssl genrsa -des3 -out adgrafics.key 2048
Создание (генерация) запроса CSR
openssl req -new -key adgrafics.key -out adgrafics.csr
Создание Приватного ключа и запроса на сертификат
openssl req -out adgrafics.csr -new -newkey rsa:2048 -nodes -keyout adgrafics.key

При создании CSR вам необходимо заполнить следующиеполя Country, State (or Province), Locality (or City), Organization, Organizational Unit, и Common Name.

Country — двузначный код страны. например UA
State and Locality полное название области
Organization Name полное название организации
Organizational Unit отдел, департамент организации
Common Name — Fully Qualified Domain Name (FQDN) доменное имя

Если вы генерите запрос CSR для Wildcard сертификатов необходимо перед доменом поставить *. (например: *.adgrafics.net). Символ подстановки (*) может принимать любое имя, в котором нет символа «точка»

После создания CSR вы сможете просто скопировать его и отправить для дальнейшей работы по выпуску SSL сертификата
Сгенерировать запрос подписи сертификата (CSR) для существующего закрытого ключа
openssl req -out adgrafics.csr -key adgrafics.key -new
Создать запрос на подпись сертификата на основе существующего сертификата
openssl x509 -x509toreq -in adgrafics.crt -out adgrafics.csr -signkey adgrafics.key
Снятие пароль passphrase в private key
openssl rsa -in private.key -out private.key .nopass
Проверка запрос CSR для подписи сертификата
openssl req -text -noout -verify -in adgrafics.csr
Проверка закрытого ключа
openssl rsa -in adgrafics.key -check
Для того что бы сгенерировать запрос сертификата для нескольких доменов нужно отредактировать файл /etc/ssl/openssl.cnf:

Раскомментировать строку: req_extensions=v3_req
найти секцию [ v3_req ] — вот такие строки:
basicConstraints=CA:FALSE
keyUsage=nonRepudiation, digitalSignature, keyEncipherment

под ними нужно прописать следующую конструкцию:
subjectAltName=@alt_names
[alt_names]
DNS.1=www.%your_website%.com
DNS.2=www.%your_website%.org
DNS.3=%your_website%.org

Массив alt_names будет содержать альтернативные имена доменов SAN включеные в сертификат.

Установка и настройка OpenSSL

Генерация CSR (cоздание запроса на сертификат)
OpenSSL при создании и работе с запросом CSR
Все про OpenSSL за 5 минут
Генерация CSR запроса. Что такое CSR?

Проверка файлов SSL сертификата
Как установить SSL – сертификат и настроить https на сайте? Источник: https://irinabuzikova.com/kak-ustanovit-ssl-sertifikat-i-nastroit-https-na-sayte/