gpt4 book ai didi

c# - 如何从 RESTFul 请求中捕获客户端证书并在 C# 中针对服务器上的证书进行验证?

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:35 26 4
gpt4 key购买 nike

过去 2 周我一直在研究这个主题,我发现了太多的信息,以至于我不知所措。我将从头开始。我是这方面的新手,以前从未对证书做过任何事情。我创建了 RESTful web api 来捕获 postman 的请求。在请求中,我发送了一个 CERT (my-cert.cer)。我想使用 API Controller 从请求中捕获 CERT 并验证服务器上的内容。甚至可以按照我的方式捕获 CERT 吗?我没有在任何地方找到一个好的工作示例。请帮忙!

这是我的 GET 方法

public class clientController : ApiController
{
public string Get(int id)
{
X509Certificate2 cert = Request.GetClientCertificate();
X509Certificate2 cert2 = RequestContext.ClientCertificate;

logger.addLine(LogLineType.Message, "CERT " + cert + "\n", "page", null);
logger.addLine(LogLineType.Message, "CERT 2" + cert2 + "\n", "page", null);
System.Console.WriteLine("cert : " + cert);
System.Console.WriteLine("cert2 : " + cert2);

GetClient getClient = new GetClient();
string response = getClient.RetrieveClientRequest(id).ToString();
return response; } }

最佳答案

根据 MSDN

var cert = Request.GetClientCertificate();

将为您提供与请求一起发送的证书。
为了验证您现在有两个选择。

1) 使用OCSP验证
2)调用

cert.Verify(); 

使用证书库中的证书在本地验证它的链。这意味着,它会在本地证书存储中查找证书或用于为证书构建信任链的其他一些证书。

整个主题非常宽泛。如果您的证书是由某个机构签署的,那么就会有一条链。 a 签署 b,b 签署 c,c 签署您的证书 (d)。通常您有一个证书颁发机构 (CA) 来签署用户/机器的证书请求。该 CA 的证书(在大写情况下通常是 a 或 b)被部署到同一公司的所有机器上。

使用 Verify() 您可以查找证书本身,无论机器是否知道它。如果没有,你就沿着链向上走,一旦你有了一个用于签名的链,你就信任整棵树。

d 由 c 签名 => d 未知,但有 c 的签名。c 也不知道,但签名告诉我们,它是由 b 签名的。b 然后安装在您机器的受信任证书中,因此是已知的。所以你信任 b,这让你信任 c,因此信任 d。

当然,这并没有告诉您任何关于撤销的信息。我不确定 .Verify() 是否会检查撤销列表。如果可用,最好使用 OCSP。

关于c# - 如何从 RESTFul 请求中捕获客户端证书并在 C# 中针对服务器上的证书进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54770592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com