Назад | Перейти на главную страницу

Redhat - команда / s запустить после установки для создания файла localhost.crt по умолчанию?

Я клонировал виртуальную машину, и сертификат ssl имеет старое имя хоста. Мне нужно создать новый сертификат ssl.

У меня вопрос, какой метод использовался сервером для создания исходного сертификата? Было ли это сделано в рамках пост-установки RPM? Я буду использовать openssl, если нет сценария генерации, который можно запустить. Спасибо!

Если вы беспокоитесь о сохранении текущего localhost.crt, переместите его из каталога и введите:

make testcert

в /etc/pki/tls/certs

Чтобы ответить на вопрос OP (в отличие от предоставления методов для создания localhost.crt): это зависит от дистрибутива и версии Linux. Есть много дистрибутивов, использующих RPM, но я упомяну два наиболее широко используемых.

На CentOS 7 / RHEL 7, это делается в послеустановка сценарий mod_ssl пакет. Выполните следующую команду, чтобы увидеть полный скриптлет:

rpm -q --scripts mod_ssl

Часть, которая фактически создает сертификат, такова:

cat << EOF | /usr/bin/openssl req -new -key /etc/pki/tls/private/localhost.key \
         -x509 -sha256 -days 365 -set_serial $RANDOM -extensions v3_req \
         -out /etc/pki/tls/certs/localhost.crt 2>/dev/null

На Fedora 29, все немного сложнее:

  • В httpd служба (/usr/lib/systemd/system/httpd.service) имеет мягкую зависимость от httpd-init.service.
  • httpd-init.service (/usr/lib/systemd/system/httpd-init.service) является частью mod_ssl пакет.
  • httpd-init.service выполняет /usr/libexec/httpd-ssl-gencerts, который генерирует сертификат, используя sscg.

Соответствующая часть /usr/libexec/httpd-ssl-gencerts это:

sscg -q                                                             \
     --cert-file           /etc/pki/tls/certs/localhost.crt         \
     --cert-key-file       /etc/pki/tls/private/localhost.key       \
     --ca-file             /etc/pki/tls/certs/localhost.crt         \
     --lifetime            365                                      \
     --hostname            $FQDN                                    \
     --email               root@$FQDN

В sscg инструмент - это небольшая отдельная программа (не скрипт). Цитата из описания пакета Fedora:

Утилита для создания более безопасных «самоподписанных» сертификатов. Сертификаты, созданные этим инструментом, генерируются таким образом, чтобы создать сертификат CA, который можно безопасно импортировать на клиентский компьютер, чтобы доверять сертификату службы без необходимости настраивать полную среду PKI и не подвергая машину риску ложные подписи из служебного сертификата.

Вы можете быстро сгенерировать новый самозаверяющий сертификат и закрытый ключ с помощью следующей команды и просто следовать подсказкам.

openssl req -new -x509 -newkey rsa:2048 -keyout server.key -nodes -days 3650 -out server.crt

Одна вещь, которую я нашел чрезвычайно полезной, когда меня не волнуют атрибуты сертификата и просто хочу, чтобы имя хоста соответствовало, - это то, что вы можете передать атрибуты в openssl, просто изменив test.example.tld в приведенной ниже команде, чтобы сопоставить любое имя хоста, которое вы хотите использовать. Он оставит все атрибуты пустыми, и вы получите server.crt и server.key в вашем текущем каталоге:

echo -e "XX\n\n \n \n\ntest.example.tld\n\n" | openssl req -new -x509 -newkey rsa:2048 -keyout server.key -nodes -days 3650 -out server.crt &> /dev/null