Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种方法可以检查和清理已停靠并在Linux下运行的ASP.NET核心应用程序的证书吊销列表缓存?_Linux_Docker_Asp.net Core_Certificate_Certificate Revocation - Fatal编程技术网

是否有一种方法可以检查和清理已停靠并在Linux下运行的ASP.NET核心应用程序的证书吊销列表缓存?

是否有一种方法可以检查和清理已停靠并在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

我们需要在已停靠并在Linux下运行的ASP.NET Core 2.X应用程序中执行客户端证书有效性检查。特别是,我们对证书的吊销状态感兴趣。这样的验证是通过使用实现的,并且工作正常

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