Let's Encrypt で SSL 証明書を(再)発行!
- 2019.07.10
- IT

はい,つい一昨日のことです.当ブログの SSL 証明書をうっかり期限切れにしてしまいました.最初は検証用で使うくらいかなという気持ちで作ったので自動更新の設定とか忘れてました.ブログにアクセスすると警告が出るので数日間ガタッとアクセス数が落ちていました.というわけで SSL 証明書を再発行します.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: www.ether-zone.com
Domains: www.ether-zone.com
Expiry Date: 2019-07-05 10:56:30+00:00 (INVALID: EXPIRED)
Certificate Path: /etc/letsencrypt/live/www.ether-zone.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/www.ether-zone.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
環境はクライアント OS が MacOS,ウェブサーバーをホストしているのは Azure のWebApps です.クライアント上ではすでに Let’s Encrypt をインストール済み.
まずは簡単に更新コマンドで試行するも失敗
期限切れの証明書に対して次のコマンドで証明書の更新を試みました.2行目は強制的に更新するコマンドです.
sudo certbot renew
sudo certbot --force-renew
このコマンドを使っても証明書を更新することはできませんでした...やはり一度切らしてしまった証明書は使えないと考え,再発行することにしました.
まずは環境内で残っている関係ファイルを削除しておきます./etc/letsencrypt
内の以下ディレクトリを掃除しておきます.
/live/<domain-name>
/archive/<domain-name>
/renewal/<domain-name>
/renewal/<domain-name>.conf
Let’s Encryptで証明書を再発行
まず,事前準備として発行する証明書のドメインでホストの名前解決をできるようにしておきます.具体的には所有しているドメインの DNS レコードにホストを解決できるように A レコードや CNAME レコードを記載します.Azure の WebApps などであれば CNAME レコード,固定グローバル IP を割り振った WEB サーバーなら A レコードといった具合です.Azure なら「Azure DNS ゾーン」で DNS レコードを管理することが可能です.ドメイン取得自体はお名前.com なので,指定のネームサーバーを参照するように設定しておくだけ.

クライアント上で次のコマンドを実行します.<domain-name>
のところは適宜置き換えてもらって結構です.
sudo certbot certonly -a manual -d <domain-name> --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview
初めての場合,コマンドを実行するとメールアドレスの登録を促された記憶があります.途中表示される同意文には’Y’で同意して先に進みます.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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:
その後,認証用の文字列が表示されるのでこの状態でそのまま別の作業に移ります.(Enter キーは押さないまま放置してください)次のような表示となります.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:
gHooijvDKsmu560kt0OjgMu5ft2SZ5JVz3ggld5gnsk.aehcj1ovzmycaLpOq22fPC6ypD-gSfEHWPO8Ubnn2tI
And make it available on your web server at this URL:
http://<domain-name>/.well-known/acme-challenge/gHooijvDKsmu560kt0OjgMu5ft2SZ5JVz3ggld5gnsk
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ドメインをホストしているサーバーのディレクトリに前の表示文で指定されたファイルを作成します.この場合,ホストの'well-known/acme-challenge/gHooijvDKsmu560kt0OjgMu5ft2SZ5JVz3ggld5gnsk'
ディレクトリ内に,'gHooijvDKsmu560kt0OjgMu5ft2SZ5JVz3ggld5gnsk.aehcj1ovzmycaLpOq22fPC6ypD-gSfEHWPO8Ubnn2tI'
というデータのファイルを作成します.
WebAppsの場合 [高度なツール] からディレクトリを操作します.[Debug Console]>[CMD] から指定のディレクトリにファイルを作成していきます.

あくまでも作成する場所はホストしているサイトのルートディレクトリからみた場所になります.ファイルには1行のデータのみ含めれば OK です.作成できたら直接 URL を指定して,作成したファイルへ外部からアクセスできることを確認します.

ここまでできたらコマンドプロンプトへ戻って [Enter] キーを押します.すると Let’s Encrypt のサーバからホストしている WEB サーバへドメインの検証が走ります.正しく検証が行われればその後に表示されるディレクトリに生成された証明書ファイルが格納されます.
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/<domain-name>/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/<domain-name>/privkey.pem
Your cert will expire on 2019-10-06. 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"
PFXファイルへの変換
今回は Azure WebApps というか Azure Application Gateway で利用するための証明書なので PFX ファイルへ変換する必要があります.<domain-name>
と <output-filename>
は適宜自分の環境に合わせて変更してください.-out
オプションで指定した先に PFX ファイルが出力されるのでそのファイルを使用します.
sudo openssl pkcs12 -export -in ./live/<domain-name>/fullchain.pem -inkey ./live/<domain-name>/privkey.pem -out <output-filename>.pfx
PFX ファイルを改めてホストしているサイトにアップロードすると,更新された証明書が適用されていることが確認できます.

証明書の更新にご注意を
Let’s Encrypt の証明書の有効期限は90日間です.4半期に1回くらいは更新しないといけないのでうっかり忘れてしまいがちです.自動更新などで証明書を期限切れにしないようにしましょう.
-
前の記事
WiMAX 回線と Edge Router X でお手軽 Azure と S2S VPN を試す!(WiMAX 設定編) 2019.07.04
-
次の記事
WiMAX 回線と Edge Router X でお手軽 Azure と S2S VPN を試す!(EdgeRouter と Azure編) 2019.07.15