OpenSSLの関数はPHPのドキュメントではジャンルが混ざり合って説明されていてわかりにくいのでジャンルごとに分類整理します。
一般
OpenSSLで一般的に使われる機能です。
openssl_error_string | OpenSSL エラーメッセージを返す |
openssl_random_pseudo_bytes | 疑似ランダムなバイト文字列を生成する |
公開鍵暗号
公開鍵暗号に使う関数です。公開鍵暗号は「秘密鍵」と「公開鍵」のペアを用いてデータの暗号化と復号化を行うのが特徴です。公開鍵は広く公開し、秘密鍵は公開せずに保持しておきます。公開鍵で暗号化したデータは秘密鍵でしか復号できず、秘密鍵で暗号化したデータは公開鍵でしか複合できないという特徴があります。
openssl_cipher_iv_length | 暗号 iv の長さを取得 |
openssl_decrypt | データを復号する |
openssl_encrypt | データを暗号化する |
openssl_free_key | キーリソースを開放する |
openssl_get_cipher_methods | 利用可能な暗号メソッドを取得 |
openssl_get_curve_names | ECC で利用可能な楕円曲線の名前を取得する |
openssl_get_privatekey | openssl_pkey_get_private のエイリアス |
openssl_get_publickey | openssl_pkey_get_public のエイリアス |
openssl_open | シール(暗号化)されたデータをオープン(復号)する |
openssl_pkcs7_decrypt | S/MIME 暗号化されたメッセージを復号する |
openssl_pkcs7_encrypt | S/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_file | CSR をファイルにエクスポートする |
openssl_csr_export | CSR を文字列としてエクスポートする |
openssl_csr_get_public_key | CSR の公開鍵を返す |
openssl_csr_get_subject | CSR の subject を返す |
openssl_csr_new | CSR を作成する |
openssl_csr_sign | CSRに他の証明書(あるいは自分自身)で署名して証明書を作成する |
署名
電子署名を扱うのに使う関数です。電子署名というのは何かに同意することを表すわけではなく、単に「この文書は送信者である秘密キーの保持者が送ったものが改竄されることなく手元に来ているか」を判別するための情報です。実社会で同意を表す際に使われる「署名」に相当するのは「電子サイン」です。
openssl_pkcs7_sign | S/MIME メッセージに署名する |
openssl_pkcs7_verify | S/MIME で署名されたメッセージの署名を検証する |
openssl_sign | 署名を生成する |
openssl_spki_export_challenge | 署名済みの公開鍵とチャレンジに関連するチャレンジをエクスポートする |
openssl_spki_export | 署名済みの公開鍵とチャレンジから、有効なPEMフォーマットの公開鍵をエクスポートする |
openssl_spki_new | 署名された公開鍵とチャレンジを新規に作成する |
openssl_spki_verify | 署名済みの公開鍵とチャレンジを検証する |
openssl_verify | 署名を検証する |
証明書
証明書を扱うのに使う関数です。証明書は「誰かによって署名された署名リクエスト」です。一般的によく知られた署名に「サーバー証明書」があります。自分で生成した署名リクエストに自分で署名した場合は第三者が署名したわけでは無いので署名としてのデータは機能しますが、あくまでも「自称」なので「オレオレ証明書」とも言われます。
openssl_get_cert_locations | 有効な証明書の格納場所を検索する |
openssl_pbkdf2 | PKCS5 v2 の PBKDF2 文字列を生成する |
openssl_pkcs12_export_to_file | PKCS#12 互換の証明書保存ファイルをエクスポートする |
openssl_pkcs12_export | PKCS#12 互換の証明書保存ファイルを変数にエクスポートする |
openssl_pkcs12_read | PKCS#12 認証ストアをパースして配列形式にする |
openssl_pkcs7_read | PKCS7 ファイルを 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_parse | X509 証明書をパースし、配列として情報を返す |
openssl_x509_read | X.509 証明書をパースし、リソース ID を返す |
openssl_x509_verify | x509証明書のデジタル署名を公開鍵で検証する |