나는 간단한 웹 서버를 구현하기 위해 HttpListener
을 사용하고 있습니다. 포트 44430에 바인딩됩니다. IIS와 포트를 공유하지 않습니다. netsh
을 사용하여 서버 인증서를 구성했습니다.HttpListener에서 클라이언트 인증서 사용
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로 트래픽을 살펴보면 ("* Decode As ... -> SSL *"로 해당 포트의 패킷을보십시오)'Certificate Request' 메시지가 보일 것입니다. – Bruno