SSL証明書の更新(ZeroSSL)

2022年5月29日

2月にサーバを引っ越ししたと以前に書きましたが、そろそろサーバ証明書(SSL証明書)の期限を迎えるので、今回はサーバ証明書の更新に関してまとめていきたいと思います。
ちなみに、証明書期限切れ近くなると、ありがたいことにこんな感じでメールで通知をもらえます。


私が使用している証明書はZeroSSL発行のサーバ証明書のため、今回は手動で更新してみようと思います。
次回はツールを使って自動更新できるようにサーバの機能追加をしてみたいと思います。
なお、初回のZeroSSL証明書発行方法に関してはこちらを参考にしてみてもらえると嬉しいです。

新しいサーバ証明書の取得

現在動いているWebサーバに関しては、すでにSSL設定が済の状態のため、サーバ上の証明書ファイルの入替が今回の目的のため、証明書の発行機関(ZeroSSL)のWebサイトから新しいサーバ証明書を取得していきます。

ZeroSSLにログインする

ZeroSSLはLet’sEncryptoとは違い、各ユーザ毎にユーザ登録をしているため、ZeroSSLのサイトから自分のアカウントでログインすると、ダッシュボード画面が表示され、以下のように現在発行済のサーバ証明書の一覧が表示されます。
はい、このサイトのSSLサーバ証明書が表示されてますね。しかも状態(STATUS)が「ExpiringSoon」となっています。
それでは「renew」ボタンをクリックして、更新していきましょう。

ドメインの指定

renewボタンを押せば、自動的に更新したいドメインが自動入力されています。ドメイン名が正しいことを確認したら、「Next Step」をクリックします。

証明書の有効期間を設定する

ZeroSSLのサーバ証明書は無料版だと90日となりますので、「90-Day Certificate」を選択して、「NextStep」をクリックします。
間違って「1-year Certificate」を選択しても、その先で決済方法を聞かれるので間違えたら戻ればOKです。決済しない限りは進めないので、誤って有料版の1年版で更新することはないかと思いますので安心してください。

証明書情報の自動生成

証明書に付帯する情報を自動生成するか聞かれますので、そのまま(Auto-GenerateCSRが有効)になっている状態で、「NextStep」をクリックします。

発行する証明書の確認

発行する証明書の確認となります。一番左の「Free」が無償版となります。前のステップで90日版を選んでいれば、Freeが初期選択されていると思います。間違って他の有償版を選択しても、先程同様決済画面に移動するので気づくと思います。
それでは「Free」が選択されていることを確認して、「NextStep」をクリックします。

認証方法の選択

ZeroSSLがサーバの正当性を確認するための確認方法を選択します。
「Email」「DNS」「HTTP File Upload」から選択します。今回も初回作成時と同様に「HTTP File Upload」を選択すると、詳細な手順が表示されます。
具体的には具体的には以下の感じで、Web画面の指示に従い、以下の操作します。

①「Download Auth FIle」をクリックしてダウンロードします。

②Webサーバのホームディレクトリに指示された「.well-known」フォルダを作り、そのフォルダ内にさらに「pki-validation」フォルダを作成し、そこに①でダウンロードしたファイル「2F***.txt」を配置すればそれでOKです。前回作ったままなら、ファイルのみ入替えてあげれば大丈夫です。

③のURLをクリックして、ダウンロードしたファイルと同じ内容がブラウザに表示されたらそれでOKです。

③を確認したら、「NextStep」をクリックします。

認証の実行

以下の画面が表示されたら「VerifyDomain」をクリックします。
ここでZeroSSLのサイトから一個前の③のURLにHTTPアクセスし、ファイルを取得してもらいます。

サーバ証明書の取得

問題なく認証されると、以下の画面が表示されるので、「DownLoad Certificate(.zip)」をクリックすると、証明書ファイルがダウンロードされます。

サーバ上の証明書を入れ替える

ダウンロードしたファイルを開くと、以下のように、3つのファイルが入っています。
ちなみに、ZeroSSLはサーバ側のSSL設定を行い、SSL通信が確認取れるまでがSSL発行の一連のウィザートとなっているので、途中で止めずに、一気にやってしまいましょう。

サーバ証明書のアップロード

Webサーバによってはサーバ証明書と中間証明書を一つにする必要があるので、その場合は、中間証明書ファイル「ca_bundle.crt」のファイルの内容をサーバ証明書ファイル「certificate.crt」の下に追記して一つのファイルにまとめてください。

#こんな感じのcatコマンドで2つのファイルを開いて、新しいファイル名で書き出しでOK
$ cat certificate.crt ca_bundle.crt > server.crt

まとめたファイルと、秘密鍵「private.key」をWebサーバのSSL設定にしていされた証明書のディレクトリパスに指定されたファイルで上書きないし、ファイルを入替えてください。ファイルを置き換えたら、一度Webサーバのサービスを再起動します。

証明書の更新確認(自分で確認)

Webサーバを再起動したら、一度ブラウザで証明書を更新したWebサイトにアクセスしてみましょう。
アクセスしたら、ブラウザのWebサイトのプロパティ情報から、サーバ証明書の情報を確認してみましょう。
有効期間が新しい期間になっていれば成功です!

証明書の更新確認(ZeroSSLの確認)

しばらく、ZeroSSLのブラウザを放置してしまいましたが、一つ前の自分自身で証明書の確認ができたら、ここでやっと「CheckInstalltion」をクリックします。

問題なければ以下のように「InstallationComplete」と表示されます。これでサーバ証明書の入替は完了です。お疲れ様でした。ZeroSSLのマイページはログアウトしてしまってOKです。

おわりに

どうでしょう。手動で更新することができましたね。
3ヶ月に1回とはいえ、なれていないと入替え操作で20-30分はかかるかと思います。
さらに、手動だと操作ミスなど起きることもあり、業務で本番サーバに同じことをやるのは嫌ですよね。
私は嫌です。有償のサーバ証明書は1年以上のものがよくありますが、年一回の保守作業で毎回これをやるのはリスクもあるし、休日ないし深夜帯の作業が前提となることが多いので避けたいですね。

ZeroSSLもネットの情報を見る限りLet’sEncrpt同様に自動で更新操作をすることができそうなので、次回は自動更新ツールを実装していきたいと思います。
それでは!

Tips

Posted by Qtaro