1

我想编写一个服务器(纯粹用于测试!!)允许客户端连接包含无效主机名的证书。我在 Mac OS X 的 C 中使用 Apple 的 Secure Transport API。我设置了一个服务器连接,例如:

SSLContextRef ssl_ctx_ref = SSLCreateContext (kCFAllocatorDefault,
                                              kSSLServerSide,
                                              kSSLStreamType);

SSLSetClientSideAuthenticate (ssl_ctx_ref, kTryAuthenticate);

有了这个,如果客户端提供的证书具有无效的主机名,SSLHandshake则会失败并显示 errSSLClosedAbort (-9806)。

通过kNeverAuthenticate而不是kTryAuthenticate允许无效的客户端证书。

问题:

  • SSLSetClientSideAuthenticate用于此目的的正确功能 - 启用客户端证书的弱主机名验证?
  • 如果是这样,他们为什么不kTryAuthenticate这样做,我为什么必须使用kNeverAuthenticate
4

0 回答 0