acmephp / acmephp
用PHP编写的Let's Encrypt客户端
Requires
- php: >=7.2.5
- ext-filter: *
- ext-hash: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- lib-openssl: >=0.9.8
- alibabacloud/cdn: ^1.7
- alibabacloud/wafopenapi: ^1.7
- aws/aws-sdk-php: ^3.38
- guzzlehttp/guzzle: ^7.2
- guzzlehttp/psr7: ^1.0
- lcobucci/jwt: ^3.3|^4.0
- league/flysystem: ^1.0.19
- league/flysystem-memory: ^1.0
- league/flysystem-sftp: ^1.0.7
- monolog/monolog: ^1.19|^2.0
- padraic/phar-updater: ^1.0
- psr/container: ^1.0
- psr/http-message: ^1.0
- psr/log: ^1.0
- symfony/config: ^5.0|^6.0
- symfony/console: ^5.0|^6.0
- symfony/dependency-injection: ^5.0|^6.0
- symfony/filesystem: ^5.0|^6.0
- symfony/serializer: ^5.0|^6.0
- symfony/yaml: ^5.0|^6.0
- webmozart/assert: ^1.0
- webmozart/path-util: ^2.3
Requires (Dev)
- phpspec/prophecy: ^1.9
- symfony/finder: ^5.0|^6.0
- symfony/phpunit-bridge: ^5.0|^6.0
- symfony/var-dumper: ^5.0|^6.0
Suggests
- daverandom/libdns: ^2.0
- dev-master
- 2.1.0
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.3.0
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- 1.0.0-beta5
- 1.0.0-beta4
- 1.0.0-beta3
- 1.0.0-beta2
- 1.0.0-beta1
- 1.0.0-alpha10
- 1.0.0-alpha9
- 1.0.0-alpha8
- dev-improve-pem-parsing
- dev-phar-build-artifact
- dev-feat-build-docker
- dev-lyrixx-phpstan
- dev-feat-update-self-updater
- dev-revert-275-fix-allow-psr-http-message-2
- dev-fix-allow-psr-http-message-2
- dev-csr-pem
This package is auto-updated.
Last update: 2024-08-26 13:35:20 UTC
README
Acme PHP是一个简单但非常可扩展的CLI客户端,用于Let's Encrypt,可以帮助您获取和更新免费的HTTPS证书。
Acme PHP也是一个旨在在PHP中实现强大、稳定和ACME协议的倡议。使用Acme PHP库和核心组件,您可以直接在应用程序中深度集成证书管理(例如,从您的Web界面中更新证书)。如果您对这些功能感兴趣,请查看acmephp/core和acmephp/ssl库。
Acme PHP现在由https://zerossl.com维护。
为什么我应该使用Acme PHP,而不是官方客户端呢?
Acme PHP在默认客户端之上提供了几个主要改进
- Acme PHP本质上是单个二进制文件:单个下载即可开始工作;
- Acme PHP基于配置文件而不是命令行参数。因此,配置更加丰富,每次续订都使用相同的设置;
- Acme PHP非常易于扩展,可以创建您Web服务器所需的证书文件结构。它提供了一些默认格式化程序来创建经典文件结构(nginx、nginx-proxy、haproxy等),但您也可以轻松创建自己的;
- Acme PHP遵循严格的BC策略,即使更新它也不会在您的脚本或CRON中产生错误(有关更多信息,请参阅Acme PHP的向后兼容性策略);
文档
阅读官方Acme PHP文档。
向后兼容性策略
Acme PHP通过严格遵守语义版本控制来遵循严格的BC策略。这意味着只要您保持相同的主版本(1.X.X、2.X.X等),即使您更新Acme PHP(无论是CLI工具还是库),您的脚本、CRON任务和代码也将继续正常工作。
启动测试套件
Acme PHP测试套件使用Docker Boulder镜像创建ACME服务器。要启动测试套件,您需要设置套件的适当Docker环境。有用的脚本位于tests
目录下:在Acme PHP根目录中,执行以下操作
# Create the Docker environment required for the suite
sudo tests/setup.sh
# Run the tests
tests/run.sh
# Clean the docker environment
tests/teardown.sh
注意:在测试中,您可能会遇到boulder错误。只需忽略它们并重新运行套件即可,这些错误是由于容器DNS问题引起的;
警告:由于acmephp/testing-ca Docker镜像需要映射到主机网络,您可能会遇到端口冲突。有关更多信息,请参阅https://github.com/acmephp/testing-ca;
运行命令
运行命令是一个整合所有功能的命令,它使用类似以下格式的domain
配置文件
contact_email: contact@company key_type: RSA # RSA or EC (for ECDSA). Default "RSA" defaults: distinguished_name: country: FR locality: Paris organization_name: MyCompany solver: http certificates: - domain: example.com distinguished_name: organization_name: MyCompany Internal solver: route53 subject_alternative_names: - '*.example.com' - www.subdomain.example.com install: - action: install_aws_elb region: eu-west-1 loadbalancer: my_elb - domain: www.example.com solver: name: http-file adapter: ftp # ftp or sftp or local, see https://flysystem.thephpleague.com/ root: /var/www/ host: ftp.example.com username: username password: password # port: 21 # passive: true # ssl: true # timeout: 30 # privateKey: path/to/or/contents/of/privatekey
用法
$ acmephp run path-to-config.yml
使用Docker
您还可以使用Docker镜像生成证书。证书和密钥存储在卷/root/.acmephp
中
docker run --rm -ti -v /cache/.acmephp:/root/.acmephp -v $PWD/.config.yml:/etc/acmephp.yml:ro acmephp/acmephp:latest run /etc/acmephp.yml