# php-util-ssl-certificate **Repository Path**: nece001/php-util-ssl-certificate ## Basic Information - **Project Name**: php-util-ssl-certificate - **Description**: SSL证书 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-26 - **Last Updated**: 2025-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # php-util-ssl-certificate #### 介绍 SSL证书生成工具,支持通过Let's Encrypt自动申请和更新SSL证书。 #### 软件架构 基于AcmePhp/ssl库实现,支持Let's Encrypt的ACME v2协议,可以自动申请、验证和获取SSL证书。 #### 安装教程 1. 通过Composer安装 ``` composer require nece001/php-util-ssl-certificate ``` 2. 确保PHP已安装OpenSSL扩展 3. 确保服务器可以访问Let's Encrypt的API #### 使用说明 ##### 1. 基本用法 ```php // 引入命名空间 use Nece\Util\Ssl\Certificate\LetsEncrypt; // 创建实例(参数:域名,邮箱,是否使用测试环境) $encrypt = new LetsEncrypt('example.com', 'your-email@example.com', false); // 生成证书(此步骤会创建账户密钥、域名密钥并获取验证信息) $encrypt->generate(); // 获取验证挑战信息 $challenge = $encrypt->getChallenge(); $token = $challenge->getToken(); $payload = $challenge->getPayload(); // 保存验证文件到Web服务器根目录 $encrypt->saveValidationFile('/path/to/webroot'); // 通知Let's Encrypt进行验证并获取证书 $encrypt->validate(); // 保存证书(支持Nginx、Apache、IIS格式) $encrypt->saveCertificateAs('/path/to/save/cert', 'nginx'); ``` ##### 2. 配置选项 ```php // 设置证书主体信息 $encrypt->setDistinguishedName( 'CN', // 国家代码 'Beijing', // 省/州 'Beijing', // 城市 'Company Name', // 组织名称 'IT Department', // 部门 'admin@example.com', // 邮箱 ['www.example.com'] // 备用域名 ); // 设置挑战类型(默认为http-01) $encrypt->setChallengeType('http-01'); // 设置验证等待时间(秒) $encrypt->setVerifyWaitTime(10); // 设置OpenSSL配置 $encrypt->setOpenSslConfig([ 'config' => '/path/to/openssl.cnf', 'private_key_bits' => 2048 ]); // 设置HTTP客户端配置 $encrypt->setHttpClientConfig([ 'timeout' => 30, 'verify' => false ]); ``` ##### 3. 保存不同格式的证书 ```php // 保存为Nginx格式 $files = $encrypt->saveCertificateAs('/path/to/save', 'nginx'); // 返回: ['private_key' => '...', 'certificate' => '...', 'fullchain' => '...'] // 保存为Apache格式 $files = $encrypt->saveCertificateAs('/path/to/save', 'apache'); // 返回: ['private_key' => '...', 'certificate' => '...', 'chain' => '...'] // 保存为IIS格式(PFX) $files = $encrypt->saveCertificateAs('/path/to/save', 'iis', 'your-password'); // 返回: ['pfx' => '...', 'password_file' => '...'] ``` ##### 4. 获取证书对象 ```php // 获取证书对象 $certificate = $encrypt->getCertificate(); // 获取证书链对象 $certificateChain = $encrypt->getCertificateChain(); // 获取域名密钥对 $domainKeyPair = $encrypt->getDomainKeyPair(); // 获取账户密钥对 $accountKeyPair = $encrypt->getAccountKeyPair(); ```