我尝试使用TLS
握手加密对等通信,该握手使用startTLS
库GCDAsyncSocket
方法。
Bonjour服务由服务器发布,客户端连接到已发布的主机名。建立套接字连接后,我正在为服务器调用startTLS
,如下所示。
[settings setObject:[NSNumber numberWithBool:YES]
forKey:(NSString *)kCFStreamSSLIsServer];
[settings setObject:(__bridge id _Nonnull)(certs)
forKey:(NSString *)kCFStreamSSLCertificates];
CFRelease(certs);
settings[GCDAsyncSocketSSLProtocolVersionMin] = [NSNumber numberWithInteger:8];
[connectedSockets addObject:newSocket];
[newSocket startTLS:settings];
以下客户端是我正在使用的设置。
NSMutableDictionary *settings = [[NSMutableDictionary alloc] init];
settings[GCDAsyncSocketSSLProtocolVersionMin] = [NSNumber numberWithInteger:4];
settings[GCDAsyncSocketSSLProtocolVersionMax] = [NSNumber numberWithInteger:8];
[settings setObject:[NSNumber numberWithBool:YES]
forKey:GCDAsyncSocketManuallyEvaluateTrust];
[settings setObject:(__bridge id _Nonnull)(certs)
forKey:(NSString *)kCFStreamSSLCertificates];
[sock startTLS:settings];
在客户端和服务器之间开始此握手之后。
我在wireshark
的帮助下调试了这两者之间的数据传输。
在wireshark
日志中,它显示使用TCP协议而不是TLS
进行握手。
我希望握手应该发生在TLSv1.2协议上。附加屏幕截图相同。
任何机构都可以帮我提供示例代码。
答案 0 :(得分:0)
我能够弄清楚问题是什么。这是wireshark的问题。在wireshark,安全端口是443,但是对于bonjour服务,端口是本地的,所以我硬编码端口为ex 12120提供bonjour服务并发布了bonjour服务。
现在在wireshark编辑 - >偏好设置 - >协议 - >在此Wirehark开始通过TLSv1.2显示正确的日志(例如客户端问候语和服务器问候语等)之后,HTTP将安全端口更改为12120。谢谢大家的支持。