无法使 SSL 与 Apache 协同工作

无法使 SSL 与 Apache 协同工作

好的,我正在尝试配置我的服务器以接受 SSL 连接,但无法使其正常工作。我知道网站上有很多类似的问题,但到目前为止我遇到的每一个问题似乎都没有帮助。

我会发布尽可能多的信息,希望您能够提供帮助。

我的 apache 版本是:2.2.14(在 Ubuntu 上运行)。下面的信息似乎显示 SSL 已配置并运行良好,但当我尝试访问https://website.com请求超时。

我通过GoDaddy获得了SSL证书,并按照流程生成了.crt文件。

我有以下文件:

/home/ubuntu/ssl/website.com.crt
/home/ubuntu/ssl/website.com.key
/home/ubuntu/ssl/gd_bundle.crt

根据我的配置文件:

/etc/apache2/ports.conf

NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
Listen 443

/etc/apache2/sites-enabled/000-默认-ssl

<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName website.com

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

LogLevel warn

CustomLog /var/log/apache2/ssl_access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

    SSLEngine on
SSLCertificateFile    /home/ubuntu/ssl/website.com.crt
SSLCertificateKeyFile /home/ubuntu/ssl/website.com.key
    SSLCertificateChainFile /home/ubuntu/ssl/gd_bundle.crt

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>

该网站通过普通 HTTP 运行良好,因此我不会发布其配置(如果您想看的话我可以发布!)

  • Apache 重新启动且没有错误。
  • 错误日志文件中似乎没有任何错误。

netstat 命令显示 apache 正在监听正确的端口:

    netstat -tap | grep https
    tcp   0   0   *:https   *:*   LISTEN   24840/apache2

我偶然发现了客户端命令。

    openssl s_client -connect localhost:443

当使用localhost时,一切似乎都正常(不能说我知道什么是正常,但是有很多相关信息输出并且似乎没有任何错误)。

    openssl s_client -connect <ip-address>:443
    openssl s_client -connect website.com:443

以上两个输出错误:

    connect: Connection timed out
    connect:errno=110

在尝试使 SSL 工作时,我遇到了许多上述诊断信息,但我不确定如何处理这些信息,现在我陷入了困境。

如果您需要更多信息,请直接询问!

谢谢,汤姆。

答案1

错误

Connection timed out

表示openssl甚至无法在您的服务器的 443 端口上完成 TCP 握手。

最可能的问题在于您的iptables配置或托管服务提供商运行的外部防火墙。

答案2

简单谷歌搜索SSL 错误 110带来了许多与 GoDaddy 和 SSL 相关的问题。

如果 GoDaddy 也是您的托管服务提供商,我建议向他们提出这个问题,因为这似乎是他们那边的问题。

答案3

我注意到:

<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

特别是这一Allow from行。所以基本上它只允许来自本地主机的连接。因此连接到 localhost:443 可以正常工作,但通过面向外部的 IP 地址进行连接将不起作用。

我会将其与您在非 SSL<VirtualHost>部分中的内容进行比较并使用它。

相关内容