12

Apache 在尝试设置 ssl 证书后抛出以下错误:

[ssl:emerg] [pid 30907] AH02572: Failed to configure at least one certificate and key for localhost:443
[ssl:emerg] [pid 30907] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[ssl:emerg] [pid 30907] AH02312: Fatal error initialising mod_ssl, exiting.

我使用 MAC OS:Yosemite、PHP 5.5.20、Apache 2.4.9

并按照这些步骤从(http://www.akadia.com/services/ssh_test_certificate.html)生成我的 ssl 证书

cd /etc/apache2/
sudo mkdir certs                                        
cd certs                                                
sudo openssl genrsa -des3 -out server.key 1024          
sudo openssl req -new -key server.key -out server.csr

  Country Name (2 letter code) [GB]:US
  State or Province Name (full name) [Berkshire]:California 
  Locality Name (eg, city) [Newbury]:LA
  Organization Name (eg, company) [My Company Ltd]:Company
  Organizational Unit Name (eg, section) []:
  Common Name (eg, your name or your server's hostname) []:dev.test.local
  Email Address []:username@gmail.com
  Please enter the following 'extra' attributes
  to be sent with your certificate request
  A challenge password []:
  An optional company name []:

sudo cp server.key server.key.org     
sudo openssl rsa -in server.key.org -out server.key
sudo openssl x509 -req -days 730 -in server.csr -signkey server.key -out server.crt  

接下来,我为我的 apache 配置文件进行了以下设置:

等/apache2/httpd.conf:

LoadModule ssl_module libexec/apache2/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
Include /private/etc/apache2/extra/httpd-ssl.conf

等/apache2/extra/httpd-ssl.conf:

Listen 443
SSLPassPhraseDialog  builtin
<VirtualHost _default_:443>
SSLEngine on
Mutex sysvsem default # Added after seeing mutex issues for apache 2.4, http://stackoverflow.com/questions/13969272/apache-sslmutex-issue

etc/apache2/extra/httpd-vhosts.conf:

<VirtualHost *:443>

    ServerName dev.test.local
    DocumentRoot "/Users/username/Sites/test/public"

    <Directory "/Users/username/Sites/test/public">
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
         Order allow,deny
         allow from all
    </Directory>

    SSLEngine on       
    SSLCertificateFile    /etc/apache2/certs/server.crt
    SSLCertificateKeyFile /etc/apache2/certs/server.key

</VirtualHost>

重新启动并运行 apache config test 后,看起来好像没有问题:

sudo apachectl restart
sudo apachectl configtest
[Tue Jan 06 13:56:01.480270 2015] [so:warn] [pid 31636] AH01574: module php5_module is already loaded, skipping
Syntax OK

非常感谢您的帮助,如果需要,我很乐意提供更多信息。

4

6 回答 6

5

我遇到了同样的问题。现在我解决了。

你包括

/private/etc/apache2/extra/httpd-ssl.conf 

在 httpd.conf 中。

所以你仍然需要在'httpd-ssl.conf'中设置以下键

SSLCertificateFile "path to your crt"
SSLCertificateKeyFile "path to your key"

希望它是有帮助的。

于 2016-09-20T03:23:11.340 回答
5

我今天在升级到 MacOS High Sierra 版本 10.13.6 后遇到了这个问题。在升级之前,我的带有 SSL 的虚拟主机运行良好。然后今天,当我尝试启动我的 Apache Web 服务器时,我收到了这个错误:

[Fri Jul 20 10:51:06.021778 2018] [ssl:emerg] [pid 2236] AH02572: Failed to configure at least one certificate and key for work.localweb.com:80
[Fri Jul 20 10:51:06.022024 2018] [ssl:emerg] [pid 2236] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Fri Jul 20 10:51:06.022037 2018] [ssl:emerg] [pid 2236] AH02312: Fatal error initialising mod_ssl, exiting.
AH00016: Configuration Failed

检查我的 apache 版本,现在是 2.4.33。显然,在这个版本中,您需要将 SSLCertificateFile 和 SSLCertificateKeyFile 条目放在虚拟主机本身中。因此,我从 extra/httpd-ssl.conf 中复制了这些条目,并将其放入我配置的每个 SSL 虚拟主机中。

<VirtualHost *:443>
  ServerAdmin me@mymail.com
  ServerName work.localweb.com
  SSLCertificateFile "/private/etc/apache2/server.crt"
  SSLCertificateKeyFile "/private/etc/apache2/server.key"
  ......
</VirtualHost>

然后启动再次工作。

于 2018-07-19T23:21:12.803 回答
3

希望对新来的游客有所帮助。

我在日志文件中有相同的错误行。

我的错误是包括

SSLEngine on

VirtualHost块外,在文件中,以及, , ....conf的常用值SSLProtocolSSLCipherSuiteSSLHonorCipherOrder

于 2019-06-29T09:07:09.063 回答
3

我也有同样的问题。就我而言,我也刚刚包含了额外的/httpd-ssl.conf,正如其他一些人提到的那样。如上所述,请确保您在此文件中有条目

SSLCertificateFile "/usr/local/etc/apache24/ssl.crt/mydomaincertificate.crt"

SSLCertificateKeyFile "/usr/local/etc/apache24/ssl.key/myprivatekey.key"

即使我的主域的 extra/httpd-vhosts.conf 中有相同的条目。我还必须确保在 httpd.conf 中的“ServerName”条目与证书中的名称匹配。

虽然这对 OP 没有用,但它可能对像我这样的人在设置 SSL 后搜索此错误有用

于 2018-11-01T10:10:47.357 回答
2

更新到 Apache 2.4.33 后,我遇到了同样的错误。似乎现在必须在块内,SSLCertificateFile而以前他们没有。SSLCertificateKeyFile<VirtualHost>

于 2018-06-08T10:10:55.713 回答
1

我在更新到 Apache 2.4.33 后遇到了这个问题。

我不得不<VirtualHost></VirtualHost>阻止我的 httpd-vhosts.conf 文件。我删除了这个:

<VirtualHost *:443>
    ServerName "<your server name>"
    DocumentRoot "<your path>"
</VirtualHost>

重新启动apache并且它工作。

于 2018-06-12T09:11:17.930 回答