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.
Especifica el identificador del certificado de cliente que se va a usar para la autenticación de cliente en una solicitud HTTPS (SSL).
Syntax
HRESULT SetClientCertificateByID(
[in] BG_CERT_STORE_LOCATION StoreLocation,
[in] LPCWSTR StoreName,
[in] byte *pCertHashBlob
);
Parámetros
[in] StoreLocation
Identifica la ubicación de un almacén del sistema que se va a usar para buscar el certificado. Para conocer los valores posibles, consulte la enumeración BG_CERT_STORE_LOCATION .
[in] StoreName
Cadena terminada en NULL que contiene el nombre del almacén de certificados. La cadena está limitada a 256 caracteres, incluido el terminador NULL. Puede especificar uno de los siguientes almacenes del sistema o un almacén definido por la aplicación. El almacén puede ser un almacén local o remoto.
| Importancia | Meaning |
|---|---|
|
Certificados de entidad de certificación |
|
Certificados personales |
|
Certificados raíz |
|
Certificado de publicador de software |
[in] pCertHashBlob
Hash SHA1 que identifica el certificado. Use un búfer de 20 bytes para el hash. Para obtener más información, vea la sección Comentarios.
Valor devuelto
En la tabla siguiente se enumeran algunos de los posibles valores devueltos.
| Código de retorno | Description |
|---|---|
|
Éxito. |
|
El usuario no tiene permiso para acceder a la ubicación del almacén. |
|
El valor del parámetro StoreLocation no está definido en la enumeración BG_CERT_STORE_LOCATION . |
|
No se pudo encontrar un almacén que coincida con el parámetro StoreName . |
|
No se encontró un certificado que coincida con el hash. |
|
El parámetro StoreName o pCertHashBlob no puede ser NULL. |
|
El tamaño del búfer pCertHashBlob no es de 20 bytes. |
|
El parámetro StoreName tiene más de 256 caracteres. |
|
El estado del trabajo no puede ser BG_JOB_STATE_CANCELLED ni BG_JOB_STATE_ACKNOWLEDGED. |
Observaciones
Solo el propietario del trabajo puede especificar el certificado de cliente. Si el trabajo cambia de propiedad, BITS quita el certificado del trabajo.
El certificado de cliente solo es aplicable a los archivos remotos que usan el protocolo HTTP o HTTPS. Puede especificar un certificado para todos los tipos de trabajo.
Cuando un sitio web acepta pero no requiere un certificado de cliente SSL y el trabajo de BITS no especifica un certificado de cliente, se producirá un error en el trabajo con ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED (0x80072f0c).
Si crea un certificado para el trabajo o la aplicación, puede almacenar el identificador de certificado (huella digital) en el registro o la base de datos y usarlo cuando un trabajo requiera un certificado. También puede enumerar los certificados en el almacén y permitir que el usuario elija el certificado. Otra alternativa es llamar a la función CertFindCertificateInStore para recuperar el contexto del certificado en función de algunos criterios. Con el contexto, llame a la función CertGetCertificateContextProperty para recuperar el hash (especifique CERT_HASH_PROP_ID para dwPropId).
No se admiten las huellas digitales de Tarjeta inteligente.
Examples
En el ejemplo siguiente se muestra cómo especificar un certificado de cliente para un trabajo mediante la huella digital del certificado. En el ejemplo se codifica la huella digital del certificado y se supone que pJob apunta a un trabajo válido.
HRESULT hr = S_OK;
IBackgroundCopyJob* pJob = NULL;
IBackgroundCopyJobHttpOptions* pHttpOptions = NULL;
BYTE Thumbprint[] = {0xa1, 0x06, 0x6e, 0x13, 0xf2, 0x34, 0x49, 0x0a, 0x22, 0xd7, 0x6f, 0xb2, 0x80, 0xab, 0x68, 0x7d, 0x16, 0x55, 0xb3, 0x14};
// Retrieve a pointer to the IBackgroundCopyJob4 interface.
hr = pJob->QueryInterface(__uuidof(IBackgroundCopyJobHttpOptions), (void**)&pHttpOptions);
pJob->Release();
if (FAILED(hr))
{
wprintf(L"QueryInterface for HttpOptions failed with 0x%x.\n", hr);
goto cleanup;
}
// Use the client certificate in the current user's personal (MY) store.
hr = pHttpOptions->SetClientCertificateByID(BG_CERT_STORE_LOCATION_CURRENT_USER,
L"MY", Thumbprint);
if (FAILED(hr))
{
wprintf(L"pHttpOptions->SetClientCertificateByID failed with 0x%x.\n", hr);
goto cleanup;
}
cleanup:
if (pHttpOptions)
{
hr = pHttpOptions->Release();
}
Requisitos
| Requirement | Importancia |
|---|---|
| Cliente mínimo compatible | Windows Vista |
| Servidor mínimo admitido | Windows Server 2008 |
| de la plataforma de destino de | Windows |
| Header | bits2_5.h (include Bits.h) |
| Library | Bits.lib |
Consulte también
IBackgroundCopyJobHttpOptions::GetClientCertificate