php加密tls失败,PHP握手失败TLS1.0

我尝试通过fsockopen连接到465端口上的sendm.cert.legalmail.it,是意大利的名为PEC的SMTPS服务.

使用任何版本的PHP我都试过这个片段工作:

fsockopen('tls://sendm.cert.legalmail.it', 465);

所有这一切都可以使用OpenSSL 1.0.2h,如果我升级到OpenSSL 1.0.2j这个代码片段失败并出现此错误:

PHP Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:

error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure in ~/Development/experimental/php-handshake/connect.php on line 3

PHP Warning: fsockopen(): Failed to enable crypto in ~/Development/experimental/php-handshake/connect.php on line 3

PHP Warning: fsockopen(): unable to connect to tls://sendm.cert.legalmail.it:465 (Unknown error) in ~/Development/experimental/php-handshake/connect.php on line 3

所以使用OpenSSL 1.0.2j我尝试通过命令行连接:

openssl s_client -connect sendm.cert.legalmail.it:465

它完美地运作.

我尝试使用testssl在服务器上检查SSL,这是转储(剥离):

SSLv2 not offered (OK)

SSLv3 not offered (OK)

TLS 1 offered

TLS 1.1 not offered

TLS 1.2 not offered

Version tolerance downgraded to TLSv1.0 (OK)

只有TLS 1是可用的,我尝试用这个uri强制握手到TLS1:’tlsv1.0 :: //sendm.cert.legalmail.it’但结果是一样的.

我在Ubuntu 16.04上,使用PHP5.6和PHP7.1进行测试.

这个bug在哪里?在openssl?在PHP?在服务器握手?

更新,如果我总是使用./testssl.sh -E sendm.cert.legalmail.it:465与OpenSSL 1.0.2j返回时查看chiper:

x05 RC4-SHA RSA RC4 128 TLS_RSA_WITH_RC4_128_SHA

x04 RC4-MD5 RSA RC4 128 TLS_RSA_WITH_RC4_128_MD5

x16 EDH-RSA-DES-CBC3-SHA DH 1024 3DES 168 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA

x0a DES-CBC3-SHA RSA 3DES 168 TLS_RSA_WITH_3DES_EDE_CBC_SHA

x15 EDH-RSA-DES-CBC-SHA DH 1024 DES 56 TLS_DHE_RSA_WITH_DES_CBC_SHA

x09 DES-CBC-SHA RSA DES 56 TLS_RSA_WITH_DES_CBC_SHA

x14 EXP-EDH-RSA-DES-CBC-SHA DH(512) DES 40,exp TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA

x08 EXP-DES-CBC-SHA RSA(512) DES 40,exp TLS_RSA_EXPORT_WITH_DES40_CBC_SHA

x06 EXP-RC2-CBC-MD5 RSA(512) RC2 40,exp TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5

x03 EXP-RC4-MD5 RSA(512) RC4 40,exp TLS_RSA_EXPORT_WITH_RC4_40_MD5

随着OpenSSL 1.0.2h版本

x05 RC4-SHA RSA RC4 128

x04 RC4-MD5 RSA RC4 128

x16 EDH-RSA-DES-CBC3-SHA DH 1024 3DES 168

x0a DES-CBC3-SHA RSA 3DES 168

并且php const OPENSSL_DEFAULT_STREAM_CIPHERS与它包含的所有版本相同:

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:HIGH:!SSLv2:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!RC4:!ADH

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值