【问题标题】:Using client certificates with HttpListener将客户端证书与 HttpListener 一起使用
【发布时间】:2013-01-19 09:46:28
【问题描述】:

我正在使用HttpListener 来实现一个简单的网络服务器。我正在绑定到端口 44430——我没有与 IIS 共享端口。我已经使用netsh 配置了服务器证书:

netsh http add sslcert ipport=0.0.0.0:44430 ^
    certhash=a614ebdfd07968dedd3afdb1cb8c696988dd7734 ^
    appid="{00112233-4455-6677-8899-AABBCCDDEEFF}"

现在,我想要求客户证书。我在上面的命令中添加了clientcertnegotiation=enable,然后它在netsh http show sslcert中显示为启用。

我在我的服务器中使用以下代码:

var context = listener.GetContext();
var clientCertificate = context.Request.GetClientCertificate();

...但是当我使用 Internet Explorer 浏览该站点时,clientCertificatenull

我错过了什么?

【问题讨论】:

  • IIRC, clientcertnegotiation=enable 在初始握手期间启用客户端证书协商。如果您使用 Wireshark 查看流量,您应该会看到 Certificate Request 消息(使用“Decode As... -> SSL”查看该端口上的数据包)。

标签: .net ssl httplistener


【解决方案1】:

您的 Windows 证书存储中必须有一个客户端证书。

证书需要由 CA(证书颁发机构)签署 在服务器主机上受信任。

那么IE应该能够找到客户端证书并将其传递给 服务器。

【讨论】:

  • 它在 IIS 的 443 端口上运行良好。问题是:为什么 HttpListener 不协商客户端证书?我该如何配置?
猜你喜欢
  • 2014-09-30
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
相关资源
最近更新 更多