acmephp/acmephp

用PHP编写的Let's Encrypt客户端

安装次数: 136 466

依赖关系: 1

建议者: 0

安全性: 0

星标: 601

关注者: 13

分支: 105

开放问题: 19

类型:项目

2.1.0 2022-06-07 20:41 UTC

README

Build Status Packagist Version Software License

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

Acme PHP也是一个旨在在PHP中实现强大、稳定和ACME协议的倡议。使用Acme PHP库和核心组件,您可以直接在应用程序中深度集成证书管理(例如,从您的Web界面中更新证书)。如果您对这些功能感兴趣,请查看acmephp/coreacmephp/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