【问题标题】:SSL installed on Apache2 but HTTPS not workingSSL 安装在 Apache2 上,但 HTTPS 不工作
【发布时间】:2013-07-15 00:02:05
【问题描述】:

我最近在运行 Apache 2 的 Amazon EC2 Ubuntu 12.04(32 位)服务器上安装了 SSL 证书。

当我尝试通过 https 访问我的网站时,它不会加载。当我执行 nmap 扫描时,我看到端口 443 未打开。

我试图在我的 ip 表中打开端口 443,但无济于事。 iptables -Lyields

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

这是我安装 ssl 的方式

我修改了 /etc/init.d/apache2.conf 以包含 ssl.conf 并修改 ssl.conf 以包含必要条件 我的证书文件的路径,即

SSLCertificateFile /路径/文件 SSLCertificateKeyFile /路径/文件 SSLCertificateChainFile /路径/文件

我将我的安全组配置为允许来自端口 443(TCP 源:0.0.0.0/0)的入站请求

当我用 php 执行以下测试时

if (!extension_loaded('openssl')) 
{
  echo "not loaded";
}
else
{
  echo "loaded"   ;
}

我被“加载”了。

有什么想法吗?

【问题讨论】:

  • 当您尝试在端口 443 上打开从远程计算机到服务器的 telnet 连接时会发生什么?它连接吗?如果是这样,那么您可以排除防火墙或路由问题,或 iptables 问题。如果您的 apache 日志显示任何有趣的内容,我也会很好奇。
  • telnet 到 443 返回“连接被拒绝”。当我尝试访问 mydomain.net 时,没有任何内容附加到 apache 日志中
  • 有趣。如果您尝试从主机本身在端口 443 上进行环回连接怎么样?换句话说,telnet localhost 443。这样可以连接吗?我正在尝试确定这是 apache 问题还是网络/防火墙问题。
  • 啊,看起来像是 apache 问题。谢谢

标签: apache ssl amazon-ec2 firewall iptables


【解决方案1】:

首先,检查端口“80”和“443”sudo netstat -peanut | grep ':80'*sudo netstat -peanut | grep ':443'* 上的进程。如果 443 没有进程,那么这将有所帮助: 编辑 Apache 配置文件以提供证书效果很好。 使用命令sudo certbot --apache 你很好

【讨论】:

    【解决方案2】:

    如果其他人发现此问题并使用 Amazon Lightsail(如我),您必须使用他们的 Web UI 明确打开端口 443。

    在我发现之前,我花了好几个小时检查我的服务器配置文件:/

    【讨论】:

    • 你是救星
    • 谢谢,这是给我的提示。我有一个 EC2 实例链接到一个没有 HTTPS 入站规则的安全组 (443)。
    • 谢谢!完全错过了这个
    • 如果有人在 oracle 云上,同样的事情!
    【解决方案3】:

    对我来说,这是愚蠢的 Chrome 缓存。 Ctrl + Shift + Del 清除缓存,重启 Chrome,SSL 现在可以正常工作了。

    【讨论】:

      【解决方案4】:

      如果 SSL 密钥未设置(或被 gremlins 莫名其妙地注释掉),Apache 2.2 SSL 将静默失败。日志不会有错误,也不会监听443。http:80站点可以工作。

      【讨论】:

        【解决方案5】:

        我刚刚遇到了这样一种情况,有一个进程在监听 443 端口,防火墙完全打开,SELinux 被禁用,而我仍然无法 telnet 到端口 443。甚至从本地主机。我不断得到:

        telnet 127.0.0.1 443
        telnet: connect to address 127.0.0.1: Connection refused`
        

        事实证明 iptables NAT 表有一些规则将来自端口 443 的流量重定向到不同的端口 (8443)。 8443 端口上没有任何监听。

        # iptables --table nat --list
        Chain PREROUTING (policy ACCEPT)
        target     prot opt source               destination         
        REDIRECT   tcp  --  anywhere             anywhere            tcp dpt:https redir ports 8443 
        

        删除相关的 NAT 条目为我解决了这个问题。

        【讨论】:

          【解决方案6】:

          首先检查是否启用了 mod_ssl。如果没有,请通过运行 a2enmod ssl 启用它。然后检查 Apache 是否在端口 443 上侦听 https。然后检查防火墙是否没有阻塞 443 端口。

          【讨论】:

          • 我也是。请检查您的入站防火墙端口,在这种情况下为 443。
          • 谢谢兄弟,你救了我。
          【解决方案7】:

          在 httpd.conf 中默认禁用以下功能:

          # Secure (SSL/TLS) connections
          # Include conf/extra/httpd-ssl.conf    
          

          只需从 Include 中删除 # 并重新启动 Apache。

          【讨论】:

          • 多亏了这个,我现在可能要上班了。谢谢。
          【解决方案8】:

          有时 iptables -F 会起作用。我在 Amazon 中为入站打开了 443 端口,但该网站仍然没有在我的浏览器中打开。

          登录该站点,输入 iptables -F 即可立即访问该站点。

          【讨论】:

          【解决方案9】:

          如果您可以在本地连接(例如,按照 mti 的建议使用 telnet localhost 443),请检查防火墙是否配置正确。

          在我的例子中,ufw 阻止了一切,所以我不得不 ufw allow 443 将潜在问题修复为相同的症状。

          【讨论】:

          • 谢谢,这个想法帮助我们解决了问题。对我们来说,它是企业防火墙,所以人们也应该考虑到这一点。
          【解决方案10】:

          在httpd-ssl.conf中,你有 听着 443

          如果没有,请尝试添加它,然后重新启动 apache。

          【讨论】:

          • 我没有。当我使用 apache2.conf(ubuntu thing?) 加载外部 ssl.conf 时,我在任何地方都没有这个指令。将它直接添加到我的 apache conf 并重新配置虚拟主机指令 / mod_ssl.so 包括已解决的事情。谢谢
          • 这对我也有用,只是我必须修改“ports.conf”
          • 在 apache 2.4 中文件是 ports.conf
          • @Bakhshi——这取决于你的 apache 分布、你的平台和默认配置...... xampp 在 Windows 上使用 httpd-ssl.conf 中的 ssl 设置分发 apache 2.4.*,它是默认启用端口 443...此文件中的虚拟主机部分需要进行一些更改以指向特定域,但它不在 ports.conf 中
          • 您可以将其作为 conf 文件的第一行,在标签之外,始终有效
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-11-20
          • 1970-01-01
          • 2019-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-18
          相关资源
          最近更新 更多