asp.net - 在 C# 中使用具有客户端证书身份验证的 Web API
问题描述
我正在使用具有客户端证书身份验证的 Web api。我有两个 cert.pem,key.perm 文件。我通过在证书选项卡中导入这两个文件成功地在邮递员中测试了 api。它工作正常。但是当我尝试在我的 asp.net Web 应用程序中实现该 api 时,它显示身份验证失败错误。我不知道如何在编码的身份验证部分同时使用 cert.pem、key.perm 文件。
我尝试了一些编码。
string url = "https://uat-api.ssg-wsg.sg/courses/runs/50331/sessions?uen=S89PB0005D&courseReferenceNumber=PA-S89PB0005D-01-Fuchun 354&sessionMonth=012021";
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
X509Certificate clientCertificate = X509Certificate.CreateFromCertFile(System.Web.HttpContext.Current.Server.MapPath("~/Certificates/cert.pem"));
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(string.Format(url));
WebReq.Method = "GET";
WebReq.ClientCertificates.Add(clientCertificate);
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
using (Stream stream = WebResp.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);
jsonString = reader.ReadToEnd();
}
谁能帮助我如何在身份验证部分同时使用 cert.pem、key.perm 文件并使 api 成功运行.. 谢谢。
解决方案
我假设您的 cert.pem 文件是证书,而 key.pem 文件包含私钥。如果您使用的是 .net 5,则可以执行以下操作:
var certificatePem = File.ReadAllText("cert.pem"); //you have to provide the correct path here
var key = File.RealAllText("key.pem"); //and here
var certificate = X509Certificate2.CreateFromPem(certificatePem, key);
请注意新 X509Certificate2 类的使用。
如果我最初的假设不正确,请将文本发布在 pem 文件中(当然,您可以删除部分文本,或者您可以将相关部分变灰)
推荐阅读
- pine-script - 未知标识符错误,我的策略不会添加到图表中,因为 pine 说它需要输出函数
- ios - dyld:找不到符号:_$s7SwiftUI12ViewModifierP14_viewListCount6inputs4bodySiSgAA01_cfG6InputsV_AgIXEtFZTq
- typescript - 无法让 ts-node 编译带有可选链接的代码
- javascript - Discord Bot 无法断开与 discord.js 中的语音通道的连接
- c# - 使用 C# 表单在 SQL Server 2014 中插入值时出现错误
- java - 使用并行流的forkjoinpool后,futureTask后的代码遇到多线程问题
- javascript - 触发击键以从浏览器在浏览器外部(如在记事本上)键入
- php - 使用“CGI(每个主机可能设置为不同的 PHP 版本)”导致 gettext/_() 崩溃 apache
- elasticsearch - Elasticsearch - 选择用于字段的分析器
- c++ - 关于推导转换函数模板参数的几个问题