我从第 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 服务器拒绝它并导致应用程序停止工作的任何事情?
在此先感谢,迈克尔