![尝试在 CentOS 6 和 Apache 上安装 Let's Encrypt 证书但无法建立连接](https://linux22.com/image/1595014/%E5%B0%9D%E8%AF%95%E5%9C%A8%20CentOS%206%20%E5%92%8C%20Apache%20%E4%B8%8A%E5%AE%89%E8%A3%85%20Let's%20Encrypt%20%E8%AF%81%E4%B9%A6%E4%BD%86%E6%97%A0%E6%B3%95%E5%BB%BA%E7%AB%8B%E8%BF%9E%E6%8E%A5.png)
我终于屈服于使用 SSL 的压力,我的网站从 1996 年就上线了……当时,获取证书既昂贵,又容易出错,而且费时……如今只剩下最后两个了!
我的 Apache 2 服务器设置非常复杂,因为我使用自己的 Ruby 调度程序并重写非静态 URL,以mod_rewrite
转到执行模板和其他动态内容等的 FastCGI 调度程序……
我是一名软件工程师,但不是一名系统管理员,所以我最终只是乱搞一番,直到一切正常,然后多年不去管服务器配置。
几年前我安装服务器时,从最小的 CentOS 安装开始,手动安装了大多数软件包(包括 Ruby、Apache、MySQL 等),并且只打开了服务器需要的端口。
我已经获得了publicspace.net
两项www.publicspace.net
证书
sudo /usr/local/bin/certbot-auto certonly --webroot --webroot-path /var/www/html
常规--apache
版本对我来说不起作用,因为我没有定义VirtualHost
。我的 Apache 配置是过去二十年来完善的拼凑物。我最终添加了虚拟主机定义(我现在非常了解它的作用),它确实有效,但我无论如何都无法--apache
运行该版本……所以我手动集成了证书。
我尝试在文件中定义 SSL 证书httpd.conf
,但事情进展不顺利,直到我意识到 SSL 虚拟主机已经在中定义/conf.d/ssl.conf
,然后我从主配置文件中取出我自己的内容,并将证书密钥添加到该文件中。
我现在处于这样的阶段:一切似乎都设置正确,但我无法在我的网络浏览器上显示页面。
openssl s_client -connect publicspace.net:443
给出:
connect: Connection refused
connect:errno=61
0 (ok)
远程完成时,但从服务器本身调用时会给出返回代码。端口已关闭,对吗?
我已经在Linux防火墙中打开了443端口,但是无济于事。
# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Wed Oct 26 17:41:47 2016
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 22 --state NEW -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 10000 --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp -m state --dport 80 --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp -m state --dport 443 --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp -m state --dport 873 --state NEW -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp -m state --dport 21 --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp -m state --dport 990 --state NEW -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Wed Oct 26 17:41:47 2016
# Generated by webmin
*mangle
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed
# Generated by webmin
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed
httpd 服务器正在监听该端口,并且通过 s_client 测试似乎接受本地连接但不接受远程连接?
我错过了什么?
答案1
对您的网站进行快速 Nmap 扫描publicspace.net
显示以下内容:
nmap publicspace.net -p22,80,443
Starting Nmap 7.70 ( https://nmap.org ) at 2019-06-20 12:28 EDT
Nmap scan report for publicspace.net (45.76.0.90)
Host is up (0.0027s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp closed https
这清楚地表明端口 443 已关闭。这可能意味着您的防火墙不允许流量到端口 443,或者 Apache 本身没有监听端口 443。
那么,您确定您的 Apache 配置正在监听端口 443 吗?您的 Apache 配置Listen 443
中是否有一行这样的内容?ssl.conf
此外,您显示了更新的 IPtables 规则/过滤器,但您是否在 IPtables 中重新启动/重新加载了这些过滤器?根据您用于管理网站的工具,除非重新启动/重新加载 IPTables 设置,否则新的 IPtables 规则/过滤器不会生效。