はじめに#
一年間の無料証明書がほぼ消滅したため、最も時間と労力を節約できる方法は acme.sh による自動デプロイと更新です。私の現在のほとんどのサービスはサーバーレスシステム上で動作していますが、自動プログラムを通じて常に有効なウェブサイト証明書を取得することには一定の必要性があります。
私のように Cloudflare のサービスを利用している場合、Cloudflare のダッシュボードで 15 年有効な自己署名証明書を生成でき、Cloudflare システムの https 検証を通じて、公共 CA 証明書をデプロイする必要はありません。公共 CA 証明書システムは自動的に申請を手伝い、現在の提供者は GTS と Sectigo です。
以下に、申請プロセス中のいくつかのステップと注意点を簡単に記録します。
acme.sh Project
インストールと設定#
acme.sh のインストール#
curl https://get.acme.sh | sh -s email=my@example.com
エイリアスを設定して迅速に起動#
echo "alias acme.sh='~/.acme.sh/acme.sh'" >> ~/.bashrc
source ~/.bashrc
インストールが成功したかテスト#
acme.sh --version
成功した場合、バージョンが返されます。
デフォルトの申請メールアドレスを設定#
acme.sh --register-account -m your-email@example.com
your-email@example.comを設定したいメールアドレスに置き換えてください。設定が完了すると、以降の証明書申請はこのメールアドレスがデフォルトで使用されます。
証明書を申請する機関を選択#
公式文書によると、現在 acme は 5 つの SSL 証明書発行者をサポートしています:
- ZeroSSL.com CA (デフォルト)
- 複数ドメイン&ワイルドカードドメインをサポート、有効期限 90 日
- 上位 CA:Sectigo (USERTrust ECC Certification Authority)
- Letsencrypt.org CA
- 複数ドメイン&ワイルドカードドメインをサポート、有効期限 90 日
- 上位 CA:ISRG (ISRG Root X1)
- BuyPass.com CA
- 複数ドメイン(単一証明書内で最大 5 つ)、有効期限 180 日
- 上位 CA:Buypass (Buypass Class 3 Root CA)
- SSL.com CA
- 単一ドメインのみサポート、登録が必要、有効期限 90 日
- 上位 CA:SSL.com (SSL.com Root Certification Authority RSA R2)
- Google.com Public CA
- 複数ドメイン&ワイルドカードドメインをサポート、有効期限 90 日
- 上位 CA:GTS (GTS Root R4)
以上から、デフォルトの ZeroSSL/Let’s Encrypt/GTS を選択することをお勧めします。自動更新が可能で、複数ドメイン&ワイルドカードドメインをサポートし、一度の申請で済みます。
証明書機関の切り替え#
acme.sh --set-default-ca --server zerossl
ここで —server の後には切り替えたい機関を指定します。選択肢は:
- zerossl/letsencrypt/buypass/google/ssl.com
以下の申請手順は ZeroSSL を例に、Cloudflare DNS API を使用します。
Cloudflare DNS API の設定#
API キーを取得する手順:
- Cloudflare Dashboardにログインします。
- My Profileに移動します。
- API Tokensの下で、DNS 編集権限を持つ API トークンを作成するか、Global API Keyを使用します。
以下のコードに入力し、ターミナルで実行します。
export CF_Token="あなたのCloudflare_API_Token"
また、複数の DNS サービスプロバイダーもサポートされており、詳細はGithubを参照してください。
証明書の申請#
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
example.com および *.example.com の 2 つのドメインの証明書を申請します。必要に応じて変更し、新しいドメインは - d の後に追加してください。
証明書機関を指定する必要がある場合は、—server オプションを追加してください。
acme.sh --issue --dns dns_cf -d example.com --server zerossl
証明書のインストール#
自分のウェブサイトのサーバーバージョンに応じて、適切なコードを選択してインストールします。以下は Apache の例です:
acme.sh --install-cert -d example.com \
--key-file /path/to/your/domain.key \
--fullchain-file /path/to/your/domain.cer \
--reloadcmd "service apache2 reload"
上記のドメインおよびパスは手動で変更してください。パスは前のステップで証明書を申請した後にフィードバックされます。
定期的な更新の設定#
acme.sh --renew -d example.com --force
以降は自動的に証明書の更新が完了し、人為的な介入は不要です。
以上が acme.sh による証明書の申請と設定の全過程です。最終的な効果の参考として添付します。