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

作成日: 更新日:

openssl_x509_fingerprint関数は、X.509形式のデジタル証明書から、その「フィンガープリント」と呼ばれる一意のハッシュ値を計算して取得する関数です。フィンガープリントは、あたかも人間の指紋のように、特定の証明書を識別するための一意の短い文字列です。これにより、証明書が改ざんされていないか確認したり、別の証明書と同一であるかを簡単に比較したりすることができます。

この関数は、主にSSL/TLS通信や、署名されたデータの検証といったセキュリティが重要な場面で利用されます。例えば、ウェブサイトのSSL証明書が正規のものであるかを確認する際に、事前に知っているフィンガープリントと比較することで、中間者攻撃などによる偽の証明書が使用されていないかを検出できます。

関数には、対象となるcertificate(証明書データ)、フィンガープリントを計算するために使用するdigest_algo(ハッシュアルゴリズム、例えば 'sha256' など)、そして結果をバイナリ形式で返すかどうかを指定するbinaryの3つの引数を渡します。セキュリティの観点から、sha256のような最新かつ堅牢なハッシュアルゴリズムを使用することが推奨されます。

成功した場合、関数はフィンガープリントを表す文字列(binarytrueの場合はバイナリデータ)を返します。何らかの問題でフィンガープリントの生成に失敗した場合は、falseが返されますので、適切なエラーハンドリングを行うことが重要です。この関数を理解し活用することで、PHPアプリケーションのセキュリティを強化できます。

基本的な使い方

構文(syntax)

openssl_x509_fingerprint(string|OpenSSLCertificate|resource $certificate, string $digest_algo, bool $binary = false): string|false

引数(parameters)

OpenSSLCertificate|string $certificate, string $digest_algo = 'sha1', bool $binary = false

  • OpenSSLCertificate|string $certificate:フィンガープリントを計算する対象のX.509証明書。OpenSSL X.509証明書リソース、または証明書を表す文字列を指定します。
  • string $digest_algo = 'sha1':フィンガープリントの計算に使用するダイジェストアルゴリズムの名前。例: 'sha256', 'md5'。デフォルトは'sha1'です。
  • bool $binary = false:trueを指定すると、フィンガープリントがバイナリ形式で返されます。falseの場合は16進数文字列として返されます。デフォルトはfalseです。

戻り値(return)

string|false

証明書のフィンガープリント(ハッシュ値)を文字列で返します。指定されたアルゴリズムで計算できない場合は false を返します。

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