Kestrel SSL JSON配置中的证书问题

时间:2019-04-08 10:35:19

标签: .net-core ssl-certificate kestrel-http-server

可以参考Kestrel documentation来使用appsettings.json文件配置https:

  "HttpsInlineCertStore": {
    "Url": "https://+:5002",
    "Certificate": {
      "Subject": "<coma separated multi-line subject name>",
      "Store": "Root",
      "Location": "LocalMachine"
  }

此证书肯定存在,下一个代码返回找到它:

        using (var certStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine))
        {
            certStore.Open(OpenFlags.ReadOnly);
            var certificates = certStore.Certificates.Find(
                X509FindType.FindBySubjectDistinguishedName, "<coma separated multi-line subject name>", true);

            return certificates .Count > 0 ? certificates [0] : null;;
        }

如果同时使用X509FindType.FindBySubjectName搜索证书,它什么也没发现,即使microsoft说FindBySubjectDistinguishedName是更具体的搜索,我也相信这是问题所在。

1 个答案:

答案 0 :(得分:0)

最后,我能够解决此问题:  类似于“ CN = 名称,C = UK,...”,但如果要FindBySubjectName,则必须从搜索字符串中删除“ CN =“,并仅保留名称,因此看起来不像“ CN = 名称”,但类似于“ 名称”。