openssl如何配置ubuntu服务器
导读:Ubuntu 服务器上使用 OpenSSL 的完整配置指南 一 安装与基础检查 更新索引并安装 OpenSSL: sudo apt update sudo apt install -y openssl 验证版本与组件: opens...
Ubuntu 服务器上使用 OpenSSL 的完整配置指南
一 安装与基础检查
- 更新索引并安装 OpenSSL:
- sudo apt update
- sudo apt install -y openssl
- 验证版本与组件:
- openssl version
- sudo a2enmod ssl # 如使用 Apache,启用 SSL 模块
- 配置文件位置:
- OpenSSL 主配置:/etc/ssl/openssl.cnf
- 证书与私钥常用目录:/etc/ssl/certs、/etc/ssl/private(注意私钥权限 600)
二 生成证书与 CSR 的常用方式
- 自签名证书(测试/内网)
- 一步生成(RSA,有效期 365 天):
- openssl req -x509 -newkey rsa:4096 -keyout /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt -days 365 -nodes
- 一步生成(RSA,有效期 365 天):
- 标准流程(用于向 CA 申请)
- 生成私钥(建议 aes256 加密):
- openssl genpkey -algorithm RSA -out server.key -aes256
- 生成 CSR:
- openssl req -new -key server.key -out server.csr
- 查看 CSR 内容:
- openssl req -in server.csr -noout -text
- 生成私钥(建议 aes256 加密):
- 使用现有私钥直接签发自签名证书:
- openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- 证书链合并(部署时常用)
- cat server.crt intermediate.crt > server_fullchain.crt
三 在 Nginx 或 Apache 中启用 HTTPS
- Nginx 示例(/etc/nginx/sites-available/default 或站点配置)
- 基本配置:
- server {
- listen 443 ssl http2;
- server_name your_domain.com www.your_domain.com;
- 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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
- ssl_prefer_server_ciphers off;
- root /var/www/html; index index.html;
- location / { try_files $uri $uri/ =404; }
- }
- server { listen 80; server_name your_domain.com; return 301 https://$host$request_uri; }
- server {
- 检查并重载:
- sudo nginx -t & & sudo systemctl reload nginx
- 基本配置:
- Apache 示例(启用 SSL 站点)
- 启用模块与站点:
- sudo a2enmod ssl
- sudo a2ensite default-ssl.conf
- 配置证书路径(/etc/apache2/sites-available/default-ssl.conf):
- SSLEngine on
- SSLCertificateFile /etc/ssl/certs/server.crt
- SSLCertificateKeyFile /etc/ssl/private/server.key
- SSLCertificateChainFile /etc/ssl/certs/intermediate.crt # 如 CA 提供中间证书
- 重载:
- sudo systemctl reload apache2
- 启用模块与站点:
- 防火墙放行(如启用 UFW)
- sudo ufw allow 443/tcp
四 使用 Let’s Encrypt 自动获取与续期证书
- 安装 Certbot 与对应插件:
- Apache:sudo apt install -y certbot python3-certbot-apache
- Nginx:sudo apt install -y certbot python3-certbot-nginx
- 获取并自动配置:
- Apache:sudo certbot --apache
- Nginx:sudo certbot --nginx
- 自动续期测试与生效:
- sudo certbot renew --dry-run
- 证书默认有效期 90 天,Certbot 会自动创建定时任务续期
- HTTP 到 HTTPS 重定向:
- Nginx:在 80 端口 server 块中 return 301 https://$host$request_uri;
- Apache:在 80 端口 VirtualHost 中添加 Redirect permanent / https://your_domain.com/
五 验证与进阶安全建议
- 配置与连通性验证
- 在线检测:SSL Labs Server Test(ssllabs.com/ssltest)
- 本机查看证书链:openssl s_client -connect your_domain.com:443 -servername your_domain.com -showcerts
- 本机测试握手与协议套件:openssl s_client -connect your_domain.com:443 -servername your_domain.com
- 进阶 客户端证书认证(双向 TLS,示例 Nginx)
- 准备 CA 证书后,在 server 段增加:
- ssl_client_certificate /etc/ssl/certs/ca.crt;
- ssl_verify_client on;
- 重启服务后,客户端需携带由该 CA 签发的证书才能访问
- 准备 CA 证书后,在 server 段增加:
- 安全与运维要点
- 仅启用 TLSv1.2/TLSv1.3,禁用 SSLv3/TLSv1.0/TLSv1.1
- 优先使用 ECDHE 密钥交换与 AEAD 套件;禁用 RC4、DES、MD5 等弱算法
- 私钥权限设为 600,证书与链文件 644;将证书与私钥放在受控目录(如 /etc/ssl/)
- 全站 HTTP→HTTPS 重定向;为 API/管理端启用 HSTS
- 定期检查证书到期并监控续期日志(/var/log/letsencrypt/)
- 不建议替换系统 OpenSSL(风险高)
- 若必须编译安装特定版本,务必做好备份与库路径配置,并充分回归测试后再切换生产
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: openssl如何配置ubuntu服务器
本文地址: https://pptw.com/jishu/771790.html
