2020年7月13日月曜日

Let's Encryptの証明書を手動で取得

トラブルによく遭遇するようになったLet's Encrypt。
前回は辛くもなんとかなりましたが、今回はどうにもならず。
仕方がないのでOSのアップグレードも考えることに。
何しろベースがUbuntu 14.04とすでに枯れ過ぎた環境なもので。
とはいえ決断すると面倒な作業が待ち受けてます。

Let's Encryptの証明書は自動取得が可能で便利なものの、
そもそも手動での更新はできないのかと
なんとなく公式ドキュメント眺めていると
「マニュアル・モード」の記述を発見!! なんだあるんじゃないか。
ということで説明を読みながらやってみることに。
まあ大して詳しくも書いてないので試行錯誤は覚悟の上。
しかしなんとか方法を編み出しました。

このマニュアル・モードですが、正式なウェブサーバーとは別の
適当なPCで証明書を取得して、後でウェブサーバーに設定する流れとなります。
途中でドメイン所有とウェブサーバ保有の確認のための作業が入ります。
ということで私が実際に行った作業について紹介します。

最初に適当なインターネットに繋がったLinux PCを用意。
私が使ったのはUbuntu 18.04入りのクライアントPCです。
まずは以下のコマンドでツールをインストール。
# apt install certbot
その後、証明書を取得したいドメイン名(FQDN)を指定して以下を実行。
# certbot certonly --manual -d <ドメイン名> --preferred-challenges http-01
対話式なので問に答えていけば途中まで進むのは簡単です。
なお初回のみメールアドレスを求められたりします。
進めていくと
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

<ファイルの内容>

And make it available on your web server at this URL:

http://<ドメイン名>/.well-known/acme-challenge/<ファイル名>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
のようなメッセージが出ます。
ここで指定されたURLを開いたときに、指定されたファイルの内容が
返るよう正規ウェブサーバ側を設定します。
ウェブブラウザで正常に開けることを確認してから
[Enter]キーを押すと確認が行われ、完了すれば証明書が取得できます。
証明書は"/etc/letsencrypt/"ディレクトリ下にあり、
参照元の"/etc/letsencrypt/live/<ドメイン名>/"ディレクトリと
実体のある"/etc/letsencrypt/archive/<ドメイン名>/"ディレクトリの
ファイルを正規のウェブサーバに組み込んで立ち上げ直せば完了です。

なお初回実行時のやり取り全文を以下に載せておきます。
何かの参考になれば幸いです。
root@pc:~# certbot certonly --manual -d <ドメイン名> --preferred-challenges http-01
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): <メールアドレス>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for <ドメイン名>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

<ファイルの内容>

And make it available on your web server at this URL:

http://<ドメイン名>/.well-known/acme-challenge/<ファイル名>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/<ドメイン名>/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/<ドメイン名>/privkey.pem
   Your cert will expire on <日付>. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

0 件のコメント:

コメントを投稿