【PHP8.x】openssl_x509_checkpurpose関数の使い方

作成日: 更新日:

openssl_x509_checkpurpose関数は、X.509デジタル証明書が特定の目的で利用可能であるかを検証する関数です。

この関数は、ウェブサイトの身元確認(SSL/TLSサーバー認証)や、ユーザーの身元確認(SSL/TLSクライアント認証)、コード署名など、様々なセキュリティ目的で広く利用されるX.509証明書が、指定された用途のために適切に発行され、有効であるかを確認する際に使用されます。例えば、クライアント認証を要求するシステムにおいて、提示された証明書が本当にクライアント認証目的で発行されたものかを確実にチェックするために利用されます。

openssl_x509_checkpurpose関数は、主に証明書に埋め込まれている用途拡張フィールド(Extended Key Usage; EKU)や基本的な制約(Basic Constraints)などの情報を読み取り、指定された目的に対して証明書が許可されているかを判断します。また、オプションで信頼できる認証局(CA)の証明書リストや、証明書が格納されたディレクトリを指定することで、証明書チェーン全体の有効性も検証できます。

この関数に渡す主な引数としては、検証対象となるX.509証明書のリソース、検証したい目的を示す整数値(例えば、X509_PURPOSE_SSL_CLIENTなど)、オプションで信頼するCA証明書の配列や、CA証明書が格納されたディレクトリパスなどがあります。

検証が成功し、証明書が指定された目的に適合していると判断された場合はtrueを返し、適合しない場合や検証自体が失敗した場合はfalseを返します。この関数は、アプリケーションが受け取る証明書のセキュリティを強化し、意図しない用途での証明書の悪用を防ぐために非常に重要な役割を果たします。

基本的な使い方

構文(syntax)

<?php
$certificate = '/path/to/your/certificate.pem'; // X.509証明書へのパス、PEM形式の文字列、またはOpenSSLCertificateオブジェクト
$purpose = X509_PURPOSE_SSL_SERVER;          // 証明書の使用目的 (例: SSLサーバー証明書として有効か)
$caInfo = ['/path/to/your/ca_bundle.pem'];   // 信頼できるCA証明書ファイルのパスの配列 (オプション)
$untrustedFile = '';                         // 信頼しない証明書ファイルのパス (オプション)

$isValid = openssl_x509_checkpurpose($certificate, $purpose, $caInfo, $untrustedFile);
?>

引数(parameters)

OpenSSLCertificate|string $certificate, int $purpose, array $ca_info = array (), ?string $untrusted_certificates_file = NULL

  • OpenSSLCertificate|string $certificate: 検証するX.509証明書。OpenSSL X.509証明書リソース、または証明書のPEMエンコーディングされた文字列を指定します。
  • int $purpose: 証明書の目的。PHP::openssl_get_cert_locations() で定義されている定数、またはそれらのビットマスクを指定します。
  • array $ca_info = array (): CA証明書情報。信頼するCA証明書を含む配列を指定します。
  • ?string $untrusted_certificates_file = NULL: 信頼できない証明書ファイル。検証に使用する信頼できない証明書を含むPEM形式のファイルパスを指定します。

戻り値(return)

int|bool

openssl_x509_checkpurpose 関数は、指定された証明書が特定の用途に適しているかどうかを検証します。検証が成功した場合は true を返し、失敗した場合は false を返します。

【PHP8.x】openssl_x509_checkpurpose関数の使い方 | いっしー@Webエンジニア