1

我很好奇通过 NWProtocolTLS.Options() 传递弱密码。因为它在 iOS 12 中运行良好,但在 iOS 13 Apple 上我猜他们做了一些改变,所以它停止了。

这里的一件事是:OpenSSL 如何使用弱密码(TLS_DHE_RSA_WITH_AES_256_GCM_SHA384)并建立连接。以及为什么不使用 iOS 13 Network.framework。

基本上,我的 Socket 服务器已经被弱密码TLS_DHE_RSA_WITH_AES_256_GCM_SHA384冻结了,这是我使用 WireShark 通过 OpenSSL 从 Server Hello 捕获的。所以现在我通过以下方法使用 iOS 13 传递这个密码,但它不起作用。

sec_protocol_options_append_tls_ciphersuite(tlsOptions.securityProtocolOptions, tls_ciphersuite_t.ECDHE_RSA_WITH_AES_256_GCM_SHA384)

注意:我们已经提出了反馈助手查询,但我们仍在等待他们。这不是 Web Socket,我们通过服务器 Wifi 热点连接。

不知何故,我们在 iOS 的 OpenSSL 库(https://github.com/levigroker/GRKOpenSSLFramework)的帮助下解决了这个问题,但是在长数据轮询和字节缓冲机制之后,在处理更长的数据时面临很多问题。

在 OpenSSL iOS App 中查看 Client Hello 后,它通过了 86 个密码及其工作。

但是在传递客户端 Hello 的 iOS Network.framework 中,它通过了 36 个密码并且它不起作用。

如果有人想查看 WireShark 数据包,请添加评论,我将进一步附上。

所以任何想法或帮助表示赞赏!

4

1 回答 1

1

网络框架内部使用 BoringSSL。在尝试连接iOS 13.0 及更高版本不支持的弱密码(TLS_DHE_RSA_WITH_AES_256_GCM_SHA384)时,BoringSSL 不会放弃握手,而是提供一个默认密码数组,包括


TLS_AES_128_GCM_SHA256,
TLS_AES_256_GCM_SHA384,
TLS_CHACHA20_POLY1305_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_RSA_WITH_3DES_EDE_CBC_SHA

唯一的解决方案是请尝试在服务器端实现上述任何密码。

于 2020-07-13T10:20:05.107 回答