PHP Unconference Europe 2015

openssl_x509_checkpurpose

(PHP 4 >= 4.0.6, PHP 5)

openssl_x509_checkpurposeVerifica si un certificado se puede usar para un propósito en particular

Descripción

int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] )

openssl_x509_checkpurpose() examina un certificado para ver si se puede usar para el propósito purpose especificado.

Parámetros

x509cert

El certificado examinado.

purpose

Propósitos de openssl_x509_checkpurpose()
Constante Descripción
X509_PURPOSE_SSL_CLIENT ¿El certificado puede ser usado por el lado del cliente de una conexión SSL?
X509_PURPOSE_SSL_SERVER ¿El certificado puede ser usado por el lado del servidor de una conexión SSL?
X509_PURPOSE_NS_SSL_SERVER ¿El certificado puede ser usado por un servidor SSL Netscape?
X509_PURPOSE_SMIME_SIGN ¿Se puede usar el certificado para firmar un email S/MIME?
X509_PURPOSE_SMIME_ENCRYPT ¿Se puede usar el certificado para encriptar un email S/MIME?
X509_PURPOSE_CRL_SIGN ¿Se puede usar el certificado para firmar una Lista de Revocación de Certificado (CRL en inglés)?
X509_PURPOSE_ANY ¿Se puede usar el certificado para Cualquier/Todos los propósitos?
Estas opciones no son campos de bits - ¡sólo se puede especificar una!

cainfo

cainfo debería ser una matriz de archivos/directorios de una AC de confianza, como está descrito en Verificación de Certificados.

untrustedfile

Si se especifica debería ser el nombre de un archivo PEM codificado que contiene los certificados que se pueden usar para ayudar a verificar el certificado, aunque no se pone confianza en los certificados que vienen de ese archivo.

Valores devueltos

Devuelve TRUE si el certificado se puede usar para el propósito previsto, FALSE si no se puede, o -1 si se produjo un error.

add a note add a note

User Contributed Notes 2 notes

up
0
adr at NOSPAM dot entropymatrix dot com
1 year ago
The following is an example usage of openssl_x509_checkpurpose. It is equivalent to the openssl verify command as follows:
openssl verify -CApath $openssl_cadir -purpose sslserver $openssl_crtfile

<?php
$openssl_crtfile
='auth.combined.pem';
$openssl_cadir='./ca';

$x509_res = openssl_x509_read(file_get_contents($openssl_crtfile));
if(empty(
$x509_res)) {
        echo
'x509 cert could not be read'."\n";
}
$valid = openssl_x509_checkpurpose($x509_res,X509_PURPOSE_SSL_SERVER,array($openssl_cadir));
if (
$valid === true) {
        echo
'Certificate is valid for use as SSL server'."\n";
} else {
        echo
'Certificate validation returned'.$valid."\n";
}
?>
up
-1
chaoszcat at gmail dot com
2 years ago
Few days ago I dual boot my system into Windows 8 and play around with it, and then I boot it back to windows 7, and all of sudden this function fails by returning me 0 all the time.

Spent almost two hours digging google for no result, I almost end my research.

Then (I don't know why) I did a system time update (synchronize with time.nist.gov), and all of sudden, this function returns me 1 (true).

It's true that when I boot back to Windows 7 my time has been screwed by a few hours later than my current time, and I did a manual change on it. I doubt this has anything to do with this function?

Hope it helps.

Keywords: google discovery, openid, discovery
Platform: Windows 7 64bit, PHP 5.3.13
To Top