Я устанавливаю сертификат 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. Таким образом, 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
.
За рамками вопроса: вы уверены, что хотите сохранить пароль на своем закрытом ключе? Означает, что если ваш сервер перезагрузится, ему снова потребуется пароль. Но это также означает, что любой, кто имеет доступ к серверу, может скомпрометировать ваш закрытый ключ.
Чтобы сгенерировать новый ключ без ключевой фразы, используйте: openssl rsa -in oldkey.pem -out newkey.pem