如何在ASP.NET Core中使用服务器生成的客户端证书建立HTTPS连接

时间:2018-07-16 14:11:58

标签: asp.net-core tls1.2

我创建了一个ASP.NET Core服务,该服务以具有自签名证书的HTTPS服务运行。 在配置中,我将客户端证书设置如下:

 var httpsConnectionOptions = new HttpsConnectionAdapterOptions
        {
          ClientCertificateMode = ClientCertificateMode.AllowCertificate,
          SslProtocols = SslProtocols.Tls12,
          ServerCertificate = GetServerCert()
        };

因此,建立连接后,身份验证处理程序将接受没有证书的客户端

我打算使用以下协议:

  • 服务器作为具有自签名证书的HTTPS服务运行
  • 服务器为客户端生成自签名证书
  • 客户端知道该服务器上的公共地址(例如:myserver:9999 / api / getcert),可以在该地址上获取与服务器通信期间要使用的证书

但是,当我尝试连接到服务器时,总是出现错误 “根据验证过程,远程证书无效。”

有2种情况:

  1. 客户端不知道自签名服务器证书,因此他们无法建立有效的HTTPS连接。
  2. 客户端不提供自己的证书,因此他们无法建立有效的HTTPS连接。

问题之一,它看起来像 catch 22 ,因为客户端尝试获取其证书,但由于没有有效的证书,因此无法建立HTTPS连接,因为客户端没有因为尚未建立TLS连接,所以没有收到自己的(和服务器的)。

我可以在服务器上创建无需HTTPS即可调用的排除方法吗?还是我也应该创建一个HTTP服务,以使客户端在那里下载证书?这种情况下的最佳做法是什么?

0 个答案:

没有答案