代码之家  ›  专栏  ›  技术社区  ›  Gyanendra

GCDAsyncSocket与bonjour服务:startTLS是否启动TLS握手

  •  2
  • Gyanendra  · 技术社区  · 8 年前

    enter image description here 我尝试使用加密点对点通信 TLS 握手,使用 startTLS 方法 GCDAsyncSocket 图书馆 Bonjour服务由服务器发布,客户端连接到发布的主机名。套接字连接建立后,我正在呼叫 启动TLS 用于服务器,如下所示。

    [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 . 在里面 TLS公司 . 我希望握手应该在TLSv1.2协议上进行。附加相同的屏幕截图。 任何人都可以帮我提供示例代码吗。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Gyanendra    8 年前

    我能够找出问题所在。这是wireshark的问题。在wireshark中,安全端口是443,但对于bonjour服务,该端口是本地端口,因此我为ex12120的bonjourn服务硬编码了端口,并发布了bonjoor服务。

    现在进入wireshark Edit->首选项->协议->在wireshark开始通过TLSv1.2显示正确的日志(如客户端hello和服务器hello等)后,HTTP将安全端口更改为12120。感谢大家的支持。