温馨提示×

Debian系统OpenSSL证书如何管理

小樊
32
2025-12-09 08:27:19
栏目: 云计算

Debian 上 OpenSSL 证书管理实操指南

一 安装与基础检查

  • 安装工具与证书包:
    • 安装 OpenSSL 与开发库:sudo apt update && sudo apt install openssl libssl-dev
    • 安装或更新系统根证书集合:sudo apt install --only-upgrade ca-certificates
    • 刷新 CA 证书缓存:sudo update-ca-certificates
  • 查看版本与基础信息:
    • 查看 OpenSSL 版本:openssl version
    • 查看证书有效期:openssl x509 -in server.crt -noout -dates
    • 查看证书链与服务器连通性:openssl s_client -connect example.com:443 -servername example.com -showcerts
  • 权限建议:私钥仅对必要用户可读,推荐权限为 600;证书 644

二 生成密钥与证书

  • 生成私钥(推荐加密保存):
    • RSA 2048:openssl genpkey -algorithm RSA -out private.key -aes256
    • 或 RSA 4096:openssl genpkey -algorithm RSA -out private.key -aes256 -pkeyopt rsa_keygen_bits:4096
  • 生成 CSR(证书签名请求):
    • openssl req -new -key private.key -out server.csr
  • 自签名证书(测试/内网可用,默认 365 天):
    • 一步法:openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
    • 两步法:openssl x509 -req -days 365 -in server.csr -signkey private.key -out server.crt
  • 查看证书内容:openssl x509 -in server.crt -text -noout
  • 验证证书(需 CA 证书或中间证书链):openssl verify -CAfile ca_bundle.crt server.crt

三 部署到 Web 服务器

  • Nginx
    • 放置证书与私钥(示例):
      • sudo cp server.crt /etc/ssl/certs/
      • sudo cp private.key /etc/ssl/private/
    • 配置片段:
      • ssl_certificate /etc/ssl/certs/server.crt;
      • ssl_certificate_key /etc/ssl/private/private.key;
    • 语法检查与生效:sudo nginx -t && sudo systemctl restart nginx
  • Apache
    • 配置片段:
      • SSLEngine on
      • SSLCertificateFile /path/to/server.crt
      • SSLCertificateKeyFile /path/to/private.key
      • 如有中间证书:SSLCACertificateFile /path/to/intermediate.crt
    • 启用站点与生效:sudo a2ensite default-ssl && sudo systemctl restart apache2
  • 证书链
    • 将中间证书与服务器证书合并为一个链文件(推荐):cat server.crt intermediate.crt > server_chain.crt
    • Nginx 使用:ssl_certificate /path/to/server_chain.crt;

四 更新与续期

  • 系统 CA 证书更新
    • 升级包并刷新缓存:sudo apt update && sudo apt install --only-upgrade ca-certificates && sudo update-ca-certificates
    • 必要时重启依赖服务:sudo systemctl restart nginx apache2
  • Let’s Encrypt 证书
    • 测试续期:sudo certbot renew --dry-run
    • 执行续期:sudo certbot renew
    • 续期后重启服务:sudo systemctl restart nginx apache2
  • 自签名或手动证书
    • 重新生成私钥与证书(参考第二节),替换文件后重启服务
  • 验证
    • 查看新证书有效期:openssl x509 -in server.crt -noout -dates
    • 在线链验证:openssl s_client -connect example.com:443 -servername example.com -showcerts

五 吊销与内部 CA 管理

  • 准备 OpenSSL 配置
    • 复制示例配置:sudo cp /usr/share/doc/openssl/openssl.cnf /root/ssl.cnf
    • 按需调整 [ CA_default ] 路径(如 dir = /root/CA
  • 初始化 CA
    • 创建目录结构:mkdir -p /root/CA/{certs,crl,newcerts,private} && touch /root/CA/index.txt && echo 1000 > /root/CA/serial
    • 生成 CA 私钥与根证书:openssl genpkey -algorithm RSA -out /root/CA/private/ca.key -aes256openssl req -new -x509 -key /root/CA/private/ca.key -out /root/CA/ca.crt -days 3650
  • 签发服务器证书
    • 用 CSR 签发:openssl ca -config /root/ssl.cnf -in server.csr -out server.crt -batch
  • 吊销与 CRL
    • 吊销证书:openssl ca -config /root/ssl.cnf -revoke /root/CA/newcerts/1000.pem
    • 生成 CRL:openssl ca -config /root/ssl.cnf -gencrl -out /root/CA/crl/ca.crl
    • 分发并在服务中配置 CRL 检查(按需)
  • 验证
    • 校验证书是否被 CA 签发:openssl verify -CAfile /root/CA/ca.crt server.crt

0