如何在.NET Core 2(Sustainsys)中添加含公钥的.cer文件
在ASP.NET Core 2中配置AD FS身份验证并导入.cer公钥文件
我刚踩过类似的坑,老MVC里Web.config那套简单配置到ASP.NET Core里确实得换个思路,给你一步步说清楚怎么弄:
核心思路
ASP.NET Core的AD FS身份验证中间件(比如WsFederation)不像老版本那样直接支持配置文件里指定证书文件名,得手动加载.cer文件,然后把它添加到验证中间件的SigningKeys集合里——这就是你看到帖子里说的操作,具体步骤如下:
1. 加载.cer公钥文件
首先在你的项目里把.cer文件放好(比如根目录下的Certificates文件夹),然后在Startup.cs里加载它:
// 从配置文件读取证书路径(推荐,方便不同环境切换) var certPath = Configuration.GetValue<string>("AdfsSettings:SigningCertPath"); // 或者直接写死路径(测试用) // var certPath = Path.Combine(Directory.GetCurrentDirectory(), "Certificates/YourADFSCert.cer"); // 加载证书 var signingCertificate = new X509Certificate2(certPath);
如果用配置文件的话,记得在appsettings.json里加对应的配置项:
"AdfsSettings": { "SigningCertPath": "Certificates/YourADFSCert.cer" }
2. 配置AD FS验证时添加到SigningKeys
接下来在ConfigureServices方法里配置WsFederation身份验证,把加载好的证书添加到SigningKeys集合中:
services.AddAuthentication(WsFederationDefaults.AuthenticationScheme) .AddWsFederation(options => { // 基础AD FS配置 options.MetadataAddress = "https://your-adfs-server/FederationMetadata/2007-06/FederationMetadata.xml"; options.Wtrealm = "your-app-realm-uri"; // 比如https://yourapp.com // 关键步骤:把加载的证书加入签名密钥集合 options.SigningKeys.Add(new X509SecurityKey(signingCertificate)); });
关于你提到的SigningServiceCertificate
这个属性确实只有getter,因为它是中间件自动从SigningKeys或者Metadata里提取的有效签名证书,不需要你手动设置——只要你把证书加到SigningKeys里,中间件会自动识别并赋值给它,所以不用纠结这个属性的设置问题。
额外注意点
- 如果是部署到IIS,要确保应用池的运行账户有读取.cer文件的权限,不然会加载失败。
- 如果你能正常访问AD FS的Metadata地址,其实中间件会自动从Metadata里获取签名证书,但测试环境下如果Metadata不可达,手动加载证书就是最优解。
内容的提问来源于stack exchange,提问作者gh0st1596
相关产品推荐
相关产品推荐

