gpt4 book ai didi

c# - SmartCard 安全性,您如何验证证书不是伪造的?

转载 作者:行者123 更新时间:2023-11-30 15:04:29 24 4
gpt4 key购买 nike

我正在尝试开发一个读取 clientCertificate 的 ASP.net 站点,以确保使用智能卡访问该网站(试图取消用户名/密码登录)。

我心中的流程是:

  1. 用户注册一个帐户,C# 记录用户的 clientCertificate(公共(public))。
  2. 用户下次可以使用相同的 clientCertificate 登录,如果哈希有效,他们现在是经过身份验证的用户。
  3. 我将使用下面的代码来确保证书的真实性。浏览器应处理私钥并确保证书不是伪造的。
  4. 基于 Subject+certificate 组合,C# 为他们分配角色访问权限。

下面的代码可以用来验证证书的真实性吗?

X509Certificate x509Cert = new X509Certificate(Request.ClientCertificate.Certificate);
SHA1 sha = new SHA1CryptoServiceProvider();
byte[] hashvalue = sha.ComputeHash(Request.ClientCertificate.Certificate);
byte[] x509Hash = x509Cert.GetCertHash();
// compare x509Hash WITH hashvalue to ensure they are a match.
// If not, possibly faked certificate, not a real smartcard???

这是智能卡身份验证过程的工作方式吗???

最佳答案

如果您只需要使用客户端证书对用户进行身份验证,您应该在 IIS 中执行此操作。您根本不需要向您的应用程序添加任何代码:

Specify Whether to Use Client Certificates (IIS 7)

除非您需要将客户端证书与数据库帐户相关联或执行额外的验证步骤。但对于客户端证书身份验证,我仍然会坚持使用 IIS 设置。

更新:如果您需要操作客户端证书,您可以执行以下操作:

X509Certificate2 x509Cert2 = new X509Certificate2(Page.Request.ClientCertificate.Certificate);

然后访问它的属性,例如:

x509Cert2.Subject

但是,将验证部分留给 IIS。如果客户端提供了错误的证书,您的 asp.net 代码甚至不会执行,因为 IIS 会拒绝它

关于c# - SmartCard 安全性,您如何验证证书不是伪造的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10249056/

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