SSL_read: Failure in SSL library (protocol error?)

在使用xfreerdp访问远程桌面时遇到SSL_read: Failure in SSL library (protocol error)的错误,实际上是由于参数顺序不正确导致的认证失败。解决方法是将服务器地址放在用户名和密码之后,如:xfreerdp -u 用户名 -p 密码 服务器地址。

使用xfreerdp 访问远程桌面时报错SSL_read: Failure in SSL library (protocol error?)
Authentication failure, check credentials.

解决方法:这个问题是xfreerdp的参数顺序不正确导致的。

错误:xfreerdp 10.144.53.116 -u cangege -p 123456

正确:xfreerdp -u cangege -p 123456 10.144.53.116

你遇到的错误信息: ``` OpenSSL SSL_read: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure, errno 0 ``` 表示在使用 OpenSSL 进行 SSL/TLS 握手过程中发生了 **握手失败(handshake failure)**。这通常发生在客户端与服务器在协商加密协议或加密套件时无法达成一致。 --- ### 常见原因和解决方法: #### 1. **TLS 协议版本不兼容** - 客户端(如 cURL)和服务器支持的 TLS 版本不一致。 - **解决方法**:尝试指定 SSL/TLS 版本。 ```php curl_setopt($ch, CURLOPT_SSL_VERSION, CURL_SSLVERSION_TLSv1_2); ``` > 可选值包括:`CURL_SSLVERSION_TLSv1`, `CURL_SSLVERSION_TLSv1_0`, `CURL_SSLVERSION_TLSv1_1`, `CURL_SSLVERSION_TLSv1_2`,`CURL_SSLVERSION_TLSv1_3`(取决于 cURL/OpenSSL 支持)。 --- #### 2. **加密套件不兼容** - 客户端和服务器支持的加密套件(Cipher Suites)没有交集。 - **解决方法**:设置自定义加密套件。 ```php curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1'); ``` 或者尝试使用更宽松的 Cipher 配置(慎用,降低安全性): ```php curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'ALL'); ``` --- #### 3. **证书问题** - 服务器证书不可信或证书链不完整。 - **解决方法**: - 使用有效的证书路径: ```php curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cert.pem"); ``` - 或者临时禁用证书验证(不推荐用于生产): ```php curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); ``` --- #### 4. **OpenSSL 安全等级(SECLEVEL)过高** - 某些系统(如 Linux)默认的 OpenSSL 安全等级较高,导致部分旧的加密配置被拒绝。 - **解决方法**:降低安全等级。 ```bash # 临时修改系统 OpenSSL 配置 echo 'openssl_conf = default_conf' >> /etc/ssl/openssl.cnf echo '[ default_conf ]' >> /etc/ssl/openssl.cnf echo 'ssl_conf = ssl_sect' >> /etc/ssl/openssl.cnf echo '[ ssl_sect ]' >> /etc/ssl/openssl.cnf echo 'system_default = system_default_sect' >> /etc/ssl/openssl.cnf echo '[ system_default_sect ]' >> /etc/ssl/openssl.cnf echo 'MinProtocol = TLSv1.0' >> /etc/ssl/openssl.cnf echo 'CipherString = DEFAULT@SECLEVEL=1' >> /etc/ssl/openssl.cnf ``` > ⚠️ 修改系统配置前请备份原文件。 --- #### 5. **使用代理或中间设备拦截** - 如果请求经过代理或防火墙,可能被中间设备拦截并修改 SSL 流量。 - **解决方法**:尝试绕过代理,或联系网络管理员。 --- ### 完整示例代码: ```php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 设置 SSL 协议版本 curl_setopt($ch, CURLOPT_SSL_VERSION, CURL_SSLVERSION_TLSv1_2); // 设置 Cipher 套件 curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1'); // 可选:禁用证书验证(测试环境可用) // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $response = curl_exec($ch); if (curl_errno($ch)) { echo 'cURL 错误: ' . curl_error($ch); } curl_close($ch); ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉特哈布

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值