Ejemplo openssl_x509_checkpurpose
Ejemplo 1
Descripción
El siguiente programa muestra cómo puede utilizarse la función openssl_x509_checkpurpose para verificar que el certificado recuperado de un archivo es, en efecto un certificado X509 válido. Además comprueba de manera individual la respuesta que genera esta función para cada uno de los indicadores posibles.
Aunque openssl_x509_checkpurpose podría leer el certificado directamente del archivo, puesto que va a invocársele varias veces en el interior de un bucle, y se leería múltiples veces, se ha optado por recuperarla previamente y almacenarla en una variable.
Código
// Array con los distintos propósitos y una descripción $Fines = array( X509_PURPOSE_SSL_CLIENT => "Uso en extremo cliente de conexión SSL", X509_PURPOSE_SSL_SERVER => "Uso en extremo servidor de conexión SSL", X509_PURPOSE_NS_SSL_SERVER => "Uso en conexiones SSL de servidor Netscape", X509_PURPOSE_SMIME_SIGN => "Uso para firmar mensajes S/MIME", X509_PURPOSE_SMIME_ENCRYPT => "Uso para cifrar mensajes S/MIME", X509_PURPOSE_CRL_SIGN => "Uso para firmar listas de revocación" ); // Se recupera el certificado almacenado previamente en un archivo $Certificado = openssl_x509_read('file:///home/francisco/Publico/MiCertificado.x509'); // Con el indicador X509_PURPOSE_ANY comprobamos si es un certificado válido if(openssl_x509_checkpurpose($Cerficiado, X509_PURPOSE_ANY)) { print "El certificado es un certificado X509 válido<hr />"; print '<table border="1"><tr><th>Finalidad</th><th>Respuesta</th></tr>'; // Si es válido se verifican los distintos fines paras los que puede usarse foreach($Fines as $F => $Descripcion) { $Respuesta = openssl_x509_checkpurpose($Certificado, $F); $Respuesta = $Respuesta == FALSE ? "No" : $Respuesta == TRUE ? "Sí" : "Error"; print "<tr><td>$Descripcion</td><td>$Respuesta</td></tr>"; } print "</table>"; } else print "El certificado no es un certificado X509 válido"; // Liberación del certificado openssl_x509_free($Certificado);
page revision: 1, last edited: 07 May 2008 09:17