Asp.net核心客户端证书身份验证中间件在X509Chain构建上失败

时间:2020-07-09 18:42:29

标签: asp.net azure asp.net-core x509certificate2

我们在ASP.NET core 2.1应用程序中有一个自定义中间件,用于验证客户端证书的有效性。该证书不是自签名的,是受信任的CA签名的。该应用程序托管在Azure应用程序服务中。我们从chainstatus得到以下响应。可能是什么问题?

“吊销功能无法检查证书的吊销,因为吊销服务器处于脱机状态,所以吊销功能无法检查吊销”。

X509Chain ch = new X509Chain();
ch.ChainPolicy.RevocationMode = X509RevocationMode.Offline;
var verified = ch.Build(x509Certificate2);

当我们将RevocationMode更改为在线时,它在大多数情况下都有效,但是在某些情况下,我们获得相同的chainstatus “吊销功能无法检查证书的吊销,因为吊销服务器处于脱机状态,所以吊销功能无法检查吊销”。

X509Chain ch = new X509Chain();
ch.ChainPolicy.RevocationMode = X509RevocationMode.Online;
var verified = ch.Build(x509Certificate2);

1 个答案:

答案 0 :(得分:2)

使用from pyspark.sql import functions as F from pyspark.sql.window import Window df.withColumn("order_id", F.monotonically_increasing_id())\ .withColumn("what_i_want", F.sum("to_add_number").over(Window().partitionBy("group").orderBy("order_id"))+1)\ .orderBy("order_id").drop("order_id").show() #+------+-------------+-----------+ #| group|to_add_number|what_i_want| #+------+-------------+-----------+ #|aaaaaa| 0| 1| #|aaaaaa| 0| 1| #|aaaaaa| 1| 2| #|aaaaaa| 0| 2| #|aaaaaa| 0| 2| #|aaaaaa| 1| 3| #|aaaaaa| 0| 3| #|aaaaaa| 0| 3| #|bbbbbb| 0| 1| #|bbbbbb| 1| 2| #|bbbbbb| 1| 3| #|bbbbbb| 0| 3| #|cccccc| 0| 1| #|cccccc| 0| 1| #|cccccc| 0| 1| #|cccccc| 1| 2| #+------+-------------+-----------+ 时,验证很可能会失败,因为CryptoAPI将仅查找本地缓存的吊销信息,而该信息在服务器上不太可能存在。

当您使用X509RevocationMode.Offline时,CryptoAPI将尝试到达吊销服务器(如CDP和AIA扩展中所指定)以检索链中每个证书的吊销信息。如果任何证书都无法访问吊销信息,或者该证书已过期,那么您将收到X509RevocationMode.Online错误。在这种情况下,您可能需要为每个证书调试CDP和AIA扩展名中的每个URL,并找出问题所在。

此外,当可以访问URL但URL的超时已过期时,会引发RevocationOffline错误。