Identity Server4 Signning Certification

对于开发阶段,我们使用IdentityServer为开发者提供的临时证书即可,但是后面仍然需要生成一些正儿八经的证书。这里我们通过OpenSSL来生成,首先去官网下载一个,这里使用的是Win64_1.1版本。打开Powershell或者CMD,输入以下命令:

cmd>openssl req -newkey rsa:2048 -nodes -keyout cas.clientservice.key -x509 -days 365 -out cas.clientservice.cer

下面将生成的证书和Key封装成一个文件,以便IdentityServer可以使用它们去正确地签名tokens

cmd>openssl pkcs12 -export -in cas.clientservice.cer -inkey cas.clientservice.key -out cas.clientservice.pfx

中途会提示让你输入Export Password,这个password后面会用到,记住它。最终导出后的结果如下图所示:

这里我将其放到了项目结构文件夹中,并设置这个pfx文件为“如果较新则复制”,确保可以在最后生成的目录里边。现在就可以修改一下ConfigureServices()方法了:

public void ConfigureServices(IServiceCollection services)
    {
        var basePath = PlatformServices.Default.Application.ApplicationBasePath;
        InMemoryConfiguration.Configuration = this.Configuration;

        services.AddIdentityServer()
            //.AddDeveloperSigningCredential()
            .AddSigningCredential(new X509Certificate2(Path.Combine(basePath,
                Configuration["Certificates:CerPath"]),
                Configuration["Certificates:Password"]))
          .AddTestUsers(InMemoryConfiguration.GetUsers().ToList())
          .AddInMemoryClients(InMemoryConfiguration.GetClients())
        .AddInMemoryApiResources(InMemoryConfiguration.GetApiResources());
    }

 这里我将证书的路径和导出密码都写到了配置文件中:

{
  "Certificates": {
    "CerPath": "certificate\cas.clientservice.pfx",
    "Password": "manulife"
  }
}

From :  https://www.cnblogs.com/edisonchou/p/identityserver4_foundation_and_quickstart_01.html   Edison Zhou.

原文地址:https://www.cnblogs.com/kim-meng/p/13521537.html