【PHP8.x】openssl_csr_new関数の使い方
openssl_csr_new
関数は、X.509証明書署名要求(CSR: Certificate Signing Request)を新しく生成するために使用されるPHPのOpenSSL拡張機能の関数です。CSRは、ウェブサイトをHTTPS化する際などに、認証局(CA)に提出し、SSL/TLS証明書を発行してもらうために必要なデータとなります。
この関数は、主に三つの引数を受け取ります。第一引数には、証明書の所有者情報を連想配列で指定します。これには、国名、都道府県名、組織名、そしてウェブサイトのドメイン名などを表すコモンネームが含まれます。第二引数には、このCSRに対応する秘密鍵を指定します。秘密鍵は、openssl_new_key
関数などで事前に生成しておく必要があります。第三引数には、CSRの生成に関する追加のオプション(例えば、署名アルゴリズムやハッシュ関数など)を連想配列で指定できます。
openssl_csr_new
関数は、成功すると新しく生成されたCSRを表すOpenSSL CSRリソースを返します。もしオプションでPEM形式での出力が指定されている場合は、PEMエンコードされた文字列としてCSRを返します。関数の実行に失敗した場合はfalse
が返されます。この関数を利用することで、プログラム上でSSL/TLS証明書取得に必要なCSRを安全かつ自動的に生成することが可能になり、セキュリティを強化したウェブアプリケーションの開発に役立ちます。秘密鍵の取り扱いには十分な注意を払う必要があります。
基本的な使い方
構文(syntax)
<?php
$private_key_resource = openssl_pkey_new();
$distinguished_names = [
"countryName" => "JP",
"stateOrProvinceName" => "Tokyo",
"localityName" => "Shibuya-ku",
"organizationName" => "MyCompany",
"commonName" => "www.example.com",
"emailAddress" => "webmaster@example.com"
];
$options = [
"digest_alg" => "sha256",
"private_key_bits" => 2048,
];
$extra_attributes = [
"challengePassword" => "mySecretPassword",
];
$csr_resource = openssl_csr_new(
$distinguished_names,
$private_key_resource,
$options,
$extra_attributes
);
引数(parameters)
array $distinguished_names, OpenSSLCertificateSigningRequest|OpenSSLAsymmetricKey|array|string &$private_key, ?array $options = null, ?array $extra_attributes = null
- array $distinguished_names: CSR (証明書署名要求) に含める識別名 (DN) の情報を連想配列で指定します。各キーはOID (Object Identifier) またはそのエイリアス (例: "commonName", "countryName") で、値は対応する文字列です。
- OpenSSLCertificateSigningRequest|OpenSSLAsymmetricKey|array|string &$private_key: CSR の生成に使用する秘密鍵を指定します。既存の
OpenSSLAsymmetricKey
オブジェクト、鍵を保持する配列、または鍵ファイルパスの文字列を指定できます。指定した鍵は、CSR に署名するために使用されます。 - ?array $options = null: CSR の生成に関する追加オプションを指定する連想配列です。例えば、ハッシュアルゴリズムや鍵の強度などを設定できます。
- ?array $extra_attributes = null: CSR に含める追加属性を指定する連想配列です。
戻り値(return)
OpenSSLCertificateSigningRequest|false
openssl_csr_new 関数は、CSR (Certificate Signing Request) オブジェクト、または処理に失敗した場合は false を返します。