去年、GoDaddy
で購入したjeasonlau.xyz
ドメインは、まもなく期限切れとなりますが、最近は財政的に厳しいため、ウェブサイトの業務をallwens.work
ドメインに移行することを考えています。
現在、jeasonlau.xyz
ドメインで提供されているサービスは、私のマオマガイドブラシツール、RSSHub
の購読、および個人用のCloudreve
クラウドストレージです。移行する場合、それらを異なるサブドメインに配置する予定なので、ワイルドカード証明書を無料で申請できるかどうか確認しようと思います。実際にチュートリアルを見つけました。
チュートリアルに従って進めると、全体のプロセスは 10 分程度で非常に簡単です。この記事では、申請プロセスを記録しておきます。😆
acme.sh
のインストール#
Let's Encrypt
公式では、申請方法に関するドキュメントが提供されていますが、手順がやや複雑です。代わりに、申請プロセスを簡素化するために、サードパーティツールのacme.sh
を使用します。
まず、acme.sh
をインストールします:
curl https://get.acme.sh | sh
このスクリプトは以下の操作を実行します:
acme.sh
を~/.acme.sh/
にインストールします。alias acme.sh = ~/.acme.sh/acme.sh
を作成し、環境変数にインストールする効果を得ます。- 毎日自動的に証明書をチェックし、期限が近づいている場合は自動的に更新する
cronjob
スクリプトを作成します。
DNS-API
を使用して証明書を検証する#
acme.sh のドキュメントを参照すると、証明書を取得するためにさまざまな方法でドメインの検証を行うことができることがわかります。私のサーバーは登録されていないため、web
のいくつかの方法は使い勝手がよくありません。最終的には、ドメインの所有権を検証するためにDNS-API
を使用することにしました。
DNS
検証は、ドメインの DNS 解決に指定されたtxt
レコードを追加することで、ドメインの所有権を検証するものです。DNS-API
は、DNS プロバイダの API を使用してtxt
レコードの追加と削除を自動的に行い、自動的な検証を行います。
異なるプロバイダには、異なるAPIキー
が必要です。詳細なチュートリアルについては、ここをクリックして詳細を確認できます。ここでは、Alibaba Cloud を例に説明します。
-
Alibaba Cloud アカウントの API 管理から
AccessKey ID
とAccessKey Secret
を取得します。 -
サーバーで以下のコマンドを実行します。
export Ali_Key=AccessKey ID export Ali_Secret=AccessKey Secret
-
次のコマンドを実行して証明書を取得します(
allwens.work
を例にします)。acme.sh --issue --dns dns_ali -d allwens.work -d *.allwens.work
完了すると、証明書ファイルは
~/.acme.sh/allwens.work
に保存され、その後のacme.sh
は自動的にそのフォルダ内の証明書を更新します。現時点では、更新時に API が必要かどうかはわかりませんので、念のために第 2 ステップで環境変数を作成するステートメントを
~/.zshrc
に書き込みました。
ウェブサーバーで証明書を使用する#
元のパス名が長すぎると感じたため、まず/etc
にcert
フォルダを作成し、シンボリックリンクを作成しました:
このステップはスキップできます。私は単にパスを短くするために行いました 🤣
sudo mkdir /etc/cert
cd /etc/cert
ln -s ~/.acme.sh/allwens.work/allwens.work.cer ./
ln -s ~/.acme.sh/allwens.work/allwens.work.key ./
次に、ウェブサーバーの設定ファイル(nginx
を例にします)を開き、証明書を使用する必要があるServer
ブロックを見つけます。
# Cloudreve
server {
server_name drive.allwens.work;
location / {
proxy_pass http://localhost:5212;
}
client_max_body_size 30g;
error_page 497 =301 https://$http_host$request_uri;
listen 10000;
# 以下の内容を追加
ssl on;
ssl_certificate /etc/cert/allwens.work.cer;
ssl_certificate_key /etc/cert/allwens.work.key;
その後、nginx
に設定ファイルを再読み込みさせます。
nginx -s reload