gpt4 book ai didi

apache - 将 SSL 添加到 Apache 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:39 27 4
gpt4 key购买 nike

我们今天获得了 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

最佳答案

我不知道你的 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++ 中检查你的文件并搜索所有匹配“443”的巧合吗?可能您已经配置了 443 并尝试再次添加它?你只需要一行:

Listen 443

或者可能已经在该端口运行?检查:

netstat -na | findstr "443"

如果你有这样的事情:

TCP    [::]:443               [::]:0                 LISTENING

那么您的 443 端口上正在运行其他程序。无论如何,您可以更改您的 httpd conf 并设置任何其他端口,如 4443,即或终止现在占用 443 的进程。

关于apache - 将 SSL 添加到 Apache 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44441679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com