我们在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);
答案 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
错误。