acmephp/sslを使ってPHPでSSLの秘密鍵ファイル・CSRファイルを発行する方法
このライブラリであっという間にできてしまった。
acmephp/sslはバージョン2.1、PHPは8.3.6でopensslモジュールは必須。
やりたいこと
以下の2つ
使い方
使い方というか、コード見た方が早そう。
とりあえずcomposerでインストール
composer require acmephp/ssl
コード
<?php require_once __DIR__."/vendor/autoload.php"; use AcmePhp\Ssl\CertificateRequest; use AcmePhp\Ssl\DistinguishedName; use AcmePhp\Ssl\Generator\KeyPairGenerator; use AcmePhp\Ssl\Signer\CertificateRequestSigner; use AcmePhp\Ssl\Generator\RsaKey\RsaKeyOption; // キー長の設定 $keyOption = new RsaKeyOption(2048); $keyPairGenerator = new KeyPairGenerator(); // ノーパスの秘密鍵ファイルを作成 $keyPair = $keyPairGenerator->generateKeyPair($keyOption); $pem = $keyPair->getPrivateKey()->getPEM(); file_put_contents('servername_nopass.key', $pem); // ノーパスの秘密鍵ファイルからパスフレーズ有の秘密鍵ファイルを作成 // パスフレーズの設定 $passphrase = 'my-pass-phrase'; openssl_pkey_export($pem, $output, $passphrase); file_put_contents('servername.key', $output); // CSRの発行に必要なパラメータ $distinguishedName = new DistinguishedName( 'example.com', // Common Name (CN) 'US', // Country (C) 'California', // State (ST) 'San Francisco',// Locality (L) 'Example Inc.', // Organization (O) 'IT Department' // Organizational Unit (OU) ); // CSRファイルの作成 $certificateRequest = new CertificateRequest($distinguishedName, $keyPair); $export = (new CertificateRequestSigner)->signCertificateRequest($certificateRequest); file_put_contents('server.csr', $export);