OpenSSL関数

 OpenSSLの関数はPHPのドキュメントではジャンルが混ざり合って説明されていてわかりにくいのでジャンルごとに分類整理します。

一般

 OpenSSLで一般的に使われる機能です。

openssl_error_stringOpenSSL エラーメッセージを返す
openssl_random_pseudo_bytes疑似ランダムなバイト文字列を生成する

公開鍵暗号

 公開鍵暗号に使う関数です。公開鍵暗号は「秘密鍵」と「公開鍵」のペアを用いてデータの暗号化と復号化を行うのが特徴です。公開鍵は広く公開し、秘密鍵は公開せずに保持しておきます。公開鍵で暗号化したデータは秘密鍵でしか復号できず、秘密鍵で暗号化したデータは公開鍵でしか複合できないという特徴があります。

openssl_cipher_iv_length暗号 iv の長さを取得
openssl_decryptデータを復号する
openssl_encryptデータを暗号化する
openssl_free_keyキーリソースを開放する
openssl_get_cipher_methods利用可能な暗号メソッドを取得
openssl_get_curve_namesECC で利用可能な楕円曲線の名前を取得する
openssl_get_privatekeyopenssl_pkey_get_private のエイリアス
openssl_get_publickeyopenssl_pkey_get_public のエイリアス
openssl_openシール(暗号化)されたデータをオープン(復号)する
openssl_pkcs7_decryptS/MIME 暗号化されたメッセージを復号する
openssl_pkcs7_encryptS/MIME メッセージを暗号化する
openssl_pkey_export_to_fileエクスポート可能な形式で、キーをファイルに取得する
openssl_pkey_exportエクスポート可能な形式で、キーを文字列に取得する
openssl_pkey_free秘密鍵を開放する
openssl_pkey_get_detailsキーの詳細の配列を返す
openssl_pkey_get_private秘密鍵を取得する
openssl_pkey_get_public証明書から公開鍵を抽出し、使用できるようにする
openssl_pkey_new新規に秘密鍵を生成する
openssl_private_decrypt秘密鍵でデータを復号する
openssl_private_encrypt秘密鍵でデータを暗号化する
openssl_public_decrypt公開鍵でデータを復号する
openssl_public_encrypt公開鍵でデータを暗号化する
openssl_sealデータをシール(暗号化)する

認証

 通常のUser IDとPasswordを使った認証に加えて公開鍵暗号化(秘密鍵と公開鍵のペア)を使って認証を行う際に使う関数です。あまり聞き慣れないでしょうが、利用事例としては弊社が取り扱う分野である企業間商取引の「cXMLを使ったRequest/Response通信」があります。

openssl_dh_compute_keyローカルのDH秘密鍵とリモート側のDH公開鍵を使い、共有シークレットを計算する

要約関数

 要約関数は「ハッシュ関数」とも呼ばれ、ダイジェストを計算する関数です。ダイジェストは任意の入力に対して特定長の文字列を出力として返す関数で、出力から入力を特定することが非常に困難であることが特徴です。この特徴を生かしてデータの改竄を見極めることに用いられます。

openssl_digestダイジェストを計算する
openssl_get_md_methods利用可能なダイジェスト・メソッドを取得

署名リクエスト

 電子署名のリクエスト(CSR)を取り扱う関数です。署名リクエストというのは自身の公開鍵を含めて「この公開鍵が私のものであると誰かに認めてもらう」際に手渡すデータです。署名リクエストには住所や名前も含まれますが、それらのアイデンティティーを保証するものではなく、あくまでも公開鍵に対する裏書きです。

openssl_csr_export_to_fileCSR をファイルにエクスポートする
openssl_csr_exportCSR を文字列としてエクスポートする
openssl_csr_get_public_keyCSR の公開鍵を返す
openssl_csr_get_subjectCSR の subject を返す
openssl_csr_newCSR を作成する
openssl_csr_signCSRに他の証明書(あるいは自分自身)で署名して証明書を作成する

署名

 電子署名を扱うのに使う関数です。電子署名というのは何かに同意することを表すわけではなく、単に「この文書は送信者である秘密キーの保持者が送ったものが改竄されることなく手元に来ているか」を判別するための情報です。実社会で同意を表す際に使われる「署名」に相当するのは「電子サイン」です。

openssl_pkcs7_signS/MIME メッセージに署名する
openssl_pkcs7_verifyS/MIME で署名されたメッセージの署名を検証する
openssl_sign署名を生成する
openssl_spki_export_challenge署名済みの公開鍵とチャレンジに関連するチャレンジをエクスポートする
openssl_spki_export署名済みの公開鍵とチャレンジから、有効なPEMフォーマットの公開鍵をエクスポートする
openssl_spki_new署名された公開鍵とチャレンジを新規に作成する
openssl_spki_verify署名済みの公開鍵とチャレンジを検証する
openssl_verify署名を検証する

証明書

 証明書を扱うのに使う関数です。証明書は「誰かによって署名された署名リクエスト」です。一般的によく知られた署名に「サーバー証明書」があります。自分で生成した署名リクエストに自分で署名した場合は第三者が署名したわけでは無いので署名としてのデータは機能しますが、あくまでも「自称」なので「オレオレ証明書」とも言われます。

openssl_get_cert_locations有効な証明書の格納場所を検索する
openssl_pbkdf2PKCS5 v2 の PBKDF2 文字列を生成する
openssl_pkcs12_export_to_filePKCS#12 互換の証明書保存ファイルをエクスポートする
openssl_pkcs12_exportPKCS#12 互換の証明書保存ファイルを変数にエクスポートする
openssl_pkcs12_readPKCS#12 認証ストアをパースして配列形式にする
openssl_pkcs7_readPKCS7 ファイルを PEM証明書 の配列にエクスポートする
openssl_x509_check_private_key秘密鍵が証明書に対応するかを確認する
openssl_x509_checkpurpose証明書が特定の目的に使用可能かどうか確認する
openssl_x509_export_to_file証明書をファイルにエクスポートする
openssl_x509_export証明書を文字列としてエクスポートする
openssl_x509_fingerprint与えられた X.509 証明書のフィンガープリントあるいはダイジェストを計算する
openssl_x509_free証明書リソースを開放する
openssl_x509_parseX509 証明書をパースし、配列として情報を返す
openssl_x509_readX.509 証明書をパースし、リソース ID を返す
openssl_x509_verifyx509証明書のデジタル署名を公開鍵で検証する
0
Would love your thoughts, please comment.x
()
x