CPanel を搭載した一部の共有ホスティングパッケージでは、 AutoSSL が提供されていないか、高価格プランでのみ提供されています。そのため、cPanel インターフェース経由で無料の Let's Encrypt 証明書を発行できず、すべてのドメインが自己署名証明書のままになってしまいます。ブラウザにはページが「安全ではありません」と表示されます。解決策は、 acme.shを使用して証明書を自分で取得し、cPanel UAPI 経由でインストールすることです。これにより、AutoSSL を使用せずに自動的に更新されます。
HTTPSは現在必須となっています。そのため、利用しているホスティングパッケージに無料の証明書を取得する便利な方法が用意されていない場合、非常に不便です。これは、安価なエントリーレベルのパッケージや、プラン変更後に証明書が突然含まれなくなった場合など、想像以上に頻繁に発生します。しかし、シェルに数行のコードを追加するだけで、この問題をスマートかつ永続的に解決できます。その手順を以下に説明します。
1. SSH経由でログインする
ssh -p <port> <cpanel-user>@<host>
2. acme.shをインストールする
curl https://get.acme.sh | sh -s email=du@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 を介して適切な仮想ホストに証明書を書き込みます。デプロイ設定は保存され、今後は 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 ドメインを直接操作し、自動マッチングを無効にします。:
# Punycode-Form der Domain vorher ermitteln (z. B. via idn-Tool oder Online-Konverter)
acme.sh --issue -d xn--<punycode> -d www.xn--<punycode> -w ~/public_html
export DEPLOY_CPANEL_AUTO_ENABLED='false'
acme.sh --deploy -d xn--<punycode> --deploy-hook cpanel_uapi
SSHアクセスではAutoSSLは不要です。acme.shが証明書を発行し、 cpanel_uapi-Hook によってインストールされ、付属の cron ジョブによって自動的に更新されます。一度設定すれば、無料の HTTPS サービスは自動的に継続的に実行されます。初期設定に手間をかけることで、今後の手動更新作業をすべて省くことができ、同じアカウント内の他のドメインにも単一のコマンドで同様のソリューションを適用できます。