0

我从第 3 方获得了一个应用程序,该应用程序在身份验证过程中使用了证书。我想知道如果源代码以下列方式使用它,证书在过期日期后是否仍然有效:

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var cert = store.Certificates.Find(X509FindType.FindByThumbprint, "THUMBPRINT", false);
SecurityTokenServiceConfiguration config = new SecurityTokenServiceConfiguration("NAME", cert[0]);
config.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
config.RevocationMode = System.Security.Cryptography.X509Certificates.X509RevocationMode.NoCheck;

据我了解,没有验证检查,所以在证书过期后这应该仍然有效,不是吗?

var issuerNameRegistry = new ConfigurationBasedIssuerNameRegistry();
issuerNameRegistry.AddTrustedIssuer("THUMBPRINT", "NAME");
var handler = new SecurityTokenHandlerConfiguration();
handler.SaveBootstrapTokens = true;
handler.CertificateValidator = X509CertificateValidator.None;
handler.AudienceRestriction.AudienceMode = System.IdentityModel.Selectors.AudienceUriMode.Never;
handler.IssuerNameRegistry = issuerNameRegistry;

同样,根据我的理解,也没有验证检查,所以在证书过期后这应该仍然有效,不是吗?

此外,web.configs 始终包含 certificateValidationMode="None" 条目。

<issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
     <trustedIssuers>
         <add thumbprint="THUMBPRINT" name="NAME" />
     </trustedIssuers>
 </issuerNameRegistry>
 <serviceCertificate>
     <certificateReference x509FindType="FindByThumbprint" findValue="THUMBPRINT" storeLocation="LocalMachine" storeName="My" />
 </serviceCertificate>
 <certificateValidation certificateValidationMode="None" revocationMode="NoCheck" />

我已经将整个系统安装在具有本地 IIS 的独立机器上,以便将机器的日期设置为过期日期之后的日期。该应用程序仍然可以正常工作。

是否可以安全地假设证书过期后这仍然有效,或者我没有考虑到可能导致 IIS 服务器拒绝它并导致应用程序停止工作的任何事情?

在此先感谢,迈克尔

4

0 回答 0