Httplistener com suporte para https
Parece ser um monte de informações confusas, às vezes conflitantes, no que diz respeito a tornar um .net HTTPListener https capaz. Meu entendimento é o seguinte:
O código c # precisa de umhttps
prefixo (ex.https://*:8443
) para que o ouvinte entenda que precisa atender às solicitações SSL nessa porta.
O handshake SSL real acontece sob as capas e é tratado porhttp.sys
(enterrado em algum lugar na máquina Windows); O código C # não precisa gerenciar explicitamente o handshake SSL, porque isso acontece embaixo das capas.
É necessário ter um "certificado confiável x509" nohttpListener
máquina, e de alguma forma esse certificado precisa ser ligado à porta 8443 (neste exemplo)
Meu entendimento acima está correto? Se não, por favor me instrua.
Em relação aos certificados x509, meu entendimento é:
Usarmakecert
para criar um certificado x509. Esse certificado é armazenado no armazenamento pessoal e precisa ser movido para o Trusted Store (é onde o ouvinte http ficará). Parece que eu posso usarcertMgr
para executar o movimento, ou eu posso usarmmc
para efetuar o movimento. Parece que há mais de 1 formato de certificado x509 (DER
,Base64
,pks
protegido pswdpks
particular etc) .. Existe um formato preferido que eu deveria usar?Depois que eu obtenho o certificado no repositório confiável, preciso vinculá-lo à porta tcp. Eu estou no Win7: devo estar usandohttpcfg
ounetsh
?
Quaisquer dicas / conselhos seriam apreciados.