Как автоматизировать создание SSL-сертификатов на удаленном сервере [закрыто]

Я ищу способ сгенерировать сертификаты SSL на внешнем сервере Linux, но не могу понять лучший способ.

Сценарий:

Когда пользователь регистрируется на веб-сайте (на веб-сервере), я хочу, чтобы веб-сервер отправлял сообщение на другой сервер, где для пользователя будут сгенерированы сертификат SSL и ключ. Веб-сервер должен отправить внешнему серверу имя пользователя пользователя. Я знаю, что для безопасности лучше создавать сертификаты SSL на отдельном компьютере, а не на веб-сервере.

Веб-сервер также является системой Linux и будет использовать PHP, поэтому, может быть, PHP должен отправить это сообщение на 'ssl-generation-server'? Я думал об использовании сценария BASH и такой команды curl, потому что это самый простой способ, который я могу придумать:

exec("curl http://ssl-gen-server/generate.php > /dev/null 2>&1 &");

Я не хочу, чтобы вызов PHP на веб-сервере ждал ответ от generate.php , поэтому я перенаправлю его, чтобы он был асинхронным.

После того, как SSL и ключ были сгенерированы, они должны быть отправлены обратно на веб-сервер, чтобы их можно было представить пользователю. Но проблема здесь: как «ssl-gen-server» может связаться с веб-сервером и сообщить о сертификате SSL?

Не лучше ли автоматизировать входы по SSH с веб-сервера на сервер SSL-gen и запустить там есть команды?

Я знаю, что в PHP есть openssl_csr_new , но, может быть, лучше сгенерировать сертификаты с помощью реальной команды openssl ?

0
задан 19 January 2018 в 05:17
2 ответа

(это должен быть комментарий, но он немного длинноват)

Я подумал об использовании BASH-скрипта и команды скручивания типа этой

Это очень странный способ решения проблемы. Даже если бы это был единственно возможный способ вызова удаленного URL из PHP, есть много плохого в том, как вы взаимодействуете со скрулкой.

Вы также, кажется, очень запутались в отношениях между CSR и сертификатами. Вы пытаетесь разобраться в деталях реализации без явного внимания к архитектуре и на самом деле не дали объяснения того, чего вы пытаетесь добиться (это сертификат клиентской стороны? Является ли сертификат и ключ, который будет установлен на сервере?). Кто является центром сертификации? Вы пытаетесь автоматизировать существующий процесс или это новая возможность?

Вы, кажется, не понимаете необходимости отделять создание CSR от подписи сертификата.

Несмотря на то, что на детали вызова легко ответить, в Вашем вопросе так много особенностей, касающихся целостности и конфиденциальности сервиса, игнорирование их и объяснение любого из решений вызова было бы скорее безответственным.

Лучшим советом (хотя все же несколько опасным при отсутствии модели использования) является рекомендация ansi_lumen использовать letsencrypt.

.
1
ответ дан 4 December 2019 в 16:02

Вам нужно решение PKI, включающее в себя центр сертификации и способы выдачи сертификатов. Полнофункциональные продукты включают FreeIPA (также известный как Red Hat Identity Manager) или Active Directory Certificate Services.

В любом случае, изучите что-нибудь вроде certmonger для выдачи запросов на сертификаты. Он имеет гораздо лучший API, чем openssl. В качестве бонуса, он имеет возможность автоматического обновления.

Если вам все равно, использует ли он ваш PKI, реализуйте Let's Encrypt и позвольте им выдавать certs.

Наконец, прежде чем реализовывать свои собственные скрипты оболочки openssl, не делайте этого и обратите внимание на помощников продавец к certmonger. Если вы действительно хотите, прочитайте несколько уроков, чтобы понять, как правильно выполнять PKI. Я рекомендую пару, авторами которой являются Стефан Х. Холек или Джейми Нгуен.

.
0
ответ дан 4 December 2019 в 16:02

Теги

Похожие вопросы