在尝试设置ssl证书后,Apache会抛出以下错误:
[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
并按照以下步骤生成我的ssl证书 (http://www.akadia.com/services/ssh_test_certificate.html)
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的/额外/ 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
等/ apache2的/额外/ 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
非常感谢帮助,如果需要,我很乐意提供更多信息。
答案 0 :(得分:3)
我遇到了同样的问题。 现在我解决了。
你包括
/private/etc/apache2/extra/httpd-ssl.conf
在httpd.conf中。
所以你仍然需要在'httpd-ssl.conf'
中设置以下键SSLCertificateFile "path to your crt"
SSLCertificateKeyFile "path to your key"
希望它有用。
答案 1 :(得分:3)
我今天升级到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>
然后重新启动。
答案 2 :(得分:2)
更新到Apache 2.4.33后,我遇到了同样的错误。似乎 $client = new GuzzleClient(['timeout' => 60, 'verify' => false, 'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
]]);
$response = $client->request('POST', $url, ['body' => $body]);
print_r($response->getBody()->getContents());
和SSLCertificateFile
现在必须在SSLCertificateKeyFile
区块内,而之前它们没有。{/ p>
答案 3 :(得分:0)
我在更新到Apache 2.4.33后遇到了这个问题。
我的httpd-vhosts.conf文件中不得不function cambiar(){
document.getElementById("tablaSelect").style.display="block";
document.getElementById("select").value = '';
}
个阻止。我删除了这个:
<VirtualHost></VirtualHost>
重新启动了apache并且运行正常。
答案 4 :(得分:0)
我也有同样的问题。在我的情况下,我也刚刚包含了extra / 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之后搜索此错误有用
答案 5 :(得分:0)
希望能帮助新访客。
我在日志文件中有相同的错误行。
我的错误是要包含
SSLEngine on
在VirtualHost
文件中的.conf
块外,以及SSLProtocol
,SSLCipherSuite
,SSLHonorCipherOrder
...的公用值