delphi - 在 WinHTTP 中,应使用哪些设置来通过 Common Criteria TLS_EXT1.1 测试

标签 delphi certificate tls1.2 winhttp

我的团队正在对用 Delphi for Windows 编写的客户产品之一进行通用标准验证。该应用程序使用 winhttp api 发出 HTTP 请求。我们正在使用 tls-cc-tools用于检查应用程序是否通过所有 TLSC EXT1.1 保证测试。我们已经能够限制密码套件并在应用程序范围内启用 TLS 1.2,目前测试 1、测试 4、测试 5.1、测试 5.2 和 5.3 已通过,但其余测试未通过。测试可以找到over here .

我们在winhttp中设置了以下选项:

 df:={WINHTTP_DISABLE_AUTHENTICATION or }WINHTTP_DISABLE_COOKIES or WINHTTP_DISABLE_KEEP_ALIVE or WINHTTP_DISABLE_REDIRECTS;


 WinHTTPSetOption(iconnection, WINHTTP_OPTION_DISABLE_FEATURE,@df,sizeof(df));

 protocols := $00000800; //WINHTTP_FLAG_SECURETLS1_2;
    WinHttpSetOption(iconnection, WINHTTP_OPTION_SECURE_PROTOCOLS,  @protocols, sizeof(protocols));

  WinHTTPSetOption(iconnection, WINHTTP_OPTION_SECURITY_FLAGS,
   @flags, sizeof(flags));

失败的测试:

测试 3: 评估者应在 TLS 连接中发送与服务器选择的密码套件不匹配的服务器证书(例如,在使用 TLS_RSA_WITH_AES_128_CBC_SHA 密码套件时发送 ECDSA 证书或发送RSA 证书,同时使用 ECDSA 密码套件之一。)评估者应验证 TOE 在收到服务器的证书握手消息后是否断开连接。

测试 4:评估者应将服务器配置为选择 TLS_NULL_WITH_NULL_NULL 密码套件并验证客户端是否拒绝连接。

测试5.5:修改Server Finished握手消息中的一个字节,并验证客户端收到后是否发送致命警报并且不发送任何应用程序数据。

测试5.6:在服务器发出ChangeCipherSpec消息后,从服务器发送一条乱码消息,并验证客户端是否拒绝连接。

应该怎样做才能确保剩余的测试通过?

最佳答案

前言:我是一名经过认证的通用标准评估员和软件开发人员。多年来我一直在处理 TLS 和 X.509 测试用例。

其中一些测试在所有情况下正确执行都非常重要,例如上面的 FCS_TLSC_EXT.1 测试 3。如果不了解更多关于您的实现和(最重要的)测试设置的信息,就不可能诊断为什么您没有看到效果。

但是,测试 4 非常简单:将 TLS 服务器设置为仅使用 NULL 密码进行响应,无论客户端询问什么。这可以通过中间人或通过黑客攻击服务器来完成。要么应该迫使客户端在进一步相处之前断开连接。

测试 5.5 和 5.6 是纯粹的中间人测试。如果您已经在使用 TLS-cc-tools,那么测试的基础已经存在。

查看我的个人资料,了解如何直接与我联系,以获得有关 CC、TLS 和 X.509 一致性的更多帮助。这些测试用例不是行业标准实现,仅适用于那些寻求 CC 认证的人。这是一个利基市场。

关于delphi - 在 WinHTTP 中,应使用哪些设置来通过 Common Criteria TLS_EXT1.1 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545149/

相关文章:

node.js - 在 NodeJS 上使用自己的 https 代理发出 SSL 握手

azure - 将 Kusto Explorer 连接到 Log Analytics

delphi - 使用线程用 TStringList 中的项目填充 TComboBox

Qt5 QWebView如何发送客户端证书?

javascript - 从 firefox 扩展替换 nsICertificateDialogs

openssl - "openssl verify"对于坏的证书链给出 OK

android - Fleetboard 上的 TLS 1.2

delphi - 无法使用delphi indy发送UTF-8电子邮件

delphi - 清除创建的对象内存

delphi - 如何在两台计算机之间发送字符串?