(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_x509_checkpurposeПроверяет, можно ли использовать сертификат для конкретных задач


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

openssl_x509_checkpurpose() проверяет сертификат, чтобы узнать, может ли он использоваться с заданной целью 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 должен содержать массив доверенных CA файлов/директорий, как описано на странице проверки сертификатов.


Если задано, то должно содержать путь до PEM-файла, содержащего сертификаты, которые могут быть использованы для проверки сертификата, но не являющиеся при этом доверенными.

Возвращаемые значения

Возвращает TRUE, если сертификат можно использовать по указанному назначению, FALSE - если нельзя и -1 в случае ошибки.

add a note add a note

User Contributed Notes 2 notes

adr at NOSPAM dot entropymatrix dot com
7 years 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


$x509_res = openssl_x509_read(file_get_contents($openssl_crtfile));
$x509_res)) {
'x509 cert could not be read'."\n";
$valid = openssl_x509_checkpurpose($x509_res,X509_PURPOSE_SSL_SERVER,array($openssl_cadir));
if (
$valid === true) {
'Certificate is valid for use as SSL server'."\n";
} else {
'Certificate validation returned'.$valid."\n";
chaoszcat at gmail dot com
7 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, 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