一年前申请的华为云服务器已经是过期了,新的服务器需要全新的 ssl 证书,因为国内的网络环境问题,使用 Certbot 申请 Let's Encrypt 证书比较折磨,开放博客的最初一段时间只能依靠 cloudflare 的免费 cdn 来装作有证书加密的样子……
现在,好时代来临力!只要把域名托管到 cloudflare 就可以用一种更加可靠的方法申请证书了。
本文方法需要命令行权限以及 cloudflare 的 api 令牌
ステップ 1#
ドメインを cloudflare にホスティングします。プロセスは省略しますが、ネットでチュートリアルを検索できます。これが重視すべきことです。
ステップ 2#
まず、ssh を使ってサーバーに接続する必要があります。次に、Certbot をインストールします。これは、SSL 証明書の取得とインストールを自動化するのに役立つ無料のオープンソースツールです。
sudo apt-get update
sudo apt-get install certbot
次に、Cloudflare プラグインをインストールして自動 DNS 検証を行います。
sudo apt-get install python3-certbot-dns-cloudflare
ステップ 3#
次に、cloudflare で API トークンを申請し、後の DNS 検証の準備をします。権限は少なくとも DNS ファイアウォールの読み取りと編集、DNS の読み取りと編集を開く必要があります。(トークンは必ず保存してください)
画像
ステップ 4#
ini ファイルを作成して API トークンをサーバーに保存します。私は nano を使うのが好きです。
sudo mkdir ~/.secrets
sudo mkdir ~/.secrets/certbot
sudo nano ~/.secrets/certbot/cloudflare.ini
nano に入力する内容は以下の通りで、your-cloudflare-api-token
は自分の API トークンに置き換えます。
dns_cloudflare_api_token = your-cloudflare-api-token
次に、資格情報ファイルの権限が安全であることを確認します。
sudo chmod 600 ~/.secrets/certbot/cloudflare.ini
ステップ 5#
Certbot コマンドを実行して、自動的に証明書を申請します。
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-d example.com \
-d www.example.com
example.com
とwww.example.com
を申請するドメインに置き換える必要がありますが、このコマンドはしばしば成功しません。DNS レコードの伝播遅延により、Let's Encrypt が必要な DNS TXT レコードを見つけられない場合、このコマンドはエラーを返します。DNS レコードの伝播時間を増やして、TXT レコードがすべての DNS サーバーに十分に伝播する時間を確保できます。一般的に、60 秒で十分です。
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
--dns-cloudflare-propagation-seconds 60 \
-d example.com \
-d www.example.com
これで、証明書の申請は大成功です。証明書が期限切れになるたびに自動的に更新されます(もちろん API トークンが期限切れになる前に)。手間いらずで便利です。API トークンが期限切れになった場合は、cloudflare.ini
ファイルを修正し、このコマンドを再実行するだけで大丈夫です。
この文は Mix Space によって xLog に同期更新されました。原始リンクは https://www.actorr.cn/posts/default/cloudflare_and_certificate