当前位置:首页 > 行业动态 > 正文

https证书攻略

HTTPS证书用于加密传输与验证身份,分DV、OV、EV三类

HTTPS证书基础概念

  1. 什么是HTTPS证书?
    HTTPS证书(SSL/TLS证书)是用于在Web服务器与浏览器之间建立加密连接的数字证书,它通过验证服务器身份并加密传输数据,解决HTTP明文传输的安全问题。

  2. 证书类型
    | 类型 | 验证方式 | 信任等级 | 适用场景 |
    |——|———-|———-|———-|
    | DV SSL(域名验证) | 仅验证域名所有权 | 低 | 个人博客、测试站点 |
    | OV SSL(企业验证) | 验证企业身份+域名 | 中 | 企业官网、电商平台 |
    | EV SSL(扩展验证) | 严格企业验证+域名 | 高 | 金融、政府等高安全需求站点 |

  3. 证书颁发机构(CA)

    • 受信任的CA:如Let’s Encrypt(免费)、DigiCert、GlobalSign等。
    • 自签名证书:仅用于内部测试,浏览器会提示不受信任。

HTTPS证书申请流程

选择证书类型

根据需求选择免费(如Let’s Encrypt)或付费证书(OV/EV)。

生成密钥与CSR(证书签名请求)

  • 命令行生成(OpenSSL示例)
    openssl req -newkey rsa:2048 -nodes -keyout private.key -out request.csr
    • private.key:私钥文件,需严格保密。
    • request.csr:CSR文件,提交给CA。

提交CSR并完成验证

  • DV证书:通过DNS解析、文件上传或邮箱验证域名所有权。
  • OV/EV证书:需提供企业营业执照、域名所有权证明等材料。

获取证书文件

CA审核通过后,下载证书文件包(通常包含.crt.pem文件)。


HTTPS证书安装步骤

通用配置流程

  • 上传文件:将CA颁发的证书链文件(如chain.pem)和私钥(private.key)上传至服务器。
  • 修改Web服务器配置
    • Apache:编辑httpd.conf或站点配置文件,添加:
      SSLEngine on
      SSLCertificateFile /path/to/cert.pem
      SSLCertificateKeyFile /path/to/private.key
      SSLCertificateChainFile /path/to/chain.pem
    • Nginx:在server块中配置:
      server {
          listen 443 ssl;
          ssl_certificate /path/to/cert.pem;
          ssl_certificate_key /path/to/private.key;
          ssl_trusted_certificate /path/to/chain.pem;
      }

自动化工具安装(以Let’s Encrypt为例)

  • 使用Certbot
    certbot --apache -d example.com -d www.example.com
    • 自动生成证书、修改配置并启用HTTPS。
    • 续期:添加certbot renew到crontab,实现自动续期。

常见问题与解决方案

浏览器提示“证书无效”

问题原因 解决方案
证书过期 重新申请或续期证书
域名不匹配 检查CSR中的域名是否与访问地址一致
证书链缺失 确保服务器配置中包含中间证书链

HTTP与HTTPS混用导致资源加载失败

  • 原因:页面中部分资源(如图片、JS)仍通过http://加载。
  • 解决方案
    • 修改资源URL为https://
    • 使用浏览器插件(如“HTTPS Everywhere”)强制加密。

相关问题与解答

Q1:免费证书(如Let’s Encrypt)与付费证书有什么区别?

  • 验证流程:免费证书通常仅需域名验证,付费证书需企业身份验证。
  • 信任等级:付费证书(尤其是EV)浏览器地址栏会显示企业名称,增强信任。
  • 有效期:Let’s Encrypt证书有效期90天,付费证书通常为1-2年。

Q2:如何强制网站所有流量使用HTTPS?

  • 方法
    1. 在Web服务器配置中重定向HTTP到HTTPS:
      • Apache:添加Redirect permanent / https://example.com/
      • Nginx:使用return 301 https://$host$request_uri;
    2. 启用HSTS(HTTP Strict Transport Security):
      在HTTPS响应头中添加Strict-Transport-Security: max-age=31536000; includeSubDomains,告知浏览器强制使用HTTPS
0