我们今天获得了SSL证书,我正在尝试将SSL证书添加到域中,以便我们可以通过https访问该网站,但是我遇到了问题。
我们在Windows上运行了一个apache服务器。
配置适用于端口80但是当我向配置添加端口443时,一切都停止工作。
启动Apache时出现的错误是
The requested operation has failed.
我添加了以下行
Listen 443
线下方:
Listen 80
我添加了以下VirtualHost配置
<VirtualHost _default_:443>
DocumentRoot "c:/path/to/website"
ServerName example.com
ServerAlias example.com www.example.com
SSLEngine on
SSLCertificateFile "c:/path/to/cert/cert.crt"
SSLCertificateKeyFile "c:/path/to/cert/key.key"
SSLCACertificateFile "c:/path/to/cert/bundle.ca-bundle"
</VirtualHost>
然而,每当我在添加它之后启动apache服务器时,它都无法启动并且我收到错误。
我已经注释掉了一些代码,并将问题缩小到Listen 443
行。添加此内容时是否有一些我没有考虑的内容?
这是error.log
中的最后3行[Thu Jun 08 18:15:31.909142 2017] [mpm_winnt:notice] [pid 66428:tid 712] AH00422: Parent: Received shutdown signal -- Shutting down the server.
[Thu Jun 08 18:15:47.209776 2017] [mpm_winnt:notice] [pid 67332:tid 620] AH00364: Child: All worker threads have exited.
[Thu Jun 08 18:15:48.067933 2017] [mpm_winnt:notice] [pid 66428:tid 712] AH00430: Parent: Child process exited successfully.
修改
这是运行httpd.exe -e debug
(OS 10013)An attempt was made to access a socket in a way forbidden by its access permissions. : AH00072: make_sock: could not bind to address [::]:443
(OS 10013)An attempt was made to access a socket in a way forbidden by its access permissions. : AH00072: make_sock: could not bind to address 0.0.0.0:443
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs
答案 0 :(得分:1)
我不知道您的httpd.conf文件是什么样子的,也许您意外地删除/更改了某些值。
您需要做的第一件事是恢复httpd.conf文件并在没有SSL配置的情况下启动服务。一旦工作,您可以继续执行以下步骤:
在一个单独的所有SSL设置的新文件中,也许一个名为 httpd-ssl.conf 的新文件是一个好名字。
之后,在主 httpd.conf 的末尾添加以下行以包含新文件:
# Secure (SSL/TLS) connections
Include conf/httpd-ssl.conf
这是避免在主配置中意外更改/删除某些内容并限制可能错误来源的良好做法,您将知道任何错误都与所包含的新文件有关。
您的新conf / httpd-ssl.conf看起来应该是这样的(标准设置):
# HTTPS port
Listen 443
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot "C:/your_httpd_path/htdocs"
ServerName www.example.com:443
ServerAdmin admin@example.com
ErrorLog "C:/your_httpd_path/logs/error.log"
TransferLog "C:/your_httpd_path/logs/access.log"
# SSL Engine Switch:
SSLEngine on
# Server Certificates:
SSLCertificateFile "c:/path/to/cert/cert.crt"
SSLCertificateKeyFile "c:/path/to/cert/key.key"
SSLCACertificateFile "c:/path/to/cert/bundle.ca-bundle"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "C:/your_httpd_path/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
CustomLog "C:/your_httpd_path/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
您是否尝试过使用httpd.exe -e debug?也许我们可以在这种模式下找到有用的东西。
更新:啊哈!你有错误!它可能是443处的重复行。
你能用notepad ++检查你的文件并搜索所有符合&#34; 443&#34;的巧合吗?可能你已经配置了443并尝试再次添加它?您只需要有一行:
Listen 443
或者可能已经在该端口运行了?检查:
netstat -na | findstr "443"
如果你有类似的话:
TCP [::]:443 [::]:0 LISTENING
然后你的443端口正在运行其他东西。无论如何,你可以改变你的httpd conf并设置任何其他端口,如4443,或者杀死现在占用443的进程。