Я - промежуточный пользователь Linux, и мне была поставлена задача заставить Apache запускать https-соединения. В настоящее время работает CentOS 6, и моя проблема следующая:
установил mod_ssl и попытался правильно настроить пути, но не уверен, что использовал правильные файлы. у меня есть class2-root.crt и root-2-int.cer также мне дали wildcard.ssl.pfx. я понял, что есть переменная, которая должна указывать на ".key" файл, которого у меня нет. Так сгенерировано, используя:
openssl req -new -keyout server.key -out server.csr
есть много источников, показывающих, как это сделать в Интернете, и они пытались много раз, но безуспешно. Мне просто нужен кто-то, кто мог бы помочь в моем случае, чтобы сказать мне, какие файлы мне нужно только коснуться и настроить. Также, если ключ должен быть из того же источника, что и сертификаты, которые у меня есть? и какие сертификаты мне нужны из того, что мне дали?
я сделал именно это в httpd.conf:
<VirtualHost *:443>
DocumentRoot /var/www/html
ServerName MyServer_Ip_Adress
SSLEngine on
SSLCertificateFile /etc/ssl/crt/class-root.crt
SSLCertificateKeyFile /etc/ssl/crt/server.key
SSLCertificateChainFile /etc/ssl/crt/root-2int.cer
</VirtualHost>
после этого не удалось ни остановить Apache, ни перезапустить его. Остановка всегда терпит неудачу.
Вы не можете просто сгенерировать случайный ключ для своего сертификата; вы должны использовать тот, с которым он был создан. В сертификате есть открытый ключ (обычно RSA), который клиент будет использовать в процессе обмена ключами; для завершения обмена ключами вам понадобится закрытый ключ, который (среди прочего) подтверждает, что сертификат принадлежит вам. В противном случае вы могли бы просто использовать любой сертификат, который найдете в Интернете, и выдавать себя за людей.
Если вы предоставите неверную информацию о сертификате, apache завершится ошибкой.
Цепочка сертификатов, которую вам дали, вероятно, содержит три сертификата: один для корневого ЦС (я подозреваю, class-root.crt), промежуточный ЦС, подписанный этим корневым ЦС (root-2int.cer), и сертификат вашего сервера, который является подписано промежуточным центром сертификации. Так устроены почти все SSL-сертификаты. Корневому сертификату будут доверять клиенты; ваш сервер должен предоставить свой собственный сертификат и другие сертификаты, которые связывают его в цепочку с корнем (например, корневой и промежуточный сертификаты).
Цепной файл - вот что это делает. Чтобы создать файл цепочки, вы должны объединить промежуточный сертификат и сертификат CA в один файл, например.
cat /etc/ssl/crt/root-2int.cer /etc/ssl/crt/class-root.crt > /etc/ssl/crt/chain.crt
Затем укажите в качестве своего SSLCertificateChainFile
. Это приведет к тому, что Apache отправит эти два сертификата вместе с вашим в качестве доказательства действительности.
Вам также нужно будет извлечь сертификат и ключ из вашего PFX-файла, который содержит:
openssl pkcs12 -nocerts -in wildcard.ssl.pfx -out wildcard.key
openssl pkcs12 -clcerts -nokeys -in wildcard.ssl.pfx -out wildcard.crt
Затем, если закрытый ключ зашифрован (например, вы получили с ним парольную фразу), если вы хотите, чтобы apache мог запускаться без ввода пароля, вы должны его расшифровать (и защитить его разрешениями файловой системы: режим 0400 и принадлежит root : root например). Для этого (при условии RSA):
openssl rsa -in wildcard.key -out wildcard-decrypted.key
Затем вы можете использовать эти два файла:
SSLCertificateFile /etc/ssl/crt/wildcard.crt
SSLCertificateKeyFile /etc/ssl/crt/wildcard-decrypted.key
Пока все сертификаты совпадают, это должно работать. Если вы хотите проверить, соответствует ли ваш сертификат вашему ключу, используйте эти две команды (вывод должен быть таким же, и снова предполагается RSA):
openssl x509 -modulus -noout -in /etc/ssl/crt/wildcard.crt
openssl rsa -modulus -noout -in /etc/ssl/crt/wildcard-decrypted.key