ubuntu中如何配置openssl安全
导读:Ubuntu 中 OpenSSL 安全配置实操指南 一 基线加固与系统准备 保持系统软件为最新,及时修补漏洞:执行 sudo apt update && sudo apt full-upgrade && s...
Ubuntu 中 OpenSSL 安全配置实操指南
一 基线加固与系统准备
- 保持系统软件为最新,及时修补漏洞:执行 sudo apt update & & sudo apt full-upgrade & & sudo reboot。
- 安装或确认已安装 OpenSSL:sudo apt install openssl ca-certificates。
- 使用受信任的 CA 证书链:确保 /etc/ssl/certs/ca-certificates.crt 存在且为最新,必要时执行 sudo update-ca-certificates。
- 文件权限最小化:私钥仅对必要账户可读,例如 chmod 600 server.key,chown root:ssl-cert server.key;证书可读即可 644。
- 禁用过时和不安全算法与协议:在应用或 OpenSSL 配置中避免 SSLv2/SSLv3/TLS1.0/TLS1.1、DES/RC4、MD5、SHA-1 等。
二 OpenSSL 配置文件安全要点
- 主配置文件通常为 /usr/lib/ssl/openssl.cnf(不同版本路径可能不同,可用 dpkg -L openssl | grep openssl.cnf 查找)。
- 建议的安全基线示例(按需裁剪到你的版本支持的指令集):
- 协议与算法:
- CipherString = DEFAULT@SECLEVEL=2(等价于要求 ECDHE 密钥交换、AES-GCM/ChaCha20-Poly1305、RSA/ECDSA 证书,禁用 NULL/EXPORT/DES/RC4/MD5/SHA1 等)
- 或明确禁用旧协议:SSLv3 = no,TLSv1 = no,TLSv1.1 = no
- 消息摘要与签名:
- default_md = sha256(新证书一律用 SHA-256 或更强)
- 证书请求扩展(用于服务器/客户端证书):
- 在 [ req ] 段启用扩展:req_extensions = v3_req
- 在 [ v3_req ] 段添加:keyUsage = digitalSignature, keyEncipherment(服务器)或 digitalSignature(客户端);extendedKeyUsage = serverAuth(服务器)或 clientAuth(客户端);按需添加 subjectAltName = DNS:example.com, DNS:www.example.com
- 协议与算法:
- 应用配置生效方式:
- 命令行显式指定:openssl req -new -config /path/to/openssl.cnf …
- 服务读取全局配置:将自定义配置合并到系统配置或在服务启动参数中指定。
三 证书与密钥的推荐做法
- 生成私钥与 CSR(最小示例):
- 生成私钥:openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out server.key
- 生成 CSR:openssl req -new -key server.key -out server.csr -config /usr/lib/ssl/openssl.cnf
- 自签名证书(测试/内网可用):openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -sha256
- 生产环境建议向受信任 CA 申请证书(DV/EV),并在证书中包含正确的 SAN(域名、IP 等)。
- 证书轮换与撤销:
- 设置合理有效期(如不超过 398 天 以兼容主流浏览器策略),并建立到期前 30 天 自动续期流程(如使用 certbot 或内部 ACME)。
- 若启用 OCSP Stapling,确保服务器可在线获取 OCSP 响应并定期更新。
四 在 Nginx 与 Apache 中启用安全 TLS
- Nginx 示例(仅启用 TLS 1.2+ 与强套件,启用 HTTP/2 与 HSTS):
- 配置片段:
- listen 443 ssl http2;
- ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key;
- ssl_protocols TLSv1.2 TLSv1.3;
- ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
- ssl_prefer_server_ciphers off; (若使用 TLS1.3 可按需开启)
- ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m;
- 安全头:add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;
- 配置片段:
- Apache 示例(启用 TLS 1.2+ 与强套件):
- 启用模块:sudo a2enmod ssl headers http2
- 虚拟主机片段:
- SSLEngine on
- SSLCertificateFile /etc/ssl/certs/server.crt
- SSLCertificateKeyFile /etc/ssl/private/server.key
- SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
- SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
- SSLHonorCipherOrder on
- Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”
- 应用配置后重启服务:sudo systemctl restart nginx 或 sudo systemctl restart apache2。
五 验证与运维
- 连通性与套件验证:
- 查看握手与证书链:openssl s_client -connect example.com:443 -servername example.com -showcerts
- 仅测试协议与套件:openssl s_client -connect example.com:443 -tls1_2 或 -tls1_3
- 服务器配置自检:
- openssl ciphers -v ‘ECDHE+AESGCM:!ECDSA’(核对套件顺序与强度)
- 使用在线检测(如 SSL Labs SSL Server Test)或内部扫描,确保无 POODLE、BEAST、RC4、Heartbleed 等风险。
- 证书与链检查:
- 查看证书信息:openssl x509 -in server.crt -noout -text -issuer -subject -dates
- 校验链与主机名:openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt server.crt
- 日志与告警:
- 关注 TLS 握手失败、证书即将过期、OCSP 响应异常 等;为证书到期配置 监控与自动续期。
- 安全运维要点:
- 禁止在代码中硬编码私钥;使用 Secrets 管理或 硬件安全模块 HSM/KMS。
- 对外部依赖的 CRL/OCSP 可达性进行定期健康检查;必要时启用 OCSP Stapling 降低延迟与隐私泄露。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu中如何配置openssl安全
本文地址: https://pptw.com/jishu/753044.html
