©
This document uses PHP Chinese website manual Release
(PHP 4 >= 4.0.6, PHP 5)
openssl_x509_checkpurpose — Verifies if a certificate can be used for a particular purpose
$x509cert
, int $purpose
[, array $cainfo
= array()
[, string $untrustedfile
]] ) openssl_x509_checkpurpose() examines a certificate to
see if it can be used for the specified purpose
.
x509cert
The examined certificate.
purpose
Constant | Description |
---|---|
X509_PURPOSE_SSL_CLIENT | Can the certificate be used for the client side of an SSL connection? |
X509_PURPOSE_SSL_SERVER | Can the certificate be used for the server side of an SSL connection? |
X509_PURPOSE_NS_SSL_SERVER | Can the cert be used for Netscape SSL server? |
X509_PURPOSE_SMIME_SIGN | Can the cert be used to sign S/MIME email? |
X509_PURPOSE_SMIME_ENCRYPT | Can the cert be used to encrypt S/MIME email? |
X509_PURPOSE_CRL_SIGN | Can the cert be used to sign a certificate revocation list (CRL)? |
X509_PURPOSE_ANY | Can the cert be used for Any/All purposes? |
cainfo
cainfo
should be an array of trusted CA files/dirs
as described in Certificate
Verification.
untrustedfile
If specified, this should be the name of a PEM encoded file holding certificates that can be used to help verify the certificate, although no trust is placed in the certificates that come from that file.
Returns TRUE
if the certificate can be used for the intended purpose,
FALSE
if it cannot, or -1 on error.
[#1] adr at NOSPAM dot entropymatrix dot com [2013-05-17 16:24:15]
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";
}
?>
[#2] chaoszcat at gmail dot com [2012-08-16 04:05:59]
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