You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何使用.crt、.pem、.key三类文件调用REST API

三类证书文件的基本概念与适用场景

  • *.crt:权威CA签发的根/中间证书,属于信任锚文件,核心作用是验证API服务端返回的证书是否由可信机构签发,避免中间人攻击。适用场景为API服务端使用私有CA签发的证书、未被操作系统默认信任根库收录时,需要用该文件建立对服务端的信任,无需随请求传递,仅需加入请求的信任校验链即可。
  • *.pem:当前场景下为客户端证书公钥部分,双向TLS认证(mTLS)场景下使用,用于向服务端证明客户端的合法身份,pem为Base64编码的通用证书格式,部分场景下也可能包含完整的证书链。
  • *.key:客户端证书的私钥文件,和pem文件配对使用,用于完成mTLS握手阶段的签名、解密操作,属于敏感信息必须妥善保管,不可对外泄露,若私钥设置了密码,使用时需要传入对应密码。

C# 中使用三类文件发起API请求的实现方案

推荐使用.NET 5+版本实现,原生支持pem、key文件加载,无需引入额外依赖。如果是.NET Framework环境,需要先将pem和key合并为pfx格式后再加载。

核心实现代码

using System.Net.Http;
using System.Security.Cryptography.X509Certificates;

// 1. 加载CA根证书(crt文件),用于校验服务端证书合法性
var caCert = new X509Certificate2("path/to/your/ca.crt");

// 2. 配对加载客户端证书(pem+key)
var clientCert = X509Certificate2.CreateFromPemFile("path/to/your/client.pem", "path/to/your/client.key");
// 若私钥设置了密码,使用带密码的重载:
// var clientCert = X509Certificate2.CreateFromPemFile("path/to/your/client.pem", "path/to/your/client.key", "私钥密码");

// 3. 配置请求处理器
var handler = new HttpClientHandler();
// 添加客户端证书用于mTLS认证
handler.ClientCertificates.Add(clientCert);
// 自定义服务端证书校验逻辑,用提供的crt文件做信任校验
handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) =>
{
    chain.ChainPolicy.ExtraStore.Add(caCert);
    // 吊销校验可根据实际业务需求开启,私有CA场景下无吊销服务可设为NoCheck
    chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
    // 验证证书链是否合法
    return chain.Build(cert);
};

// 4. 构建HttpClient发起正常请求即可
using var httpClient = new HttpClient(handler);
var response = await httpClient.GetAsync("https://目标API的请求地址");
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();

注意事项

  • .NET Framework环境无CreateFromPemFile方法,可先通过openssl命令合并pem和key为pfx文件:openssl pkcs12 -export -in client.pem -inkey client.key -out client.pfx,生成后直接加载pfx文件即可,crt的校验逻辑和上述代码一致。
  • 生产环境建议不要随意关闭吊销校验,需根据服务端证书的实际配置调整X509RevocationMode参数。
  • 私钥文件需严格控制访问权限,禁止存放在Web可访问目录等公开路径,避免泄露。

内容的提问来源于stack exchange,提问作者Imyna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:45:08