温馨提示×

如何在ubuntu上配置openssl SSL

小樊
40
2025-12-26 15:58:08
栏目: 云计算

在 Ubuntu 上配置 OpenSSL SSL 的完整步骤

一 安装与准备

  • 更新索引并安装工具:
    • sudo apt update
    • sudo apt install -y openssl
  • 确认版本:
    • openssl version
  • 说明:Ubuntu 通常已预装 OpenSSL;如未安装或需特定版本,可后续从源码编译安装(见文末“进阶与安全建议”)。

二 生成密钥与证书

  • 生成私钥(推荐加密保存):
    • openssl genpkey -algorithm RSA -out server.key -aes256
  • 生成证书签名请求 CSR(Common Name 填你的域名,如:example.com):
    • openssl req -new -key server.key -out server.csr
  • 获取证书(二选一)
    • 自签名(测试环境):
      • openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    • 受信任证书(生产环境,Let’s Encrypt 免费):
      • sudo apt install -y certbot python3-certbot-nginx
      • sudo certbot --nginx -d example.com
  • 证书链合并(如使用中间证书,常见于 CA 签发):
    • cat server.crt intermediate.crt > server_fullchain.crt
  • 文件权限建议:私钥仅 root 可读
    • chmod 600 server.key

三 在 Web 服务器中启用 SSL

  • Apache
    • 启用模块与站点:
      • sudo a2enmod ssl
      • sudo a2ensite default-ssl.conf
    • 基本配置片段(/etc/apache2/sites-available/default-ssl.conf):
      • SSLEngine on
      • SSLCertificateFile /path/to/server.crt 或 /path/to/server_fullchain.crt
      • SSLCertificateKeyFile /path/to/server.key
    • 重启:sudo systemctl restart apache2
  • Nginx
    • 基本配置片段(/etc/nginx/sites-available/default 或 /etc/nginx/nginx.conf 的 server 块):
      • listen 443 ssl;
      • server_name example.com;
      • ssl_certificate /path/to/server.crt 或 /path/to/server_fullchain.crt;
      • ssl_certificate_key /path/to/server.key;
      • ssl_protocols TLSv1.2 TLSv1.3;
      • ssl_ciphers HIGH:!aNULL:!MD5;
    • 可选:将 80→443 强制跳转
      • server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
    • 重启:sudo systemctl restart nginx

四 验证与排错

  • 命令行快速检查:
    • openssl s_client -connect example.com:443 -servername example.com
  • 浏览器访问 https://example.com 检查证书颁发者、有效期与域名匹配
  • 在线检测:Qualys SSL Labs Server Test(ssllabs.com/ssltest/)
  • 查看服务日志定位问题:
    • Apache:journalctl -u apache2 -xe
    • Nginx:journalctl -u nginx -xe

五 进阶与安全建议

  • 强加密与协议(示例)
    • 协议与套件: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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384’;
    • 启用 HSTSOCSP Stapling、关闭压缩与会话票据(示例适用于 Apache,Nginx 有等价指令)
  • 客户端证书验证(双向 TLS,按需)
    • 生成 CA:openssl req -x509 -newkey rsa:4096 -keyout ca.key -sha256 -days 1024 -out ca.crt -subj “/C=CN/ST=State/L=City/O=Org/CN=MyCA”
    • 签发服务器证书:openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256
    • Nginx 启用验证:
      • ssl_client_certificate /path/to/ca.crt;
      • ssl_verify_client on;
  • 从源码编译 OpenSSL(仅在需要特定版本或高级定制时)
    • 下载解压后:./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
    • make -j$(nproc) && sudo make install
    • 备份与软链:sudo mv /usr/bin/openssl /usr/bin/openssl.bak && sudo ln -sfn /usr/local/openssl/bin/openssl /usr/bin/openssl
    • 库路径:echo ‘/usr/local/openssl/lib’ | sudo tee /etc/ld.so.conf.d/openssl.conf && sudo ldconfig
    • 风险提示:替换系统 OpenSSL 可能影响系统组件稳定性,生产环境谨慎操作。

0