导读:本期聚焦于吴凌云创作的《Apache SSL证书如何申请与部署?从免费证书到HTTPS上线的完整流程详解》,敬请观看详情。网站不启用HTTPS,浏览器会直接标记为不安全,用户信任度和SEO排名都会受影响。本文围绕Apache环境下的SSL证书申请与部署展开,先讲清证书类型的选择思路,对比自签名证书、Let's Encrypt免费证书和付费商业证书的适用场景,再演示Certbot自动申请与手动配置两种方式,最后给出Apache中开启SSL模块、配置虚拟主机、强制HTTP跳转HTTPS以及混合内容修复的完整操作步骤,并附上常见报错的排查方法,帮助读者顺利让网站挂上小绿锁。

HTTP协议以明文传输数据,账号密码、Cookie等敏感信息在链路中裸奔,中间人可以轻松截获甚至篡改内容。给Apache加上SSL证书、切换到HTTPS,是解决这一问题的标准做法。整个流程可以拆成三步:选证书、申请证书、部署到Apache并验证。下面把每一步的细节和坑都讲清楚。

Apache SSL证书如何申请与部署?从免费证书到HTTPS上线的完整流程详解

一、先搞清楚SSL证书怎么选

证书本质上是CA机构对域名所有权的背书,按验证等级分为DV(域名验证)、OV(组织验证)和EV(扩展验证)三类。个人网站和中小型企业站用DV证书完全够用,签发速度快,几分钟就能完成;OV和EV证书需要审核企业资质,价格更高,主要用在金融、电商等对信任要求高的场景。

从获取渠道看,常见的有三条路。第一条是自签名证书,用openssl命令自己生成,不花钱但浏览器不信任,只适合内部测试环境。第二条是Let's Encrypt免费证书,目前是个人站长的主流选择,有效期90天,支持自动续期,通过Certbot工具申请非常方便。第三条是云厂商或商业CA的付费证书,阿里云、腾讯云都提供免费版DV证书(每年20张额度),商业证书则有多域名、通配符等更灵活的类型。

如果你的站点有多个子域名,比如api.ippipp.comwww.ippipp.com,建议直接申请通配符证书(Wildcard),一张证书覆盖所有子域名,管理起来省心得多。Let's Encrypt的通配符证书要求通过DNS方式验证域名所有权,稍后会讲到。

二、用Certbot申请Let's Encrypt免费证书

Certbot是官方推荐的申请工具,以CentOS和Ubuntu为例,安装方式略有不同。Ubuntu下可以直接用apt安装:

sudo apt update
sudo apt install certbot python3-certbot-apache -y

如果是CentOS,需要先启用EPEL源:

sudo yum install epel-release -y
sudo yum install certbot python3-certbot-apache -y

申请证书最简单的方式是让Certbot自动读取Apache配置:

# 自动发现虚拟主机并申请证书,同时自动修改配置
sudo certbot --apache -d ippipp.com -d www.ippipp.com

# 只申请证书,不改动Apache配置,适合手动部署
sudo certbot certonly --apache -d ippipp.com

如果Certbot的Apache插件因为配置复杂识别不了站点,可以退回到webroot模式,它会往网站根目录放一个验证文件:

sudo certbot certonly --webroot -w /var/www/html -d ippipp.com

申请成功后,证书文件会落在/etc/letsencrypt/live/ippipp.com/目录下,其中fullchain.pem是完整证书链,privkey.pem是私钥,Apache配置里要用的就是这两个文件。通配符证书则必须走DNS验证,把Certbot给出的TXT记录添加到域名解析后台即可:

sudo certbot certonly --manual --preferred-challenges dns -d "*.ippipp.com" -d ippipp.com

由于Let's Encrypt证书只有90天有效期,别指望手动记得续期,直接配置定时任务:

sudo crontab -e
# 每天凌晨2点检查续期,到期前30天内自动完成
0 2 * * * /usr/bin/certbot renew --quiet

三、Apache端部署与HTTPS配置

拿到证书后,第一步是确认Apache的SSL模块已启用。Ubuntu下执行sudo a2enmod ssl,CentOS下检查/etc/httpd/conf.modules.d/00-ssl.confmod_ssl的加载语句是否被注释掉。同时建议开启mod_headers,后面配置HSTS会用到。

接着在虚拟主机配置中监听443端口。以Ubuntu为例,在/etc/apache2/sites-available/下新建配置文件:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName ippipp.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/ippipp.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ippipp.com/privkey.pem

    # 推荐的TLS协议与加密套件
    SSLProtocol -all +TLSv1.2 +TLSv1.3
    SSLCipherSuite HIGH:!aNULL:!MD5

    # HSTS,强制浏览器后续只用HTTPS访问
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=31536000"
    </IfModule>
</VirtualHost>
</IfModule>

写完配置先别急着重启,用sudo apachectl configtest检查语法,输出Syntax OK后再执行sudo systemctl reload apache2(CentOS上是httpd)平滑加载。别忘了防火墙放行443端口:sudo ufw allow 443/tcpfirewall-cmd --permanent --add-service=https

四、强制HTTP跳转与收尾检查

证书部署完,80端口的HTTP访问依然可用,需要做301跳转把所有流量导向HTTPS。在80端口的虚拟主机里加一条Rewrite规则:

<VirtualHost *:80>
    ServerName ippipp.com
    RewriteEngine On
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

上线后要验证两件事。一是证书链是否完整,用浏览器开发者工具查看,或访问SSL Labs的在线检测工具评分,A级别说明配置合格。二是页面里是否残留HTTP资源,比如图片、脚本还走http协议,浏览器会标记混合内容并拦截其中一部分请求,控制台里会有明确提示,把这些资源地址改成https或相对协议即可。

几个高频报错也顺便列一下:SSLCertificateKeyFile: file does not exist多半是路径拼错或权限问题,私钥目录默认只有root可读,Apache主进程需要能读到它;浏览器提示证书链不完整,说明SSLCertificateFile用的不是fullchain而是单独的cert文件;配置了TLSv1.3后老客户端连不上,检查SSLProtocol里是否误禁了TLSv1.2。按这套流程走下来,网站地址栏的小锁图标就能稳定亮起来了。

Apache SSL证书HTTPS配置Let&#039;s Encrypt修改时间:2026-09-12 18:58:38

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260912/55491.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。