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.
Para hacer un certificado X.509 accesible a Windows Communication Foundation (WCF), el código de aplicación debe especificar el nombre del almacén de certificados y ubicación. En ciertas circunstancias, la identidad del proceso debe tener el acceso al archivo que contiene la clave privada asociada al certificado X.509. Para obtener la clave privada asociada a un certificado X.509 en un almacén de certificados, WCF debe tener el permiso para hacerlo. De forma predeterminada, solo el propietario y la cuenta del sistema pueden tener acceso a la clave privada de un certificado.
Para hacer los certificados X.509 accesibles para WCF
Proporcione la cuenta donde WCF está ejecutando el acceso de lectura al archivo que contiene la clave privada asociada al certificado X.509.
Determine si WCF requiere el acceso de lectura a la clave privada para el certificado X.509.
La tabla siguiente detalla si una clave privada debe estar disponible al utilizar un certificado X.509.
Uso del certificado X.509 Clave privada Firmar digitalmente un mensaje SOAP saliente.
Sí
Comprobar la firma de un mensaje SOAP entrante.
No
Cifrar un mensaje SOAP saliente.
No
Descifrar un mensaje SOAP entrante.
Sí
Determine la ubicación del almacén de certificados y diga dónde está almacenado el certificado.
El almacén de certificados en el que el certificado está almacenado se especifica en código de aplicación o en configuración. Por ejemplo, el ejemplo siguiente especifica que el certificado se encuentra en el almacén de certificados CurrentUser denominado My.
cc.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "contoso.com")
cc.ClientCredentials.ClientCertificate.SetCertificate( StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "contoso.com");
Determine dónde se encuentra la clave privada para el certificado en el equipo utilizando la herramienta FindPrivateKey.
La herramienta FindPrivateKey requiere el nombre del almacén de certificados, la ubicación del almacén de certificados, y algo que singularmente identifique el certificado. La herramienta acepta el nombre de sujeto del certificado o su huella digital como un identificador único. Para Para obtener más información sobre cómo determinar la huella digital para un certificado, vea Cómo recuperar la huella digital de un certificado.
El ejemplo de código siguiente utiliza la herramienta FindPrivateKey para determinar la ubicación de la clave privada para un certificado en el almacén
My
enCurrentUser
con una huella digital de46 dd 0e 7a ed 0b 7a 31 9b 02 a3 a0 43 7a d8 3f 60 40 92 9d
.findprivatekey.exe My CurrentUser -t "46 dd 0e 7a ed 0b 7a 31 9b 02 a3 a0 43 7a d8 3f 60 40 92 9d" -a
Determine la cuenta donde WCF se está ejecutando.
La tabla siguiente detalla la cuenta donde WCF se está ejecutando para un escenario determinado.
Escenario Identidad de proceso Cliente (consola o aplicación WinForms).
Usuario actualmente registrado.
Servicio que tiene host propio.
Usuario actualmente registrado.
Servicio que se hospeda en IIS 6.0 (Windows Server 2003) ó IIS 7.0 (Windows Vista).
NETWORK SERVICE
Servicio que se hospeda en IIS 5.X (Windows XP).
Controlado por el elemento <processModel> en el archivo Machine.config. La cuenta predeterminada es ASPNET.
Conceda el acceso de lectura al archivo que contiene la clave privada a la cuenta donde WCF se está ejecutando, utilizando una herramienta como cacls.exe.
El ejemplo de código siguiente edita (/E) la lista de control de acceso (ACL) para que el archivo especificado conceda (/G) el acceso de lectura (: R) de cuenta NETWORK SERVICE al archivo.
cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\8aeda5eb81555f14f8f9960745b5a40d_38f7de48-5ee9-452d-8a5a-92789d7110b1" /E /G "NETWORK SERVICE":R
Vea también
Tareas
FindPrivateKey
Cómo recuperar la huella digital de un certificado