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

Невозможно настроить сертификат SSL в Apache Windows

Я купил сертификат у Godaddy и получил файл .crt вместе с файлом .p7b (PKCS # 7).

А вот моя конфигурация в файле https-ssl.conf

<VirtualHost *:443>
----
SSLEngine on
SSLCipherSuite DHE-RSA-AES256-SHA:EDH-RSA-DES-CBC3-SHA:DHE-RSA-AES128-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA
SSLCertificateFile "conf/extra/blablabla.crt"
SSLCertificateChainFile "conf/extra/gd-g2_iis_intermediates.p7b"

Когда я пытаюсь запустить сервер Apache, я получаю в журнале ошибок следующие ошибки:

Я работаю в среде Windows Server 2012 с установленным Xampp Apache 2.4. Может ли кто-нибудь сообщить мне, что вызывает проблему с конфигурацией SSL?

По-видимому, файл blablabla.crt содержит закрытый ключ (который разрешен, но не рекомендуется), а ключ зашифрован и, следовательно, требует пароля (который, по-видимому, не работает в Windows; см., Например, https://support.quovadisglobal.com/kb/a90/i-get-error-message-error-init-sslpassphrasedialog-builtin-is-not-supported-on-win32.aspx )

Извлеките закрытый ключ и расшифруйте его (если он у вас еще не есть, например, на этапе создания CSR) и поместите расшифрованную версию обратно в файл, или удалите ее из этого файла и поместите / оставьте расшифрованную версию в отдельном файле (названном чем-то значимым например blablabla.key) и укажите его в SSLCertificateKeyFile. В любом случае в целях безопасности убедитесь, что ACL для файла, содержащего дешифрованный ключ, является максимально ограничительным. С недавним OpenSSL (1.0.0+) вы можете расшифровать одним из

openssl pkey <oldkey >newkey # no -passout, optional -passin
openssl rsa <oldkey >newkey # ditto, only if key is RSA --
# however without greater knowledge you are unlikely to have 
# successsfully generated a key and obtained a cert for non-RSA

# oldkey can be the blablabla.crt that contains _both_ cert and key;
# OpenSSL will select the correct-type block from a PEM-format file.

Для OpenSSL 0.9.x вместо pkey использовать

openssl pkcs8 -topk8 -nocrypt <oldkey >newkey 

Однако Apache (через OpenSSL) не поддерживает формат p7b для цепочек сертификатов, хотя 2.4.8+ должен поддерживать цепочки сертификатов в SSLCertificateFile без отдельных SSLCertificateChainFile. Сначала сделай

openssl pkcs7 -print_certs <chain.p7b >chain.pem 

затем либо используйте этот новый файл как SSLCertificateChainFile или добавьте его в файл, который вы используете как SSLCertificateFile а именно blablabla.crt.

PS: Я предполагаю, что XAMPP (который я сам не использую) дает вам командную строку openssl. Если нет, то есть хорошая сборка OpenSSL для Windows (бесплатно) по адресу http://www.slproweb.com/products/Win32OpenSSL.html