从X509Chain构建函数

时间:2016-11-21 11:23:07

标签: .net security x509certificate ntlm cryptoapi

我们最近受到网络团队对AD域控制器捕获的失败的NTLM身份验证的质疑。这些请求是从已加入域的Windows 2008 Server上托管的服务之一触发的。 该服务使用本地系统帐户登录。这是为什么捕获失败的NTLM登录的原因,因为使用域用户登录没有捕获失败的登录。但公司政策不允许域用户登录。

使用Wireshark工具,我们发现请求来自X509Chain对象的Build函数。这是.NET框架提供的默认功能,我们找不到任何有用的支持文档:

  1. 解释NTLM请求被解雇的原因
  2. 证明请求没有安全威胁
  3. 如何在应用程序级别配置以避免登录请求失败(不允许更改策略规则或AD审核)
  4. 部分代码(VB.NET):

            Dim chnCerts As X509Chain = New X509Chain()
            chnCerts.ChainPolicy.RevocationFlag = X509RevocationFlag.EndCertificateOnly
            chnCerts.ChainPolicy.RevocationMode = X509RevocationMode.Online
    
            chnCerts.ChainPolicy.UrlRetrievalTimeout = New TimeSpan(0, 0, 120)
            chnCerts.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag
    
            If certType = Crypto.CertType.PrivateKeyCert Then
                certPrivateValidationStatus = Nothing
                chnCerts.Build(certPrivate)
    

2 个答案:

答案 0 :(得分:0)

作为AD和PKI的家伙,我觉得结论很可疑。链验证与NTLM无关。 Certs和CRL(AIA和CDP)应该通过HTTP并使用匿名身份验证。可能是您的本地PKI配置错误,AIA或CDP正在请求身份验证。我很想看到wireshark捕捉......

答案 1 :(得分:0)

检查您的证书属性。它可能已经注册了基于ldap://的授权信息访问或CRL分发点端点,这些端点由Windows证书服务在证书属性中注册(默认情况下......当它是CA及其'域名附加)。

LDAP端点表示(对于Windows)"在Active Directory"中,因此它尝试访问AD以下载数据。当失败时,它会移动到第二个条目,可能是http://。 (即使它没有首先列出,Windows可能会更喜欢LDAP到HTTP)

[1]CRL Distribution Point
 Distribution Point Name:
      Full Name:
           URL=ldap:///CN=Our%20Corp%20CA,CN=CRL,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=corp,DC=ourcorp,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint
           URL=http://corppki/crl/Our%20Corp%20CA.crl
           URL=http://crl.ourcorp.com/crl/Our%20Corp%20CA.crl