我想编写一个服务器(纯粹用于测试!!)允许客户端连接包含无效主机名的证书。我在Mac OS X上使用Apple的C版安全传输API。我建立了一个服务器连接,如:
SSLContextRef ssl_ctx_ref = SSLCreateContext (kCFAllocatorDefault,
kSSLServerSide,
kSSLStreamType);
SSLSetClientSideAuthenticate (ssl_ctx_ref, kTryAuthenticate);
完成此操作后,如果客户端提供的证书的主机名无效,则SSLHandshake
将失败并显示errSSLClosedAbort(-9806)。
传递kNeverAuthenticate
而不是kTryAuthenticate
会导致客户端证书无效。
问题:
SSLSetClientSideAuthenticate
是否正确用于此目的 - 为客户端证书启用弱主机名验证?kTryAuthenticate
这样做,为什么我必须使用kNeverAuthenticate
?