Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

LXXIIOpenSSL 関数

警告

このモジュールは、実験的なものです。これは、これらの関数の動作、関数名は、このドキュメントに書かれて事項と同様に告知なく将来的なPHPのリリースで変更される可能性があります。注意を喚起するとともに、このモジュールは使用者のリスクで使用して下さい。

導入

このモジュールは、署名の生成および認証、そして、データのシール (暗号化)およびオープン(復号化)を行うために、 OpenSSL の関数を使用します。こ のモジュールでは、PHP 4.0.4pl1 は、OpenSSL >= 0.9.6 を必要としま すが、PHP-4.0.5以降では、OpenSSL >= 0.9.5 でも動作します。

注意 この拡張モジュールはまだ実験的なものであることに注意して下さい!

OpenSSL は多くの機能を提供しますが、これらはまだこのモジュールでは サポートされていません。

キー/証明書パラメータ

OpenSSL関数のうちごく小数のみがキーまたは証明書パラメータを必要と します。PHP 4.0.5 より以前では、openssl_get_xxx 関数のどれかによ り返されたキーまたは証明書リソースを使用する必要がありました。こ れより後のバージョンでは、次の方法のどれかを使用することが可能と なる予定です。

  • 証明書

    1. openssl_x509_read から返された X.509リソース

    2. file://path/to/cert.pem 形式の文字列。 このファイルは、PEMエンコードの証明書である必要があります。

    3. PEMエンコードされた証明書の内容を含む文字列。

  • 公開/秘密キー

    1. openssl_get_publickey() または openssl_get_privatekey() から返されたキー リソース

    2. 公開キーのみ: X.509リソース

    3. file://path/to/file.pem フォーマットを 有する文字列。このファイルには、PEMエンコードされた証明書/ 秘密キーが含まれている必要があります。(両方を含むことも可能 です。)

    4. PEMエンコードされた証明書/キーの内容を含む文字列

    5. 秘密キーについては、array($key, $passphrase) という構文を使用することも可能です。 ただし、$key は、file:// または上記のテキスト表現形式を使用 して指定したキー、$passphrase はその秘密キーに関するパスワー ドを有する文字列を表します。

証明書の認証

サイン/証明書を認証する関数をコールする際、 cainfo パラメータは、ファイルと認証済みのCA ファイルの場所を指定するファイルディレクトリ名を含む配列です。 ディレクトリが指定された場合、opensslコマンド が使用できるような正しい形式にハッシュされたディレクトリである必 要があります。

PKCS7 フラグ/定数

S/MIME 関数はビットフィールドを使用して指定したフラグを使用します。 このビットフィールドには、以下の値を一つ以上含むことが可能です。

表 1PKCS7 定数

定数説明
PKCS7_TEXT text/plain content type ヘッダを暗号化/サインを行うメッセー ジに追加します。復号化または認証を行う際には、このヘッダは出 力から取り除かれます。復号化または認証されたメッセージがMIME 型 text/plain でない場合、エラーとなります。
PKCS7_BINARY 通常、入力されたメッセージは、CRおよびLFを行端として使用した 「正規化」された形式に変換されます。この形式は、S/MIME規格に 基づくものです。このオプションが指定された場合、変換が行われ ます。この機能は、MIME形式でないバイナリデータを処理する際に 便利です。
PKCS7_NOINTERN メッセージを認証する際に、通常、メッセージに含まれる証明書が 証明書にサインする際に検索されます。 このオプションでは、 openssl_pkcs7_verify()extracerts パラメータで指定した証明書 のみが使用されます。しかし、指定された証明書を信頼されていな いCAとして使用することも可能です。
PKCS7_NOVERIFY サイン済みのメッセージにサインした人の証明書を認証しません。
PKCS7_NOCHAIN サインを行った側の証明書の認証の連鎖を行いません。 この場合、サイン付きのメッセージにある証明書を未認証のCAとし て使用しません。
PKCS7_NOCERTS メッセージにサインする際、通常サインをする人の証明書が挿入さ れます。このオプションを指定した場合はそうなりません。これに より、サイン付きのメッセージのサイズは小さくなりますが、認証 側が、(例えば、openssl_pkcs7_verify()extracertsにより渡すことにより)サイン をした人の証明書のコピーをローカルに用意する必要があります。
PKCS7_NOATTR 通常、メッセージがサインされる時、サインした時間やサポートさ れる対象アルゴリズムを含む一連の属性が付加されます。このオプ ションを指定した場合、それらの属性は付加されません。
PKCS7_DETACHED メッセージにサインをする際、MIME型 multipart/signed を指定し てクリアテキストでサインを行います。これは、 openssl_pkcs7_sign() において フラグを指定しなかった場合の flags パ ラメータのデフォルトです。このオプションをオフにした場合、メッ セージは不透明なサインによりサインされます。これは、メールリ レイによる変換に対してより耐性がありますが、S/MIMEをサポート しないメールエージェントでは読むことはできません。
PKCS7_NOSIGS メッセージにサインや認証を試みません。

注意 これらの定数は、4.0.6 で追加されました。

目次
openssl_csr_export_to_file -- CSRをファイルまたは変数にエキスポートする
openssl_csr_export -- CSRをファイルまたは変数にエキスポートする
openssl_csr_new -- 秘密キーとCSRを生成する
openssl_csr_sign -- 他のCERTで証明書をサインする
openssl_error_string -- OpenSSL エラーメッセージを返す
openssl_free_key -- キーリソースを開放する
openssl_get_privatekey -- PEMフォーマットされた秘密キーを使用可能とする
openssl_get_publickey --  証明書(certificate)から公開キーを展開し、使用可能とする
openssl_open -- シール(暗号化)されたデータをオープン(復号)する
openssl_pkcs7_decrypt -- S/MIME 暗号化されたメッセージを復号化する
openssl_pkcs7_encrypt -- S/MIME メッセージを暗号化する
openssl_pkcs7_sign -- S/MIME メッセージにサインする
openssl_pkcs7_verify -- S/MIMEサインされたメッセージのサインを確認する
openssl_pkey_export_to_file --  キーのエキスポート可能な表現をファイルに取得する
openssl_pkey_export --  あるキーのエクスポート可能な表現を文字列またはファイルに取得する
openssl_pkey_new -- 新規に秘密キーを生成する
openssl_private_decrypt -- 秘密キーでデータを復号化する
openssl_private_encrypt -- 秘密キーでデータを暗号化する
openssl_public_decrypt -- 公開キーでデータを復号化する
openssl_public_encrypt -- 公開キーでデータを暗号化する
openssl_seal -- データをシール(暗号化)する
openssl_sign -- 署名を生成する
openssl_verify -- 署名を認証する
openssl_x509_check_private_key -- 秘密キーがあるCERTに対応するかを確認する
openssl_x509_checkpurpose --  証明書が特定の目的に使用可能かどうか確認します。
openssl_x509_export_to_file -- CERTをファイルまたは変数にエキスポートする
openssl_x509_export -- CERTをファイルまたは変数をエキスポートする
openssl_x509_free -- 証明書リソースを開放する
openssl_x509_parse --  Parse an X509 証明書をパースし、配列として情報を返す
openssl_x509_read --  Parse an X.509 証明書をパースし、リソースIDを返す