在Apache2上安装SSL但HTTPS无法正常工作

时间:2013-07-16 17:04:35

标签: apache ssl amazon-ec2 firewall iptables

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

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

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

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 / path / file SSLCertificateKeyFile / path / file SSLCertificateChainFile / path / file

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

当我用php执行以下测试时

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

我得到“加载”。

有什么想法吗?

10 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:11)

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

答案 2 :(得分:5)

在httpd.conf中,默认情况下禁用以下内容:

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

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

答案 3 :(得分:3)

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

在我的情况下,ufw阻止了所有内容,因此我不得不ufw allow 443将基础问题修复为相同的症状。

答案 4 :(得分:0)

我刚遇到有一个进程在端口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条目为我解决了问题。

答案 5 :(得分:0)

如果未设置SSL密钥(或由gremlins莫名其妙地注释掉了SSL密钥),则Apache 2.2 SSL将无提示地失败。日志中没有错误,也不会监听443。http:80站点将正常工作。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

如果其他人找到了这个并且正在使用Amazon Lightsail(像我一样),则必须使用其Web UI显式打开端口443。

在发现:/

之前,我花了数小时来查看服务器配置文件

答案 8 :(得分:0)

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

答案 9 :(得分:-5)

有时 iptables -F 有效。我在亚马逊上打开了入境端口443,但该网站仍未在我的浏览器中打开。

登录到该网站,提供了iptables -F,并立即访问该网站。