Let's Encrypt DomainFactory

CPanel を使用した一部の共有ホスティング パッケージは、 AutoSSL を提供しないか、より高い料金でのみ提供します。結果: cPanel インターフェース経由で無料の Let's Encrypt 証明書を発行することはできず、すべてのドメインが自己署名証明書に依存したままになります。ブラウザにはページが「安全ではありません」と表示されます。解決策: acme.shを使用して証明書を自分で取得し、cPanel UAPI 経由でインストールします。AutoSSL を使用せずに自動的に更新されます。


HTTPSは長らく必須となっています。だからこそ、利用しているホスティングパッケージに無料の証明書を取得する便利な方法が用意されていない場合、なおさらイライラさせられるものです。これは、例えば安価なエントリーレベルのパッケージや、プラン変更後に証明書が突然含まれなくなった場合など、想像以上に頻繁に起こります。しかし、シェルに数行のコードを追加するだけで、この問題をスマートかつ永続的に解決できます。その手順を以下に詳しく説明します。

1. SSH経由でログインする

ssh -p <port> <user>@example.com

2. acme.shをインストールする

curl https://get.acme.sh | sh -s email=me@example.com
source ~/.bashrc

3. Let's Encryptを認証局として設定する

acme.sh --set-default-ca --server letsencrypt

4. 証明書の発行

acme.sh --issue -d example.com -d www.example.com -w ~/public_html

5. cPanelにインストールする

acme.sh --deploy -d example.com --deploy-hook cpanel_uapi

6. 確認

uapi SSL installed_hosts
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
     | openssl x509 -noout -issuer -dates

フックは、UAPI 経由で証明書を適切な vHost に書き込みます。デプロイ設定は保存されます。今後は、有効期限が切れる前に、cron がすべてを更新して個別にインストールします。発行者は「Let’s Encrypt」で、有効期限は今後90日程度です。代わりに古い自己署名証明書が表示される場合は、通常、ブラウザをハード リロードすると解決します。以前の証明書は一時的に保存できます。

ホスティングプロバイダーによっては、独自のcPanelフックを提供しているところもあります。 install_ssl そして次のような返事をする adminbin Cpanel/hooks2/...: exit 255. acme.sh は依然として「正常に展開されました」と報告しますが、それは正しいことです。この場合、フックは実際のインストールが原因ではなく、後続のステップ (ホストからの内部通知または同期ジョブなど) が原因で失敗します。

ウムラウトを含むドメインの場合、acme.sh は証明書を内部的に Punycode 形式で保存します (xn--…)、フックの自動マッチャーは Unicode 形式を比較します。結果: 「0 サイト中 0 サイトに展開されました」 – 何もインストールされません。厄介なのは、acme.sh がここでも「成功」を報告するため、エラーが見落とされやすいことです。解決策: Punycode ドメインを直接操作し、自動モードをオフにします。:

python3 -c "import sys;print(sys.argv[1].encode('idna').decode())" hallöle.de
acme.sh --issue -d xn--hallle-zxa.de -d www.xn--hallle-zxa.de -w ~/public_html
export DEPLOY_CPANEL_AUTO_ENABLED='false'
acme.sh --deploy -d xn--hallle-zxa.de --deploy-hook cpanel_uapi

SSHアクセスではAutoSSLは不要です。acme.shが証明書を発行し、 cpanel_uapi-Hookオプションでインストールが完了し、付属のcronジョブによって自動的にアップデートされます。一度設定すれば、無料のHTTPSサービスは自動的に継続的に動作します。初期設定を行えば、今後の手動更新作業はすべて不要になり、同じアカウント内の他のドメインにも単一のコマンドで同様のソリューションを適用できます。

バック