You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 7环境下Apache服务器443端口SSL连接报错如何解决?

报错原因

你遇到的SSL报错核心原因是443端口上运行的仍然是普通HTTP协议的服务,没有启用HTTPS/SSL能力,客户端发起SSL握手请求后,收到的是普通HTTP响应,无法完成SSL协议解析,才会抛出SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol错误。具体可拆解为3个配置缺失:

  • 未安装启用Apache的SSL模块mod_ssl,Apache本身不具备处理HTTPS请求的能力
  • 仅修改了虚拟主机的监听端口为443,没有添加SSL引擎开启、证书配置等HTTPS必填参数
  • 直接将Listen 80改为Listen 443,本质是让Apache用HTTP协议监听443端口,而非HTTPS协议
解决步骤
  1. 安装SSL模块
    首先安装Apache的SSL扩展模块,安装完成后会自动生成默认SSL配置文件,无需手动加载模块:
sudo yum install mod_ssl -y

安装完成后打开/etc/httpd/conf/httpd.conf,删除你之前手动修改的Listen 443配置,避免和mod_ssl自带的端口监听规则冲突。

  1. 准备SSL证书
    如果是测试环境可以直接生成自签名证书,生产环境建议使用权威CA签发的证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache.key -out /etc/pki/tls/certs/apache.crt

执行命令后按照提示填写相关信息即可。

  1. 完善虚拟主机配置
    修改你的443端口虚拟主机配置,补充SSL相关参数,完整示例如下:
<VirtualHost *:443>
    # 开启SSL引擎
    SSLEngine on
    # 配置证书和私钥路径
    SSLCertificateFile /etc/pki/tls/certs/apache.crt
    SSLCertificateKeyFile /etc/pki/tls/private/apache.key
    
    # 保留你原来的虚拟主机配置
    ServerName my_dns
    DocumentRoot /你的站点根目录路径
    <Directory /你的站点根目录路径>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  1. 开放防火墙端口
    你之前未配置firewalld,需要放行HTTPS默认的443端口:
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
  1. 验证配置并重启服务
    先检查Apache配置语法是否正确:
sudo apachectl configtest

返回Syntax OK后重启服务生效:

sudo systemctl restart httpd
  1. 验证HTTPS访问
    如果使用自签名证书,访问时需要添加跳过证书校验的参数:
wget https://my_dns --no-check-certificate

内容的提问来源于stack exchange,提问作者Tristan Tran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:15:02