Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向Apache服务器添加SSL_Apache_Ssl_Vhosts - Fatal编程技术网

向Apache服务器添加SSL

向Apache服务器添加SSL,apache,ssl,vhosts,Apache,Ssl,Vhosts,我们今天获得了SSL证书,我正在尝试将SSL证书添加到域中,以便我们可以通过https访问网站,但是我遇到了问题 我们有一个在windows上运行的apache服务器 该配置对端口80非常有效,但是当我将端口443添加到配置中时,一切都停止工作 启动apache时出现的错误是 The requested operation has failed. 我添加了以下行 Listen 443 线下: Listen 80 我添加了以下VirtualHost配置 <VirtualHost _de

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

这是运行httpd.exe-e debug的响应


我不知道您的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>  
或者可能已经在那个港口运行了?检查:

netstat -na | findstr "443"
如果您有以下情况:

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

然后在您的443端口上运行其他程序。无论如何,您可以更改您的httpd conf并设置任何其他端口,如4443,也就是说,或者终止正在使用443的进程。

启动apache时出现了什么错误?我相信这是“操作无法完成”。。。我会在一分钟内检查,我刚刚收拾好要回家,所以我会在回家时检查,我不希望得到快速回复!!没问题,请用错误消息更新问题。我刚刚更新了问题。你可以检查apache错误日志吗。这就是我正在做的。它已经在没有ssl的情况下工作。。。添加Listen 443行会导致失败尝试我的建议,创建一个新文件并将其包含在主httpd.conf中,不要忘记更改apache安装路径、日志和证书,然后重试。提供的代码不起作用。如何使用httpd.exe?Zach您已经执行了httpd.exe并附加了输出。您是否如我所解释的那样测试了端口?我现在已经解决了这个问题,我让http服务在端口443上运行。
Listen 443
netstat -na | findstr "443"
TCP    [::]:443               [::]:0                 LISTENING