Apache:mod_ssl:Error: Закрытый ключ, не найденный

Я устанавливаю сертификат 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]

Так, это просит у меня пароль ключа, пароль в порядке, и затем это говорит, что не может найти его. Что я пропускаю?

0
задан 16 April 2015 в 12:10
2 ответа

В вашем конфигурационном файле есть эти три строки:

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.

.
4
ответ дан 4 December 2019 в 11:48

В своем конфигурационном файле вы указываете на плохой PrivateKey файл SSLCertificateKeyFile /etc/ssl/private/mycert.key вместо SSLCertificateKeyFile /etc/ssl/private/myweb.key.

Вне рамок вопроса: вы уверены, что хотите сохранить пароль на вашем PrivateKeyFile? Означает, что если ваш сервер перезагрузится, то пароль понадобится снова. Но это также означает, что любой, кто имеет доступ к серверу, может скомпрометировать Ваш приватный ключ.

Для генерации нового ключа без парольной фразы используйте : openssl rsa -in oldkey.pem -out newkey.pem

0
ответ дан 4 December 2019 в 11:48

Теги

Похожие вопросы