【问题标题】:setting CFStream property failing设置 CFStream 属性失败
【发布时间】:2015-07-16 12:50:10
【问题描述】:

我正在尝试建立与 SNI 的 TLS 连接。问题是第一个属性设置调用返回 1 表示它已被接受。以下两个返回0,表示没有通过。原因可能是什么?

在某些时候,我必须添加自己的证书才能被信任,但据我了解,这将在打开流后完成,所以这里不应该是任何原因。

另外,kCFStreamSocketSecurityLevelNegotiatedSSL 是否支持 tls1.2,因为没有常量可以直接选择它?

    var tempInputStream: Unmanaged<CFReadStream>?
    var tempOutputStream: Unmanaged<CFWriteStream>?

    CFStreamCreatePairWithSocketToHost(nil, address as CFStringRef, port, &tempInputStream, &tempOutputStream)

    let cfInputStream: CFReadStream = tempInputStream!.takeRetainedValue()
    let cfOutputStream: CFWriteStream = tempOutputStream!.takeRetainedValue()

//setting properties
    print(CFReadStreamSetProperty(cfInputStream, kCFStreamPropertySocketSecurityLevel, kCFStreamSocketSecurityLevelNegotiatedSSL))
    print(CFReadStreamSetProperty(cfInputStream, kCFStreamSSLValidatesCertificateChain, kCFBooleanFalse))
    print(CFReadStreamSetProperty(cfInputStream, kCFStreamSSLPeerName, "peer.address"))


    let inputStream: NSInputStream = cfInputStream
    let outputStream: NSOutputStream = cfOutputStream

    inputStream.delegate = self
    inputStream.delegate = self

    inputStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
    outputStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)

    inputStream.open()
    outputStream.open()

【问题讨论】:

    标签: ios ssl nsstream sni cfstream


    【解决方案1】:

    kCFStreamSSLValidatesCertificateChainkCFStreamSSLPeerName 不是流属性。它们是 SSL 设置属性。您需要将它们全部收集到字典中并将其分配给kCFStreamPropertySSLSettings

    let ssl = [
        String(kCFStreamSSLValidatesCertificateChain): kCFBooleanFalse, // You an probably use "false" here
        String(kCFStreamSSLPeerName): "peer.address"
    ]
    
    print(CFReadStreamSetProperty(cfInputStream, kCFStreamPropertySSLSettings, ssl))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多