Саздание сертификатов SSL (TLS) для сайта
Генерация корневого приватного ключа
openssl genpkey -algorithm RSA -out rootCA.key
-out используется для вывода ключа в файл
Использование дополнительных параметров шифрования, AES 128 бит и дополнительный пароль шифрования:
openssl genpkey -algorithm RSA -out rootCA.key -aes-128-cbc -pass pass:test
Список алгоритмов шифрования можно получить командой:
man enc
По умолчанию при генерации ключа используется 2048 бит, это число можно изменить дополнительным параметром команды:
openssl genpkey -algorithm RSA -out rootCA.key -pkeyopt rsa_keygen_bits:4096
Создание самодписанного корневого сертификата CA:
Данный сертификат (rootCA.crt) генерируется на основе уже созданного корневого ключа: rootCA.key
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
Созданный сертификат нужен для всех узлов, которые хотят доверять CA.
Последнюю команду необходимо выполнять для каждого клиента которому нужен доверенный сертификат CA.
Создать приватный ключ для сертификата web-сервера
openssl genpkey -algorithm RSA -out mydomain.com.key
Создать файл csr-запрос на получение сертификата и подпись CA
На основе приватного(закрытого) ключа можно отправить Certificate Signing Request (CSR) - запрос на подпись в центр сертификации. Этот файл содержит публичный(открытый) ключ подписанный соответствующим ему закрытым ключом и другую информацию узла(отличительные признаки).
Создание CSR требует вводить в интерактивном режиме отличительные признаки сертификата(домен, страна, почта ...). Чтобы не оставлять поле пустым, необходимо оставить хотябы точку.
При генерации CSR необходимо указать common name доменное имя для которого создается сертификат.
openssl req -new -key mydomain.com.key -out mydomain.com.csr
Следующая команда не требует ввода, так отличительные признаки передаются в команде
openssl req -new -sha256 -key mydomain.com.key -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:mydomain.com,DNS:www.mydomain.com")) -out mydomain.com.csr
Проверка запроса csr
Может понадобиться перед отправкой на подпись в CA
openssl req -in mydomain.com.csr -noout -text
Создание сертификата
1.У меня есть CA(центр сертификации или самоподписанный сертификат) и его корневой приватный ключ(закрытый ключ)
2.Есть приватный ключ сервера и созданный на его основе csr(mydomain.com) файл.
Отправить запрос созданный csr на подпись в CA и получить .crt для сервера.
openssl x509 -req -in mydomain.com.csr -CA ../rootCA.crt -CAkey ../rootCA.key -CAcreateserial -out mydomain.com.crt -days 500 -sha256
Подытожим
rootCA.key — закрытый(приватный ключ) CA(Центра Сертификации)
rootCA.crt — открытый(публичный) корневой сертификат CA(Центра Сертификации) — должен быть установлен на всех клиентах
mydomain.com.key — приватный ключ веб-сайта, храниться на web-сервере.
mydomain.com.csr — запрос(csr) на подпись сертификата
mydomain.com.crt — публичный сертификат сайта
Продолжение
Проверить валидность сертификата для домена можно здесь: https://www.ssllabs.com/ssltest/analyze.html?d=netbash.ru
Создание CSR из существующего сертификата
openssl x509 -req -in mydomain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out mydomain.com.crt -days 500 -sha256






