В этой статье в основном рассказывается, как создать самозаверяющий сертификат X.509 на основе openssl и как использовать этот сертификат для выдачи нового сертификата.
Следующая команда используется для генерации закрытого ключа корневого сертификата. Соответствующие параметры объясняются следующим образом:
openssl genrsa -aes256 -out rootCA.pem 2048
Следующая команда использует сгенерированный выше закрытый ключ для создания файла приложения сертификата. Соответствующие параметры объясняются следующим образом:
После ввода следующей команды,Пользователю будет предложено ввести некоторую информацию,Например, страна (Китай — CN)/провинция/город/компания и т. д.,Просто введите согласно подсказкам,Если соответствующий пункт не заполнен,Можно войти.
。
Уведомление:
Common Name
中Можно войти该证书对应的域名。Common Name
Должен отличаться от корневого сертификата.,Лучше не повторять друг друга.openssl req -new -key rootCA.pem -out rootCA.csr
После создания файла заявки на выдачу сертификата (csr-файла) его можно отправить в организацию ЦС для помощи в выдаче сертификата (обычно за определенную плату). Вы также можете использовать следующую команду для создания самозаверяющего сертификата. параметры объясняются следующим образом:
openssl x509 -req -days 365 -sha1 -signkey rootCA.pem -in rootCA.csr -out rootCA.cer
На данный момент у нас уже есть корневой сертификат rootCA.cer и закрытый ключ rootCA.pem, соответствующий сертификату.
Примечание. Открытый ключ можно сгенерировать на основе закрытого ключа. Он не будет использоваться позже, поэтому не будет генерироваться повторно.
Сгенерируйте закрытый ключ на стороне сервера.
openssl genrsa -out server.pem 2048
Формирование документов заявки на выдачу сертификата После ввода следующей команды введите соответствующую информацию в соответствии с подсказками:
openssl req -new -key server.pem -out server.csr
Использовать корневой сертификат для выдачи сертификата на стороне сервера При выдаче сертификата на стороне сервера используются корневой сертификат rootCA.cer и закрытый ключ rootCA.pem, соответствующий корневому сертификату, оба из которых являются обязательными. Некоторые описания параметров приведены ниже:
Имя сертификата, указанное параметром CA, плюс суффикс .srl.
,Например, файл серийного номера, созданный в следующем примере, — rootCA.srl. openssl x509 -req -days 365 -sha1 -CA rootCA.cer -CAkey rootCA.pem -in server.csr -CAcreateserial -out server.cer
Теперь у нас есть серверный сертификат server.cer и соответствующий закрытый ключ server.pem.
Генерация закрытого ключа клиента
openssl genrsa -out client.pem 2048
Формирование документов заявки на выдачу сертификата После ввода следующей команды введите соответствующую информацию в соответствии с подсказками:
openssl req -new -key client.pem -out client.csr
Использовать корневой сертификат для выдачи сертификата клиента
openssl x509 -req -days 365 -sha1 -CA rootCA.cer -CAkey rootCA.pem -in client.csr -CAcreateserial -out client.cer
Теперь у нас есть сертификат клиента client.cer и соответствующий закрытый ключ client.pem.
Выше мы создали корневой сертификат rootCA.cer и использовали этот корневой сертификат для выдачи сертификата сервера server.cer и сертификата клиента client.cer. Другими словами, формируются две цепочки доверия:
rootCA.cer --> server.cer
rootCA.cer --> client.cer
Проверьте sever.cer на основе rootCA.cer:
openssl verify -CAfile rootCA.cer sever.cer
В случае успеха результат вывода будет в порядке, в противном случае появится сообщение с подсказкой.
Дважды щелкните sever.cer, и вы увидите, что проверка сертификата не удалась, поскольку никто в системе не подтвердил сертификат:
Дважды щелкните rootCA.cer.,Нажмите нижеУстановить сертификат
кнопка,Следуйте инструкциям для установки корневого сертификата.(Выбор места установкиУстановите в доверенный корневой центр сертификации.
)。После установки корневого сертификата,Означает, что этот компьютер безоговорочно доверяет корневому сертификату.,и другие сертификаты, выданные через rootCA.cer.
Теперь открываем sever.cer, как показано на рисунке ниже, проверка прошла успешно (rootCA.cer подтвердил ему доверие):