X509链策略 urlRetrieval超时初始化有什么影响?



使用 CSharp,如果我这样做:

System.Security.Cryptography.X509Certificates.X509Chain ch =  new System.Security.Cryptography.X509Certificates.X509Chain();

效果如何:

ch.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(4000);

根据 https://msdn.microsoft.com/en-us/library/system.timespan(v=vs.110(.aspx

我将 TimeSpan 结构的新实例初始化为指定的刻度数,并且刻度等于 100 纳秒或千万分之一秒。一毫秒内有 10,000 个刻度。参考: https://msdn.microsoft.com/en-us/library/system.timespan.ticks(v=vs.110(.aspx

这看起来我正在将超时设置为小于一毫秒以下载证书吊销列表。然而,在实践中,使用这种代码下载非常大的 CRL 文件需要花费数秒。

那么这条线到底有什么作用呢?

蒂亚。

这看起来像我将超时设置为小于一毫秒以下载证书吊销列表

https://referencesource.microsoft.com/#System/security/system/security/cryptography/x509/x509chain.cs,383:

ChainPara.dwUrlRetrievalTimeout = (uint)Math.Floor(timeout.TotalMilliseconds);

因此,您有效地将其设置为"0",从而生成操作系统默认值。这只是一个问题,它必须如何舍入值才能将其发送到Windows。

该值映射到CERT_CHAIN_PARA上的dwUrlRetrievalTimeout,这并没有太多关于如何使用它的内容(下载之间的间隔,消息泵期间的超时等(。 但是你可以尝试TimeSpan.FromMilliseconds(1)(或其他一些小数字(,看看你看到了什么。 1ms 不太可能超过 TCP 和 HTTP 连接时间,因此它可能会产生在Offline模式下计算链的效果。

最新更新