Итак, я только что получил сертификат, выпущенный Digicert, и поскольку в / etc / ssl / i были отмечены и удалены другие неиспользуемые / старые файлы, а также случайно был удален localhost.crt.
Теперь я не могу запустить свой веб-сервер (только без SSL). Как мне воссоздать этот файл localhost.crt? И мне нужно будет сделать новый ключ и получить сертификат от digicert повторно?
Есть два решения этой проблемы:
1) Вы можете восстановить самозаверяющий сертификат по умолчанию с помощью OpenSSL:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/ssl/certs/localhost.crt
2) Вы можете выполнить поиск в файлах конфигурации Apache и заменить самозаверяющий сертификат новым сертификатом.
Эта команда сообщит вам, какие файлы конфигурации Apache ссылаются на файл localhost.crt:
grep -i -r localhost.crt /etc/httpd/
Пример вывода приведенной выше команды может быть таким:
/etc/httpd/conf.d/ssl.conf:SSLCertificateFile /etc/pki/tls/certs/localhost.crt
Это говорит нам заглянуть в /etc/httpd/conf.d/ssl.conf и обновить SSLCertificateFile, SSLCertificateKeyFile и SSLCertificateChainFile до их новых файлов сертификатов DigiCert.
Если у вас есть какие-либо проблемы или вопросы, звоните в службу поддержки DigiCert по телефону 1-801-701-9600.
Файлы /etc/pki/tls/certs/localhost.crt
и /etc/pki/tls/private/localhost.key
создаются сценарием постинсталляции mod_ssl
пакет. Вы можете найти файл спецификации CentOS 7 здесь: https://git.centos.org/rpms/httpd/blob/c7/f/SPECS/httpd.spec (проверьте другие ветки для разных версий CentOS). Вот сценарий из CentOS 7:
%define sslcert %{_sysconfdir}/pki/tls/certs/localhost.crt
%define sslkey %{_sysconfdir}/pki/tls/private/localhost.key
%post -n mod_ssl
umask 077
if [ -f %{sslkey} -o -f %{sslcert} ]; then
exit 0
fi
%{_bindir}/openssl genrsa -rand /proc/apm:/proc/cpuinfo:/proc/dma:/proc/filesystems:/proc/interrupts:/proc/ioports:/proc/pci:/proc/rtc:/proc/uptime 2048 > %{sslkey} 2> /dev/null
FQDN=`hostname`
if [ "x${FQDN}" = "x" -o ${#FQDN} -gt 59 ]; then
FQDN=localhost.localdomain
fi
cat << EOF | %{_bindir}/openssl req -new -key %{sslkey} \
-x509 -sha256 -days 365 -set_serial $RANDOM -extensions v3_req \
-out %{sslcert} 2>/dev/null
--
SomeState
SomeCity
SomeOrganization
SomeOrganizationalUnit
${FQDN}
root@${FQDN}
EOF
Итак, если вы удалите оба localhost.key
и localhost.crt
, и делай yum reinstall mod_ssl
, то сценарий postinstall воссоздает их для вас.
(Я отправляю этот ответ, потому что ищу, как воссоздать /etc/pki/tls/certs/localhost.crt
приводит меня сюда, но, как говорили другие, если у вас есть сертификат, подписанный ЦС, вам не нужен localhost.crt
и localhost.key
файлов больше.)
издатель сертификата ssl должен предоставить вам бесплатную замену или перевыпуск. Просто зайдите в digicert и спросите их.
Сгенерируйте новые ключевые файлы с сервера и перевыпустите ssl. Убедитесь, что новый ssl должен быть только SHA2.
У меня была такая же проблема. Для CentOS 8 не было сертификата localhost по умолчанию, поэтому я запустил его, и он восстановил все сертификаты по умолчанию.
/usr/libexec/httpd-ssl-gencerts
Надеюсь, это поможет кому-то другому.
Вы можете просто переустановить ssl с помощью следующей команды. Это восстановит localhost.crt
yum -y установить mod_ssl