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";
}
?>
openssl_x509_checkpurpose
(PHP 4 >= 4.0.6, PHP 5)
openssl_x509_checkpurpose — 証明書が特定の目的に使用可能かどうか確認する
説明
int openssl_x509_checkpurpose
( mixed
$x509cert
, int $purpose
[, array $cainfo = array()
[, string $untrustedfile
]] )
openssl_x509_checkpurpose() は証明書を調べ、
purpose で指定した目的に使用可能であるかどうかを確認します。
パラメータ
-
x509cert -
調べたい証明書。
-
purpose -
これらのオプションはビットフィールドではありません。 指定できるのは一つだけです!openssl_x509_checkpurpose() の目的 定数 説明 X509_PURPOSE_SSL_CLIENT この証明書を SSL 接続のクライアント側で使用できるか? X509_PURPOSE_SSL_SERVER この証明書を SSL 接続のサーバー側で使用できるか? X509_PURPOSE_NS_SSL_SERVER この証明書を Netscape SSL サーバーで使用できるか? X509_PURPOSE_SMIME_SIGN この証明書を S/MIME email で使用できるか? X509_PURPOSE_SMIME_ENCRYPT この証明書を S/MIME email の暗号化で使用できるか? X509_PURPOSE_CRL_SIGN この証明書を証明書取消リスト(CRL)にサインをする際に使用できるか? X509_PURPOSE_ANY この証明書をあらゆる用途に使用できるか? -
cainfo -
cainfoは、証明書の認証 で説明したような信頼できる CA ファイル/ディレクトリの配列です。 -
untrustedfile -
指定した場合は、これが証明書を含むPEMエンコードされたファイルの名前になります。 この証明書は、検証と証明を簡単化するために使用されます。 そのファイル内にある証明書は、信頼されない(untrusted)証明書とみなされます。
返り値
証明書が意図した目的に使用可能である場合に TRUE、使用できない場合に
FALSE 、エラーの場合に -1 を返します。
adr at NOSPAM dot entropymatrix dot com ¶
5 days ago
chaoszcat at gmail dot com ¶
9 months 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
