Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las System.Net clases admiten varias maneras de seleccionar y validar System.Security.Cryptography.X509Certificates las conexiones de Capa de socket seguro (SSL). Un cliente puede seleccionar uno o varios certificados para autenticarse en un servidor. Un servidor puede requerir que un certificado de cliente tenga uno o varios atributos específicos para la autenticación.
Definición
Un certificado es una secuencia de bytes ASCII que contiene una clave pública, atributos (como el número de versión, el número de serie y la fecha de expiración) y una firma digital de una entidad de certificación. Los certificados se usan para establecer una conexión cifrada o para autenticar un cliente en un servidor.
Selección y validación de certificados de cliente
Un cliente puede seleccionar uno o varios certificados para una conexión SSL específica. Los certificados de cliente se pueden asociar a la conexión SSL a un servidor web o a un servidor de correo SMTP. Un cliente agrega certificados a una colección de objetos de X509Certificate clase o X509Certificate2 . Con el correo electrónico como ejemplo, la colección de certificados es una instancia de ) X509CertificateCollectionasociada a la ClientCertificates propiedad de la SmtpClient clase . La HttpWebRequest clase tiene una propiedad similar ClientCertificates .
La diferencia principal entre y X509Certificate la X509Certificate2 clase es que la clave privada debe residir en el almacén de certificados de la X509Certificate clase.
Incluso si los certificados se agregan a una colección y se asocian a una conexión SSL específica, no se enviará ningún certificado al servidor a menos que el servidor los solicite. Si se establecen varios certificados de cliente en una conexión, se usará el mejor en función de un algoritmo que tenga en cuenta la coincidencia entre la lista de emisores de certificados proporcionados por el servidor y el nombre del emisor del certificado de cliente.
La SslStream clase proporciona aún más control sobre el protocolo de enlace SSL. Un cliente puede especificar un delegado para elegir el certificado de cliente que se va a usar.
Un servidor remoto puede comprobar que un certificado de cliente es válido, actual y firmado por la entidad de certificación adecuada. Se puede agregar un delegado a para aplicar la ServerCertificateValidationCallback validación del certificado.
Selección de certificados de cliente
.NET Framework selecciona el certificado de cliente que se va a presentar al servidor de la siguiente manera:
Si un certificado de cliente se presentó anteriormente al servidor, el certificado se almacena en caché cuando se presenta por primera vez y se reutiliza para las solicitudes de certificado de cliente posteriores.
Si hay un delegado presente, use siempre el resultado del delegado como certificado de cliente que se va a seleccionar. Intente usar un certificado almacenado en caché siempre que sea posible, pero no use credenciales anónimas almacenadas en caché si el delegado ha devuelto null y la colección de certificados no está vacía.
Si este es el primer desafío para un certificado de cliente, Framework enumera los certificados en X509Certificate o los X509Certificate2 objetos de clase asociados a la conexión, buscando una coincidencia entre la lista de emisores de certificados proporcionados por el servidor y el nombre del emisor de certificados de cliente. El primer certificado que coincide se envía al servidor. Si ningún certificado coincide o la colección de certificados está vacía, se envía una credencial anónima al servidor.
Herramientas para la configuración de certificados
Hay varias herramientas disponibles para la configuración de certificados de cliente y servidor.
La herramienta Winhttpcertcfg.exe se puede usar para configurar certificados de cliente. La herramienta Winhttpcertcfg.exe se proporciona como una de las herramientas con el Kit de recursos de Windows Server 2003. Esta herramienta también está disponible como descarga como parte de las herramientas del Kit de recursos de Windows Server 2003 en www.microsoft.com.
La herramienta HttpCfg.exe se puede usar para configurar certificados de servidor para la HttpListener clase . La herramienta HttpCfg.exe se proporciona como una de las herramientas de soporte técnico para Windows Server 2003 y Windows XP Service Pack 2. HttpCfg.exe y las otras herramientas de soporte técnico no están instaladas de forma predeterminada en Windows Server 2003 o Windows XP. En Windows Server 2003. las herramientas de soporte técnico se instalan por separado de la siguiente carpeta y archivo en el CD-ROM de Windows Server 2003:
\Support\Tools\Suptools.msi
Para su uso con Windows XP Service Pack 2, las herramientas de soporte técnico de Windows XP están disponibles como descarga desde www.microsoft.com.
El código fuente de una versión de la herramienta HttpCfg.exe también se proporciona como ejemplo con el SDK de Windows Server. El código fuente del ejemplo deHttpCfg.exe se instala de forma predeterminada con los ejemplos de red como parte de Windows SDK en la carpeta siguiente:
C:\Archivos de programa\Microsoft SDKs\Windows\v1.0\Samples\NetDS\http\serviceconfig
Además de estas herramientas, las X509Certificate clases y X509Certificate2 proporcionan métodos para cargar un certificado desde el sistema de archivos.