是否有一种方法可以检查和清理已停靠并在Linux下运行的ASP.NET核心应用程序的证书吊销列表缓存?
我们需要在已停靠并在Linux下运行的ASP.NET Core 2.X应用程序中执行客户端证书有效性检查。特别是,我们对证书的吊销状态感兴趣。这样的验证是通过使用实现的,并且工作正常是否有一种方法可以检查和清理已停靠并在Linux下运行的ASP.NET核心应用程序的证书吊销列表缓存?,linux,docker,asp.net-core,certificate,certificate-revocation,Linux,Docker,Asp.net Core,Certificate,Certificate Revocation,我们需要在已停靠并在Linux下运行的ASP.NET Core 2.X应用程序中执行客户端证书有效性检查。特别是,我们对证书的吊销状态感兴趣。这样的验证是通过使用实现的,并且工作正常 var chain = new X509Chain(); var chainPolicy = new X509ChainPolicy { RevocationMode = X509RevocationMode.Online, RevocationFlag = X509RevocationFlag.E
var chain = new X509Chain();
var chainPolicy = new X509ChainPolicy
{
RevocationMode = X509RevocationMode.Online,
RevocationFlag = X509RevocationFlag.EntireChain
};
chain.ChainPolicy = chainPolicy;
...
Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
....
但是,我们对应用程序的CRL缓存的过期时间有要求。默认情况下,Linux(我假设它是针对映像的)会缓存CRL—第一个请求持续约150毫秒,而接下来的请求几乎在任何时候都会得到处理(遗憾的是,我找不到可用的信息来证实这一观察结果)
Linux(debian)中CRL缓存的默认时间是多少?有可能改变吗?有办法检查缓存的CRL列表吗
可以像在Windows中一样清理CRL缓存吗
certutil-urlcache*delete
Linux certificate util似乎不是ASP.NET core 2.2应用程序的
mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim
基本映像的一部分。既然是开源的.NET core,您是否查阅了源代码。在这里,您将找到对的调用,该调用显示数据存储的位置:
namespace Internal.Cryptography.Pal
{
内部静态类CrlCache
{
专用静态只读字符串s_crlDir=
PersistedFiles.GetUserFeatureDirectory(
X509Persistence.CryptographyFeatureName,
X509Persistence.CrlsSubFeatureName);
内部静态类X509Persistence
{
内部常量字符串CryptographyFeatureName=“加密”;
内部常量字符串X509StoresSubFeatureName=“x509stores”;
内部常量字符串CrlsSubFeatureName=“crls”;
内部常量字符串OcspSubFeatureName=“ocsp”;
}
...
内部常量字符串TopLevelDirectory=“dotnet”;
内部常量字符串TopLevelHiddenDirectory=“.”+TopLevelDirectory;
内部常量字符串SecondLevelDirectory=“corefx”;
...
内部静态字符串GetUserFeatureDirectory(参数字符串[]featurePathParts)
{
Assert(featurePathParts!=null);
Assert(featurePathParts.Length>0);
如果(s_userProductDirectory==null)
{
确保重用目录();
}
返回Path.Combine(s_userProductDirectory,Path.Combine(featurePathParts));
}
私有静态目录(REUSERDirectories)()
{
字符串userhomeditory=gethomeditory();
if(string.IsNullOrEmpty(userHomeDirectory))
{
抛出新的InvalidOperationException(SR.PersistedFiles\u NoHomeDirectory);
}
s_userProductDirectory=Path.Combine(
userHomeDirectory,
TopLevelHiddenDirectory,
二级目录);
}
内部静态字符串GetHomeDirectory()
{
//首先尝试从home环境变量获取用户的主目录。
//这在大多数情况下都应该有效。
字符串userhomeditory=Environment.GetEnvironmentVariable(“HOME”);
因此路径应该是$HOME/.dotnet/corefx/cryptography/crls