how - web api https c#
Las configuraciones del certificado de cliente pueden ser configuradas en el web.config (1)
Puede configurar una combinación de la sección de access y las locations
en web.config (o web.configs en los subdirectorios apropiados) para configurar esto.
Por ejemplo, para requerir un certificado SSL en la interfaz del directorio, puede agregar el siguiente bloque a la sección de configuración de su web.config:
<location path="Interface">
<system.webServer>
<security>
<access sslFlags="Ssl,SslRequireCert" />
</security>
</system.webServer>
</location>
NOTA: como @Jonathan DeMarks declaró en su comentario, también he necesitado incluir SslNegotiateCert
para que funcione (con IIS 8.5 y Chrome). Por lo tanto, la configuración de trabajo para mí es: sslFlags="Ssl,SslRequireCert,SslNegotiateCert"
De hecho, recibí un error que decía que estaba especificando SslRequireCert
pero podría usar SslNegotiateCert
.
Tenga en cuenta que si desea requerir Ssl, debe agregarlo y la marca de certificado correspondiente.
Los valores de bandera de la documentación de la tecnología son:
Ninguna. Esta configuración predeterminada deshabilita SSL para el sitio o la aplicación.
Ssl. El sitio o aplicación requiere SSL.
SslNegotiateCert. El sitio o la aplicación acepta certificados de cliente para la autenticación.
SslRequireCert. El sitio o la aplicación requiere certificados de cliente para la autenticación. Ssl128. El sitio o la aplicación requiere cifrado de certificado SSL de 128 bits.
SIN EMBARGO
La sección de access
no se puede anular de forma predeterminada.
Para admitir esto, debe modificar applicationHost.config en C: / Windows / System32 / inetsrv / config (o el directorio apropiado para su instalación) y cambiar la siguiente línea:
<section name="access" overrideModeDefault="Deny" />
a:
<section name="access" overrideModeDefault="Allow" />
Estoy trabajando con una aplicación SSL y quiero controlar qué carpetas ignoran, requieren o aceptan certificaciones de clientes.
El objetivo final es hacer que una subcarpeta de la aplicación web ignore la certificación del cliente. No quiero hacer esto a través de IIS porque tendrá que replicarse en toda la granja de servidores web.
¿Algunas ideas?