为 IdentityServer4 添加签名证书

为 IdentityServer4 添加签名证书

如何生成 IdentityServer4 签名证书?

需要安装 OpenSSL

  1. 申请一个私钥
1
openssl genrsa -out <私钥名称>.key 2048
  1. 申请一个公钥
1
openssl req -new -x509 -key <私钥名称>.key -days 3650 -out <公钥名称>.crt

会提示输入一些信息,用于颁发机构的信息展示,如公司,所在国家,城市等。

  1. 公钥和私钥的提取加密

由于传播安全方面的考虑,需要将公钥和私钥进行加密,
微软支持 PCK12(公钥加密技术 12 号标准:Public Key Cryptography Standards #12),
PCK12 将公钥和私钥合在一个 .pfx 后缀的文件中,并用密码保护,
如要提取公钥和私钥,需要密码确认。

1
openssl pkcs12 -export -in <公钥名称>.crt -inkey <私钥名称>.key -out <证书名称>.pfx
  1. 使用证书

将生成的 .pfx 文件复制到项目的目录中,并在配置文件 appsettings.json 里填好路径和密码

1
2
3
4
"Certificates": {
"CertPath": "Certificates/<证书名称>.pfx",
"Password": "证书密码"
}

最后在程序里加载这个证书

1
2
3
4
5
6
7
8
9
10
if (Environment.IsDevelopment())
{
builder.AddDeveloperSigningCredential();
}
else
{
builder.AddSigningCredential(new X509Certificate2(Path.Combine(Environment.ContentRootPath,
Configuration["Certificates:CertPath"]),
Configuration["Certificates:Password"]));
}

如果想调试环境也统一证书,可以把环境判断去掉,只用 AddSigningCredential 方式加载密钥证书。