openssl_pkcs7_sign

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_signS/MIME メッセージに署名する

説明

openssl_pkcs7_sign(
    string $input_filename,
    string $output_filename,
    OpenSSLCertificate|string $certificate,
    OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key,
    ?array $headers,
    int $flags = PKCS7_DETACHED,
    ?string $untrusted_certificates_filename = null
): bool

openssl_pkcs7_sign()input_filename という名前のファイルの内容を取得し、 パラメータ certificateprivate_keyで 指定した証明書とそれに対応する秘密鍵を用いて署名します。

パラメータ

input_filename

デジタル署名したい入力ファイル

output_filename

デジタル署名が書き出されるファイル

certificate

input_filename に電子署名するために使う X.509 証明書。 有効な値のリストは、 キー/証明書パラメータ を参照してください。

private_key

private_key は、certificate に対応する秘密鍵です。 有効な値のリストは、 公開鍵/秘密鍵 のパラメータ を参照してください。

headers

headers は、ヘッダの配列です。このヘッダは、 署名された後でデータの前に付加されます (このパラメータの形式の詳細については openssl_pkcs7_encrypt() を参照ください)。

flags

flags を出力を変更するために使用することが可能です。 PKCS7 定数 を参照ください。

untrusted_certificates_filename

untrusted_certificates_filename には、 署名に含めるための他の一連の証明書を記述したファイル名を指定します。 これは、例えば送信者が使用した証明書を受信者が検証しやすくするために使用することが可能です。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.0.0 certificate は、 OpenSSLCertificate クラスのインスタンスを受け入れるようになりました。 これより前のバージョンでは、 OpenSSL X.509 CSR 型のリソースを受け入れていました。
8.0.0 private_key は、 OpenSSLAsymmetricKey または OpenSSLCertificate クラスのインスタンスを受け入れるようになりました。 これより前のバージョンでは、 OpenSSL key または OpenSSL X.509 CSR 型のリソースを受け入れていました。

例1 openssl_pkcs7_sign() の例

<?php
// 受信者が送信者を確認できるように署名したいメッセージ
$data = <<<EOD

You have my authorization to spend $10,000 on dinner expenses.

The CEO
EOD;
// ファイルにメッセージを保存
$fp fopen("msg.txt""w");
fwrite($fp$data);
fclose($fp);
// 暗号化
if (openssl_pkcs7_sign("msg.txt""signed.txt""file://mycert.pem",
    array(
"file://mycert.pem""mypassphrase"),
    array(
"To" => "joes@example.com"// 連想配列の構文
          
"From: HQ <ceo@example.com>"// 添字配列の構文
          
"Subject" => "Eyes only")
    )) {
    
// メッセージは署名されました。送信しましょう!
    
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>

関連キーワード:  署名, filename, メッセージ, key, private, パラメータ, certificate, string, input, OpenSSLCertificate