Я хотел бы настроить свой собственный ответчик OCSP (только для целей тестирования). Это требует, чтобы у меня был корневой сертификат и несколько сертификатов, сгенерированных из него.
Мне удалось создать самозаверяющий сертификат с помощью openssl. Я хочу использовать его в качестве корневого сертификата. Следующим шагом будет создание производных сертификатов. Я не могу найти документацию о том, как это сделать, однако. Кто-нибудь знает, где я могу найти эту информацию?
Редактировать
В ретроспективе, мой вопрос еще не полностью ответил. Чтобы прояснить проблему, я представлю свою цепочку сертификатов следующим образом:
КОРЕНЬ -> A -> B -> C -> ...
В настоящее время я могу создавать сертификаты ROOT и A, но я не нашел, как сделать более длинную цепочку.
Моя команда для создания корневого сертификата:
openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
Сертификат А создается так:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
Эта команда неявно зависит от корневого сертификата, для которого она находит необходимую информацию в файле конфигурации openssl.
Однако сертификат B должен полагаться только на A, который не зарегистрирован в файле конфигурации, поэтому предыдущая команда здесь не будет работать.
Какую командную строку я должен использовать для создания сертификатов B и выше?
Изменить
Я нашел ответ в этой статье . Сертификат B (цепь A -> B) может быть создан с помощью этих двух команд:
# Create a certificate request
openssl req -new -keyout B.key -out B.request -days 365
# Create and sign the certificate
openssl ca -policy policy_anything -keyfile A.key -cert A.pem -out B.pem -infiles B.request
Я также изменил файл openssl.cnf:
[ usr_cert ]
basicConstraints=CA:TRUE # prev value was FALSE
Этот подход, кажется, работает хорошо.
источник
Ответы:
Вы можете использовать OpenSSL напрямую.
Создайте закрытый ключ центра сертификации (это ваш самый важный ключ):
Создайте самозаверяющий сертификат CA:
Выпустите сертификат клиента, сначала сгенерировав ключ, затем запросите (или используйте сертификат, предоставленный внешней системой), затем подпишите сертификат с помощью закрытого ключа вашего ЦС:
(Возможно, вам придется добавить некоторые параметры, так как я использую эти команды вместе с моим файлом openssl.conf. Сначала вам может потребоваться настроить собственный файл .conf.)
источник
openssl ca -in client.csr -out client.cer -cern ca.pem -keyfile ca.key
, но он хочетdemoCA
каталог и различные атрибуты.Как только вы создали свой CA, вы можете использовать его для подписи таким образом:
Создать ключ:
Создать CSR:
Подписать его :
и так далее о замене * _A на * _B и
CA_certificate_you_created.crt
сcrt_A.crt
иCA_key_you_created.key
сkey_A.key
Ваше изменение:
означает, что выданные вами сертификаты могут использоваться для подписи других сертификатов.
источник
OpenSSL поставляется с Perl-скриптом «CA.pl», который поможет вам создать самозаверяющий корневой сертификат CA , а также с соответствующим закрытым ключом, а также несколькими простыми файлами и каталогами, которые помогут отслеживать любые будущие сертификаты, которые вы подпишете (иначе проблема ) с этим корневым CA. Это также помогает вам создавать другие пары ключей и запросы на подпись сертификатов (CSR) и помогает обрабатывать эти CSR (то есть выдавать сертификаты для них) и многое другое.
Обратите внимание, что многие продукты требуют, чтобы сертификаты CA содержали определенный атрибут, помечающий их как сертификаты CA, или они не будут приняты в качестве действительных подписчиков / эмитентов других сертификатов. Если созданный вами самоподписанный сертификат не содержит этого атрибута, у вас могут возникнуть проблемы с тем, чтобы другие программы воспринимали его как действительный сертификат корневого ЦС.
Если я правильно помню, синтаксис выглядит примерно так:
источник
/usr/lib/ssl/misc/CA.pl
Я нашел этот пост: https://stackoverflow.com/questions/19665863/how-do-i-use-a-self-signed-certificate-for-a-https-node-js-server
Это для Node.JS, но сценарий в этом репозитории GitHub использует команды openSLL для создания сертификата корневого CA и сертификата домена.
Запустите с помощью:
bash make-root-ca-and-certificates.sh 'example.com'
Или для локального использования:
bash make-root-ca-and-certificates.sh 'localhost'
make-root-ca-and-certificates.sh
источник