Мне нужен SSL-сертификат для HTTPS-сервера. Я хотел бы предложить выбор между самозаверяющими сертификатами и сертификатами, подписанными ЦС.
Я могу сгенерировать самоподписанный SSL-сертификат с помощью следующих команд OpenSSL:
openssl req -newkey rsa:512 -x509 -days 365 -nodes -out cert.pem -keyout cert.pem
openssl dhparam -inform pem -in cert.pem -outform pem -out dhparam.pem 512
cat dhparam.pem >> cert.pem
Если я хочу получить сертификат, подписанный ЦС, я могу сгенерировать CSR (запрос на подпись сертификата):
openssl req -newkey rsa:512 -nodes -out cert.csr -keyout cert.key
И отправьте в один ЦС. А потом ? Мне интересно, что ЦС отправляет обратно: только сертификат или сертификат и параметры DH, поскольку они используются при согласовании между браузером и сервером?
[был спросил на StackOverflow]
РЕДАКТИРОВАТЬ: кажется, что центры сертификации доставляют только сертификат, что означает, что мне нужно объединить
Может кто-нибудь подтвердить?
Да, центр сертификации принимает ваш запрос на подпись сертификата и генерирует подписанный сертификат, который вы затем используете на своем веб-сайте. Параметры DH не относятся к сертификату, поэтому у CA нет причин вмешиваться в них и, очевидно, отправлять ваш ключ в кто угодно плохая идея.
Сертификат - это просто цифровая подпись, которая может «проверять» значения вашего открытого ключа (CN, OU, срок действия и т. Д.) И быть подтверждена как сделанная ЦС. Я не уверен насчет вашего комментария "объединение", но вы в основном его прибили.
Все остальное устанавливается и указывается на вашей стороне - закрытый ключ (который хранится в секрете на вашем сервере), открытый ключ (отправляется всем, кто его запрашивает) и параметры согласования SSL (устанавливаются программным обеспечением вашего веб-сервера).
(По моему опыту, путаница часто возникает просто из-за различных форматов файлов, в которых могут храниться ключи, подписи, сертификаты, CSR и т. Д.)