版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到通过cURL使用HTTPS访问SLB(负载均衡服务)时返回错误代码35,这通常意味着SSL握手过程中出现了问题。错误35在cURL中通常表示SSL接收到意外的记录类型。如果相同的证书部署在Nginx上没有问题,那么问题可能出在SLB的配置或者证书的应用方式上。
以下是一些排查和解决此问题的建议:
检查证书和私钥是否匹配:确保上传到SLB的证书和私钥是正确且匹配的一对。有时候,误用或混淆了证书和私钥会导致SSL握手失败。
证书格式:阿里云SLB要求上传的证书为PEM格式,且包含完整的证书链。请确认你的证书文件包含了服务器证书、任何中间证书以及根证书(如果有),并且每个证书之间没有额外的空行。你可以使用如openssl工具来检查和转换证书格式。
私钥无密码保护:SLB不支持带有密码保护的私钥。请确保你的私钥没有设置密码。
SLB监听配置:检查SLB的监听端口设置,确保你配置的是HTTPS监听,并且选择了正确的证书。同时,确认协议版本设置(如TLSv1.2、TLSv1.3等)与客户端(cURL)兼容。
SSL协议和加密套件:SLB允许你选择支持的SSL协议版本和加密套件。如果cURL使用的协议或套件不在SLB支持的范围内,可能会导致握手失败。尝试调整这些设置以兼容cURL的请求。
测试不同的客户端:虽然你在Nginx上没有问题,但也可以尝试从其他客户端或使用不同的cURL命令参数(比如指定TLS版本)进行测试,以排除是客户端特定配置的问题。
查看SLB日志:登录阿里云控制台,查看SLB实例的访问日志和健康检查日志,这些日志可能提供关于SSL握手失败的具体原因。
技术支持协助:如果以上步骤都无法解决问题,建议联系阿里云的技术支持,他们可以提供更详细的日志分析和专业的解决方案。
记得在进行任何配置更改后,都要重新测试以验证问题是否得到解决。