trustocean/acme-client

用PHP编写的ACME客户端

安装: 92

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 3

分支: 106

公开问题: 12

类型:项目


README

Build Status StyleCI Packagist Version Software License

SymfonyInsight

Acme PHP 是一个简单但非常可扩展的 CLI 客户端,用于 Let's Encrypt,可以帮助您获取和更新免费的 HTTPS 证书。

Acme PHP 还是一个将强大、稳定且功能强大的 ACME 协议实现带入 PHP 的倡议。使用 Acme PHP 库和核心组件,您可以将证书管理直接集成到您的应用程序中(例如,从您的网络界面更新证书)。如果您对这些功能感兴趣,请查看 acmephp/coreacmephp/ssl 库。

如果您想与我们聊天或有问题,请在 Symfony Slack 上 ping @tgalopin 或 @jderusse!

为什么我应该使用 Acme PHP,而不是官方客户端?

Acme PHP 在默认客户端之上提供了几个主要改进

  • Acme PHP 本身就是一个单一的二进制文件:一次下载,您就可以开始工作;
  • Acme PHP 基于配置文件(~/.acmephp/acmephp.conf),而不是命令行参数。因此,配置更加丰富,且在每次续订时都使用相同的设置;
  • Acme PHP 可以监控您的 CRON,并在许多不同的地方向您发送警报:电子邮件、Slack、HipChat、Flowdock、Fleep(感谢 Monolog!)
  • Acme PHP 非常可扩展,可以创建您 Web 服务器所需的证书文件结构。它提供了几个默认格式化程序来创建经典文件结构(nginx、nginx-proxy、haproxy 等),但如果您需要,也可以非常容易地创建自己的格式化程序;
  • Acme PHP 遵循严格的 BC 政策,防止在更新时在您的脚本或 CRON 中出现错误(有关更多信息,请参阅 Acme PHP 的向后兼容性政策);

文档

阅读官方 Acme PHP 文档

向后兼容性政策

Acme PHP 通过严格遵守 语义版本控制 来遵循严格的 BC 政策。这意味着您的脚本、您的 CRON 任务和您的代码将在更新 Acme PHP(无论是 CLI 工具还是库)时保持正常工作,只要您保持相同的主版本(1.X.X、2.X.X 等)。

除了 CLI 和库的稳定版本的语义版本控制之外,Acme PHP 还遵循某些仅适用于 CLI 的规则

  • alpha 版本可能破坏与同一版本的先前 alpha 版本的 BC(1.1.0-alpha2 可能破坏由 1.1.0-alpha1 引入的功能的 BC,但不能破坏 1.0.0 功能的 BC)。
  • beta 版本不能破坏与先前 beta 版本的 BC(1.1.0-beta4 必须与 1.1.0-beta3、1.1.0-beta2、1.1.0-beta1 和 1.0.0 兼容)。只要新功能不破坏 BC,就可以在 beta 中添加新功能。

启动测试套件

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