Я устанавливаю сертификат SSL для обслуживания HTTPS. Я использую Apache 2.4
в Amazon Linux
и получил сертификат в Startssl. Моя конфигурация Vhost следующая:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@myweb.com
ServerName myweb.com
DocumentRoot /var/www/html/myapp
<Directory /var/www/htmlmyapp>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/httpd/error_log
LogLevel warn
CustomLog /var/log/httpd/ssl_access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/mycert.crt
SSLCertificateKeyFile /etc/ssl/private/mycert.key
SSLCertificateFile /etc/ssl/certs/sub.class1.server.ca.pem
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
Когда я перезапускаю Apache, я получаю этот вывод:
Stopping httpd: [ OK ]
Starting httpd: Apache/2.4.12 mod_ssl (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.
Private key myweb.com:443:0 (/etc/ssl/private/mycert.key)
Enter pass phrase:
OK: Pass Phrase Dialog successful.
Apache:mod_ssl:Error: Private key not found.
**Stopped
[FAILED]
Так, это просит у меня пароль ключа, пароль в порядке, и затем это говорит, что не может найти его. Что я пропускаю?
В вашем конфигурационном файле есть эти три строки:
SSLCertificateFile /etc/ssl/certs/mycert.crt
SSLCertificateKeyFile /etc/ssl/private/mycert.key
SSLCertificateFile /etc/ssl/certs/sub.class1.server.ca.pem
Вы повторяете SSLCertificateFile
. Это означает, что Apache будет использовать второй экземпляр переменной, т.е. /etc/ssl/certs/sub.class1.server.ca.pem
- но ваш ключ является ключом для /etc/ssl/certs/mycert.crt
, поэтому он не совпадает с CA cert. Таким образом, Apache не может найти ключ для сертификата.
Возможно, ваш конфигуратор должен выглядеть следующим образом:
# Server certificate
SSLCertificateFile /etc/ssl/certs/mycert.crt
# Key to server certificate
SSLCertificateKeyFile /etc/ssl/private/mycert.key
# Glue certificate to CA
SSLCACertificateFile /etc/ssl/certs/sub.class1.server.ca.pem
Обратите внимание, что второй сертификат начинается с SSLCA
, а не только с SSL
.
В своем конфигурационном файле вы указываете на плохой PrivateKey файл SSLCertificateKeyFile /etc/ssl/private/mycert.key
вместо SSLCertificateKeyFile /etc/ssl/private/myweb.key
.
Вне рамок вопроса: вы уверены, что хотите сохранить пароль на вашем PrivateKeyFile? Означает, что если ваш сервер перезагрузится, то пароль понадобится снова. Но это также означает, что любой, кто имеет доступ к серверу, может скомпрометировать Ваш приватный ключ.
Для генерации нового ключа без парольной фразы используйте : openssl rsa -in oldkey.pem -out newkey.pem