nginx:记录SSL: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small

在这里插入图片描述
系统版本ubuntu20.04启动nginx出现的问题
root@ubuntu:/etc/nginx/conf.d# nginx -s reload
nginx: [warn] the “ssl” directive is deprecated, use the “listen … ssl” directive instead in /etc/nginx/conf.d/xx.conf:12
nginx: [emerg] SSL_CTX_use_certificate("/etc/nginx/conf.d/crt/server.crt") failed (SSL: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small)

解决方法:生成秘钥时命令如下
openssl genrsa -des3 -out server.key 1024
改为
openssl genrsa -des3 -out server.key 2048

### Nginx SSL_ERROR_RX_RECORD_TOO_LONG 错误原因分析 Nginx 中出现 `SSL_ERROR_RX_RECORD_TOO_LONG` 的错误通常表明在 HTTPS 请求处理过程中存在配置问题,具体可能涉及以下几个方面: #### 1. **监听端口未启用 SSL 支持** 如果 Nginx 配置文件中仅指定了 `listen 443;` 而没有附加 `ssl` 参数,则可能导致服务器无法正确解析 SSL 流量。这种情况下,浏览器会收到类似于 `SSL_ERROR_RX_RECORD_TOO_LONG` 或者 `ERR_SSL_PROTOCOL_ERROR` 的提示[^2]。 ```nginx server { listen 443; server_name example.com; # 缺失 ssl 关键字 } ``` 正确的配置应为: ```nginx server { listen 443 ssl; # 添加 ssl 关键字 server_name example.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; } ``` --- #### 2. **SSL/TLS 协议版本不兼容** 某些旧版浏览器或客户端可能不支持最新的 TLS 版本(如 TLSv1.3),而现代 Nginx 默认启用了较新的协议版本。如果不适当地禁用了一些必要的加密套件或协议版本,可能会导致握手失败并触发上述错误[^1]。 可以通过调整 `ssl_protocols` 和 `ssl_ciphers` 来确保兼容性: ```nginx ssl_protocols TLSv1.2 TLSv1.3; # 推荐保留至少 TLSv1.2 及以上 ssl_ciphers HIGH:!aNULL:!MD5; # 使用强密码策略 ``` --- #### 3. **证书路径或权限问题** 如果指定的 SSL 证书或私钥文件不存在、损坏或权限不足,也可能引发类似的错误。需确认以下几点: - 文件是否存在? - 是否具有读取权限? 可以运行以下命令检查文件状态: ```bash ls -l /path/to/certificate.crt ls -l /path/to/private.key ``` 同时,在加载配置前测试语法是否正确: ```bash sudo nginx -t ``` --- #### 4. **防火墙或其他中间设备干扰** 有时外部因素也会造成此类问题,比如防火墙规则阻止了特定类型的 SSL 数据包传输,或者负载均衡器未能正确定向流量到后端服务[^4]。 建议临时关闭本地防火墙进行验证: ```bash sudo ufw disable # 或者对于 iptables 用户 sudo iptables -F ``` 随后重新尝试访问网站观察效果变化。 --- ### 解决方案总结 针对上述常见成因逐一排查即可有效解决问题。以下是完整的修正样例供参考: ```nginx server { listen 443 ssl http2; # 明确开启 https 并支持高效协议 server_name example.com; root /var/www/html; index index.html; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_protocols TLSv1.2 TLSv1.3; # 定义允许使用的 tls 协议 ssl_prefer_server_ciphers on; # 提升安全性优先级 ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256'; # 加密算法列表 location / { try_files $uri $uri/ =404; } } ``` 最后记得重启 Nginx 生效更改: ```bash sudo systemctl restart nginx ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值