【发布时间】: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 浏览该站点时,clientCertificate 是 null。
我错过了什么?
【问题讨论】:
-
IIRC,
clientcertnegotiation=enable在初始握手期间启用客户端证书协商。如果您使用 Wireshark 查看流量,您应该会看到Certificate Request消息(使用“Decode As... -> SSL”查看该端口上的数据包)。
标签: .net ssl httplistener