http的ssl证书怎么获取?免费申请https证书教程
- 云服务器
- 2026-07-08
- 10
获取 HTTP 协议的 SSL 证书(更准确地说,是为 HTTPS 服务获取证书)是保障网站数据安全、提升用户信任度的关键步骤,目前获取证书主要有三种主流途径:通过证书颁发机构(CA)购买、使用免费证书服务(如 Let’s Encrypt),以及自建私有 CA。
以下是详细的获取流程与对比分析。
核心概念澄清
首先需要明确,HTTP 本身是不加密的协议,SSL/TLS 证书是用于将 HTTP 升级为 HTTPS 的。“获取 HTTP 的 SSL 证书”实际上是指“获取用于配置 HTTPS 的 SSL/TLS 证书”。
获取 SSL 证书的三种主要方式
购买商业证书(适合企业级应用)
商业证书由受信任的 CA(如 DigiCert, GlobalSign, Sectigo 等)颁发,通常提供更高的赔偿保障和更长的验证周期。

- 适用场景:电商平台、银行、政府网站、大型企业内部系统。
- 验证类型:
- DV (Domain Validation):仅验证域名所有权,最快几分钟生效。
- OV (Organization Validation):验证域名及企业身份,需人工审核。
- EV (Extended Validation):最高级别,浏览器地址栏显示绿色企业名称(目前主流浏览器已弱化此视觉特征,但安全性最高)。
获取步骤:
- 选择 CA 服务商:访问阿里云、西西安全、GoDaddy 或 DigiCert 官网。
- 生成 CSR 文件:
- 在服务器上使用 OpenSSL 命令生成私钥和 CSR(Certificate Signing Request)。
- 命令示例:openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
- 提交 CSR:将生成的 .csr 文件内容复制到 CA 的购买页面。
- 完成验证:
- DNS 验证:在域名解析中添加一条 TXT 记录。
- 文件验证:将 CA 提供的验证文件上传至网站根目录。
- 邮箱验证:点击发送至管理员邮箱的确认链接。
- 下载证书:验证通过后,下载证书文件(通常包含 .crt 或 .pem 文件及中间证书)。
- 安装配置:将证书和私钥配置到 Web 服务器(Nginx, Apache, IIS 等)。
使用免费证书(适合个人博客、初创项目)
目前最主流的免费证书提供商是 Let’s Encrypt,它由 Mozilla、Cisco、Akamai 等组织支持,自动化程度极高。
- 适用场景:个人网站、测试环境、初创公司项目。
- 优点:完全免费、自动化续签、全球受信任。
- 缺点:有效期仅 90 天(需自动续签),不支持 EV 证书,无电话技术支持。
获取步骤(以 Certbot 为例):

- 安装 Certbot: sudo apt-get install certbot python3-certbot-nginx # Ubuntu/Debian sudo yum install certbot python3-certbot-nginx # CentOS
- 自动获取并配置: sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
该命令会自动检测 Nginx 配置,生成证书,修改配置文件以启用 HTTPS,并设置自动续签。
- 手动获取(不使用 Web 服务器插件): sudo certbot certonly --standalone -d yourdomain.com
- 证书文件通常位于 /etc/letsencrypt/live/yourdomain.com/ 目录下。
自建私有 CA(适合内网系统、IoT 设备)
对于不对外公开的内部系统,可以使用 OpenSSL 自建 CA,避免购买成本。
- 适用场景:公司内部系统、局域网服务、物联网设备通信。
- 注意:浏览器和操作系统默认不信任自建 CA,需在客户端手动安装根证书,否则会出现“不安全”警告。
获取步骤简述:
- 生成 CA 私钥和自签名根证书: openssl req -x509 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3650 -nodes
- 生成服务器私钥和 CSR: openssl req -newkey rsa:2048 -keyout server.key -out server.csr -nodes
- 用 CA 签署服务器证书: openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
- 分发:将 ca.crt 分发给所有需要信任该内网服务的客户端设备。
证书类型与选择对比表
| 特性 | 商业 DV 证书 | 商业 OV/EV 证书 | Let’s Encrypt (免费) | 自建 CA |
|---|---|---|---|---|
| 价格 | 年费几十至数千美元 | 年费数百至数千美元 | 免费 | 免费(仅人力成本) |
| 验证方式 | 域名 DNS/文件/邮箱 | 域名 + 企业工商资料 | 域名 DNS/HTTP | 无需外部验证 |
| 审核时间 | 几分钟 24 小时 | 1 5 个工作日 | 自动,即时 | 即时 |
| 有效期 | 1 年 | 1 年 | 90 天(需自动续签) | 自定义(如 10 年) |
| 浏览器信任 | 完全信任 | 完全信任 | 完全信任 | 不信任(需手动安装) |
| 适用对象 | 个人网站、中小企业 | 大型企业、金融机构 | 个人、初创、开源项目 | 内网、私有云、IoT |
证书安装后的关键检查
无论通过何种方式获取证书,安装后必须进行以下检查:

- HTTPS 访问测试:使用浏览器访问 https://yourdomain.com,查看地址栏是否显示锁形图标。
- 证书链完整性:使用在线工具(如 SSL Labs)检测证书链是否完整,避免中间证书缺失导致部分客户端报错。
- 强制 HTTPS 跳转:在 Web 服务器配置中,将 HTTP 请求 301 重定向到 HTTPS,确保所有流量加密。
- HSTS 配置:启用 HTTP Strict Transport Security,防止降级攻破。
相关问题与解答
问题 1:Let’s Encrypt 证书的 90 天有效期是否意味着需要手动频繁更新?如何避免中断服务?
解答:
不需要手动频繁更新,Let’s Encrypt 的设计初衷就是自动化,您可以通过以下方式实现自动续签:
- 使用 Certbot 的自动续签功能:Certbot 默认会在系统中安装一个 cron 任务或 systemd timer,每 60 天自动检查并续签证书。
- 手动测试续签:可以运行 sudo certbot renew --dry-run 来测试续签流程是否正常,而不会真正修改证书。
- Web 服务器集成:如果使用 Nginx 或 Apache 的 Certbot 插件,续签后会自动重载 Web 服务器配置,无需人工干预。
- 注意:确保服务器防火墙允许 80 和 443 端口在续签时可达,或者使用 DNS 验证模式(不依赖 Web 服务器端口)。
问题 2:为什么我的网站配置了 SSL 证书,但浏览器仍然显示“不安全”或警告?
解答:
这通常由以下几个原因导致,请按顺序排查:
- 证书链不完整:最常见的原因是只安装了服务器证书,未安装中间证书(Intermediate CA),请确保在 Nginx/Apache 配置中,ssl_certificate 指向包含完整链的 .crt 文件,或单独配置 ssl_trusted_certificate。
- (Mixed Content):页面主体是 HTTPS,但加载了 HTTP 协议的图片、脚本或样式表,浏览器会阻止或警告,需检查页面源码,将所有资源链接改为 HTTPS 或相对路径。
- 证书域名不匹配:证书绑定的域名与访问的域名不一致(例如证书是 www.example.com,但访问的是 example.com,且未配置 SAN 扩展),需确认证书包含所有需要的域名,或使用通配符证书 .example.com。
- 证书已过期:检查证书的有效日期,特别是 Let’s Encrypt 证书若未正确配置自动续签,极易过期。
- 自签名证书:如果是自建 CA 或自签名证书,浏览器默认不信任,需手动在客户端信任该根证书。