Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 在WinHTTP中,应该使用哪些设置来通过公共标准TLS_EXT1.1测试_Delphi_Certificate_Tls1.2_Winhttp - Fatal编程技术网

Delphi 在WinHTTP中,应该使用哪些设置来通过公共标准TLS_EXT1.1测试

Delphi 在WinHTTP中,应该使用哪些设置来通过公共标准TLS_EXT1.1测试,delphi,certificate,tls1.2,winhttp,Delphi,Certificate,Tls1.2,Winhttp,我的团队正在对一个用Delphi for Windows编写的客户产品进行通用标准验证。应用程序使用winhttp api发出HTTP请求。我们使用它检查应用程序是否通过了所有TLSC EXT1.1保证测试。我们已经能够限制密码套件并在整个应用程序范围内启用TLS 1.2,目前测试1、测试4、测试5.1、测试5.2和测试5.3通过,但其余测试未通过。可以找到这些测试 我们在winhttp中设置了以下选项: df:={WINHTTP_DISABLE_AUTHENTICATION or }WINH

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

我们在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_和_AES_128_CBC_SHA密码套件时发送ECDSA证书,或在使用其中一个ECDSA密码套件时发送RSA证书。)评估人员应在收到服务器的证书握手消息后验证TOE是否断开连接

测试4:评估员应配置服务器,以选择TLS\u NULL\u和\u NULL密码套件,并验证客户端是否拒绝连接

测试5.5:修改服务器完成握手消息中的一个字节,并验证客户端在收到该消息时是否发送致命警报,以及是否未发送任何应用程序数据

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


如何确保剩余的测试通过?

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

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

然而,测试4非常简单:将TLS服务器设置为仅使用空密码响应,而不管客户端请求什么。这可以通过中间人或黑客攻击服务器来实现。这两种方法都应该迫使客户机在进一步发展之前断开连接

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


查看我的个人资料,了解直接联系我以获得更多有关CC和TLS以及X.509合规性的帮助的方法。这些测试用例不是行业标准的实现,只针对那些寻求CC认证的人。这是一个利基市场。

我已经使用了一段时间从导入的
MSXML2_TLB.pas
而不是WinHTTP使用
XMLHTTP
,因为我怀疑微软比WinHTTP子系统更关注MSXML子系统。我想知道这是否能给你提供更好的测试结果。谢谢你的帮助,但问题已经解决了。显然,tls cc工具会检查ssl握手是否在负面情况下失败,但在我们的例子中,ssl握手没有失败,而是在握手后请求失败。显然,winhttp就是这样工作的。您提到的任何测试用例都不应该允许成功的握手发生,即使握手失败。如果这是您所看到的,那么winhttp库可能无法通过通用标准测试用例。我们已经从与我们合作的CC实验室确认了这一点,他们说,只要请求失败,并且任何一方都没有数据被传输或接受,这不应该是一个问题NIAP实验室已经接受了一种具有这种行为的产品。