【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 を返します。

【PHP8.x】openssl_csr_new関数の使い方 | いっしー@Webエンジニア