当前位置:首页 > 云服务器 > 正文

http的ssl证书怎么获取?免费申请https证书教程

获取 HTTP 协议的 SSL 证书(更准确地说,是为 HTTPS 服务获取证书)是保障网站数据安全、提升用户信任度的关键步骤,目前获取证书主要有三种主流途径:通过证书颁发机构(CA)购买、使用免费证书服务(如 Let’s Encrypt),以及自建私有 CA。

以下是详细的获取流程与对比分析。

核心概念澄清

首先需要明确,HTTP 本身是不加密的协议,SSL/TLS 证书是用于将 HTTP 升级为 HTTPS 的。“获取 HTTP 的 SSL 证书”实际上是指“获取用于配置 HTTPS 的 SSL/TLS 证书”。

获取 SSL 证书的三种主要方式

购买商业证书(适合企业级应用)

商业证书由受信任的 CA(如 DigiCert, GlobalSign, Sectigo 等)颁发,通常提供更高的赔偿保障和更长的验证周期。

http的ssl证书怎么获取?免费申请https证书教程 第1张

  • 适用场景:电商平台、银行、政府网站、大型企业内部系统。
  • 验证类型
    • DV (Domain Validation):仅验证域名所有权,最快几分钟生效。
    • OV (Organization Validation):验证域名及企业身份,需人工审核。
    • EV (Extended Validation):最高级别,浏览器地址栏显示绿色企业名称(目前主流浏览器已弱化此视觉特征,但安全性最高)。

获取步骤:

  1. 选择 CA 服务商:访问阿里云、西西安全、GoDaddy 或 DigiCert 官网。
  2. 生成 CSR 文件
    • 在服务器上使用 OpenSSL 命令生成私钥和 CSR(Certificate Signing Request)。
    • 命令示例:openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
  3. 提交 CSR:将生成的 .csr 文件内容复制到 CA 的购买页面。
  4. 完成验证
    • DNS 验证:在域名解析中添加一条 TXT 记录。
    • 文件验证:将 CA 提供的验证文件上传至网站根目录。
    • 邮箱验证:点击发送至管理员邮箱的确认链接。
  5. 下载证书:验证通过后,下载证书文件(通常包含 .crt 或 .pem 文件及中间证书)。
  6. 安装配置:将证书和私钥配置到 Web 服务器(Nginx, Apache, IIS 等)。

使用免费证书(适合个人博客、初创项目)

目前最主流的免费证书提供商是 Let’s Encrypt,它由 Mozilla、Cisco、Akamai 等组织支持,自动化程度极高。

  • 适用场景:个人网站、测试环境、初创公司项目。
  • 优点:完全免费、自动化续签、全球受信任。
  • 缺点:有效期仅 90 天(需自动续签),不支持 EV 证书,无电话技术支持。

获取步骤(以 Certbot 为例):

http的ssl证书怎么获取?免费申请https证书教程 第2张

  1. 安装 Certbot: sudo apt-get install certbot python3-certbot-nginx # Ubuntu/Debian sudo yum install certbot python3-certbot-nginx # CentOS
  2. 自动获取并配置: sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

    该命令会自动检测 Nginx 配置,生成证书,修改配置文件以启用 HTTPS,并设置自动续签。

  3. 手动获取(不使用 Web 服务器插件): sudo certbot certonly --standalone -d yourdomain.com
    • 证书文件通常位于 /etc/letsencrypt/live/yourdomain.com/ 目录下。

自建私有 CA(适合内网系统、IoT 设备)

对于不对外公开的内部系统,可以使用 OpenSSL 自建 CA,避免购买成本。

  • 适用场景:公司内部系统、局域网服务、物联网设备通信。
  • 注意:浏览器和操作系统默认不信任自建 CA,需在客户端手动安装根证书,否则会出现“不安全”警告。

获取步骤简述:

  1. 生成 CA 私钥和自签名根证书: openssl req -x509 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3650 -nodes
  2. 生成服务器私钥和 CSR: openssl req -newkey rsa:2048 -keyout server.key -out server.csr -nodes
  3. 用 CA 签署服务器证书: openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
  4. 分发:将 ca.crt 分发给所有需要信任该内网服务的客户端设备。

证书类型与选择对比表

特性 商业 DV 证书 商业 OV/EV 证书 Let’s Encrypt (免费) 自建 CA
价格 年费几十至数千美元 年费数百至数千美元 免费 免费(仅人力成本)
验证方式 域名 DNS/文件/邮箱 域名 + 企业工商资料 域名 DNS/HTTP 无需外部验证
审核时间 几分钟 24 小时 1 5 个工作日 自动,即时 即时
有效期 1 年 1 年 90 天(需自动续签) 自定义(如 10 年)
浏览器信任 完全信任 完全信任 完全信任 不信任(需手动安装)
适用对象 个人网站、中小企业 大型企业、金融机构 个人、初创、开源项目 内网、私有云、IoT

证书安装后的关键检查

无论通过何种方式获取证书,安装后必须进行以下检查:

http的ssl证书怎么获取?免费申请https证书教程 第3张

  1. HTTPS 访问测试:使用浏览器访问 https://yourdomain.com,查看地址栏是否显示锁形图标。
  2. 证书链完整性:使用在线工具(如 SSL Labs)检测证书链是否完整,避免中间证书缺失导致部分客户端报错。
  3. 强制 HTTPS 跳转:在 Web 服务器配置中,将 HTTP 请求 301 重定向到 HTTPS,确保所有流量加密。
  4. 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 证书,但浏览器仍然显示“不安全”或警告?

解答:

这通常由以下几个原因导致,请按顺序排查:

  1. 证书链不完整:最常见的原因是只安装了服务器证书,未安装中间证书(Intermediate CA),请确保在 Nginx/Apache 配置中,ssl_certificate 指向包含完整链的 .crt 文件,或单独配置 ssl_trusted_certificate。
  2. (Mixed Content):页面主体是 HTTPS,但加载了 HTTP 协议的图片、脚本或样式表,浏览器会阻止或警告,需检查页面源码,将所有资源链接改为 HTTPS 或相对路径。
  3. 证书域名不匹配:证书绑定的域名与访问的域名不一致(例如证书是 www.example.com,但访问的是 example.com,且未配置 SAN 扩展),需确认证书包含所有需要的域名,或使用通配符证书 .example.com。
  4. 证书已过期:检查证书的有效日期,特别是 Let’s Encrypt 证书若未正确配置自动续签,极易过期。
  5. 自签名证书:如果是自建 CA 或自签名证书,浏览器默认不信任,需手动在客户端信任该根证书。

0