Let’s Encrypt 証明書を更新してみよう ♪

2023年10月22日



Untitled-1.md


目次

Let’s Encrypt 証明書を更新してみよう ♪

目的

無料で提供されている SSL 証明書を Web 上で, 秘密鍵・中間証明書  
・証明書を取得し更新および設置する。

ゴール

Let's Encrypt 証明書の取得の仕方, 設置の仕方が分かるようになる。

前提条件

  • サーバの基本操作 ( cp, mv, vi 等基本的なコマンドを使用することが出来る。 )
  • サーバを管理者権限で操作することができる。
  • DNS のゾーン情報について理解している。

Let’s Encrypt 証明書の取得を行う

CSR・秘密鍵 の生成

  1. Domains. Don’t foget … と書かれている欄に, SSL を設定したいサイトのコモンネーム
    ( サイトの FQDN もしくは, www なしドメイン ) を入力します。
  2. 残りの欄は空白のまま, GENERATE ボタンをクリックします。
    すると「Include www-prefixed version too?」のように www も含めますか
    と聞かれるので「Yes」を選択して下さい。※ www なしドメインを入力した場合に聞かれます。
  3. 「—–BEGIN CERTIFICATE REQUEST—–」 と書かれている欄の文字を全選択して
    適当にメモ帳などに貼り付けます。 ( CSR )
  4. 「—–BEGIN RSA PRIVATE KEY—–」 と書かれている欄の文字を全選択して
    適当にメモ帳などに貼り付けます。 ( 秘密鍵 )

SSL 証明書, 中間証明書の生成

  1. Email ( optional ) 欄に受信可能な, E-mail アドレスを入力します。
    ※ SSL 証明書の更新期限が近づいた時に知らせてくれます。
  2. Paste your CSR … 欄に, 先ほどメモ帳などにコピペしておいた, CSR 情報をペーストします。
    —–BEGIN CERTIFICATE REQUEST—–」から「—–END CERTIFICATE REQUEST—–」まで。
  3. デフォルトで HTTP verification が選択されているので DNS verification を選択します。
  4. Accept ZeroSSL TOSAccept Let’s Encrypt SA (pdf) をクリックしチェックを付けます。
  5. NEXT ボタンを押します。 すると Generating account key と出るので暫く待ちます。
  6. ここに書かれている秘密鍵はコピーするだけでメモ帳等には貼り付けなくて良いです。
    —–BEGIN RSA PRIVATE KEY—– と書かれている欄を全選択してコピーで大丈夫です。
  7. NEXT ボタンを押し, 暫く待つと Verification の画面がでてきますので DNS による認証を行います。
    それぞれ, Domain TXT RecordValue の値を, DNS サーバに登録を行いますので, DNS を自己管理
    している場合には, 自分で登録し, ドメインの管理をホスティング会社に頼んでいる場合には,
    ホスティング会社にお問い合わせを行い指示に従って認証を済ませる必要があります。
    ※ DNS の認証を済ませるまで, ブラウザの画面等閉じない様にしてください。
  8. DNS への登録が済みましたら, NEXT ボタンを押します。
    DNSへ情報が反映されたかどうか確認する場合には, 下記のように windows の場合
    cmd ( コマンドプロンプト ) で確認しておくと確実です。

    C:\Users\***>nslookup 既定のサーバー: *** Address: ***.***.***.*** >set type=txt > _acme-challenge.hogehoge.com サーバー: *** Address: ***.***.***.*** 権限のない回答: _acme-challenge.hogehoge.com text = "3fpl0P2NsKNiI2OD4ua3Wy9vFl3ZiChPagei4hAlua8" > _acme-challenge.www.hogehoge.com サーバー: *** Address: ***.***.***.*** 権限のない回答: _acme-challenge.www.hogehoge.com text = "D054XfZatZlwNiazuKgElnkvYsOQKJGT63BuxYnCl0U"
  9. 暫くすると, Your certificate is ready! の画面になるので —–BEGIN CERTIFICATE—–
    の欄を全選択し証明書を適当にメモ帳などに貼り付けます。
    ※ 証明書の中間証明書がまとめてコピーされます。
     最初の「—–BEGIN CERTIFICATE—–」と「—–END CERTIFICATE—–」 までの部分が
    証明書
     後に来る 「—–BEGIN CERTIFICATE—–」と「—–END CERTIFICATE—–」 が中間証明書になります。
  10. これで, 一連の SSL 証明書取得作業は終わりです。お疲れ様です。
    CSR , 秘密鍵 , 証明書 , 中間証明書 がメモ帳に貼り付けられているのでサーバに設置していきます。

取得した, Let’s Encrypt 証明書をサーバに設置しよう ♪

設置する環境は下記になりますので設置する環境が異なる場合には適宜読み替えていって下さい。
/*===============================================================*/
CentOS Linux release 7.5.1804 (Core)
Server version: Apache/2.4.6 (CentOS)
/*===============================================================*/

秘密鍵・証明書・中間証明書の設置

  1. 設置場所を調べる。

    grep "SSL" /etc/httpd/*/*.conf

    apache サーバの場合, conf ファイルに証明書のパス情報を記述するようになってますので上記コマンド
    を用いて, すでに設置されている, 証明書, 中間証明書, 秘密鍵の場所を確かめます。
    ※ パス情報はメモ帳などにメモっておくと後々楽かもね ♪
     SSLCertificateFile = 証明書ファイル
     SSLCertificateKeyFile = 秘密鍵ファイル
     SSLCertificateChainFile = 中間証明書ファイル

  2. 各証明書のバックアップを取る。

    cp -p /etc/pki/tls/certs/hogehoge.com.crt /etc/pki/tls/certs/hogehoge.com.crt_$(date +%Y%m%d) cp -p /etc/pki/tls/private/hogehoge.com.key /etc/pki/tls/private/hogehoge.com.key_$(date +%Y%m%d) cp -p /etc/pki/tls/certs/hogehoge.com.ca /etc/pki/tls/certs/hogehoge.com.ca_$(date +%Y%m%d)
  3. 秘密鍵の設置

    vim /etc/pki/tls/private/hogehoge.com.key_new

    メモ帳等にメモしておいた秘密鍵の「—–BEGIN RSA PRIVATE KEY—–」から「—–END RSA PRIVATE KEY—–」
    までを, vi or vim 等のコマンドで, paste モードにしてから貼り付けます。

  4. 証明書の設置

    vim /etc/pki/tls/certs/hogehoge.com.crt_new

    メモ帳等にメモしておいた秘密鍵の「—–BEGIN CERTIFICATE—–」から「—–END CERTIFICATE—–」
    までを, vi or vim 等のコマンドで, paste モードにしてから貼り付けます。
    前項でも書いてますが最初にくる「—–BEGIN CERTIFICATE—–」から「—–END CERTIFICATE—–」
    までが証明書です。

  5. 中間証明書の設置

    vim /etc/pki/tls/certs/hogehoge.com.ca_new

    メモ帳等にメモしておいた秘密鍵の「—–BEGIN CERTIFICATE—–」から「—–END CERTIFICATE—–」
    までを, vi or vim 等のコマンドで, paste モードにしてから貼り付けます。
    前項でも書いてますが後にくる「—–BEGIN CERTIFICATE—–」から「—–END CERTIFICATE—–」
    までが中間証明書です。

    diff -s /etc/pki/tls/certs/hogehoge.com.ca_new /etc/pki/tls/certs/hogehoge.com.ca /*===============================================================*/ ファイル /etc/pki/tls/certs/hogehoge.com.ca_new と /etc/pki/tls/certs/hogehoge.com.ca は同一です /*===============================================================*/

    中間証明書については, 更新を行わなく良い場合がありますので上記コマンドで過去に設置した
    秘密鍵と差分を取って同じであれば更新せず, 差違がある場合には中間証明書の更新が必要となります。
    ※ 今回は同一なので先ほど設置した中間証明書の削除を行います。
     rm -i /etc/pki/tls/certs/hogehoge.com.ca_new
    rm: 通常ファイル `/etc/pki/tls/certs/hogehoge.com.ca_new’ を削除しますか? y

     削除しても良いか聞かれるので y を押して削除する。

整合性確認

  1. 更新対象の証明書ファイル検索

    find /etc/pki \( -name *.crt_new -o -name *.key_new -o -name *.ca \) -type f -ls | grep "hogehoge.com"/*===============================================================*/752994 -rw-r--r-- 1 root root 1647252019 /etc/pki/tls/certs/hogehoge.com.ca 528664 -rw-r--r-- 1 root root 229710704:07 /etc/pki/tls/certs/hogehoge.com.crt_new 49311914 -rw-r--r-- 1 root root 324310704:01 /etc/pki/tls/private/hogehoge.com.key_new /*===============================================================*/

    上記コマンドで更新対象の証明書ファイルを取得して整合性確認をしやすくします。
    中間証明書については同一でしたので検索フィルタで *.ca としています。

  2. 証明書と秘密鍵の整合性確認

    diff -s <(openssl x509 -noout -modulus -in /etc/pki/tls/certs/hogehoge.com.crt_new) <(openssl rsa -noout -modulus -in /etc/pki/tls/private/hogehoge.com.key_new) /*===============================================================*/ ファイル /dev/fd/63 と /dev/fd/62 は同一です /*===============================================================*/

    同一と表示されれば整合性が取れています。
    同一でない場合は, 証明書の貼り付けミス, 手順を読み間違えて
    いないか等確認を行い, 同一であることを確認します。
    ※ どうしても整合性が取れない場合には証明書の再取得を行って下さい。

  3. 証明書と中間証明書の整合性確認

    diff -s <(openssl x509 -issuer_hash -noout -in /etc/pki/tls/certs/hogehoge.com.crt_new) <(openssl x509 -subject_hash -noout -in /etc/pki/tls/certs/hogehoge.com.ca) /*===============================================================*/ ファイル /dev/fd/63 と /dev/fd/62 は同一です /*===============================================================*/

    同一と表示されれば整合性が取れています。
    同一でない場合は, 証明書の貼り付けミス, 手順を読み間違えて
    いないか等確認を行い, 同一であることを確認します。
    ※ どうしても整合性が取れない場合には証明書の再取得を行って下さい。

新証明書・新秘密鍵の置き換え

_new で作成していた物を更新前の証明書・秘密鍵と置き換えを行います。
  1. 置き換え
    mv /etc/pki/tls/certs/hogehoge.com.crt_new /etc/pki/tls/certs/hogehoge.com.crt /*===============================================================*/ mv: `/etc/pki/tls/certs/hogehoge.com.crt' を上書きしますか? y /*===============================================================*/ mv /etc/pki/tls/private/hogehoge.com.key_new /etc/pki/tls/private/hogehoge.com.key /*===============================================================*/ mv: `/etc/pki/tls/private/hogehoge.com.key' を上書きしますか? y /*===============================================================*/ find /etc/pki \( -name *.crt -o -name *.key -o -name *.ca \) -type f -ls | grep "hogehoge.com"/*===============================================================*/752994 -rw-r--r-- 1 root root 1647252019 /etc/pki/tls/certs/hogehoge.com.ca 528674 -rw-r--r-- 1 root root 230110705:51 /etc/pki/tls/certs/hogehoge.com.crt 49311934 -rw-r--r-- 1 root root 324310705:47 /etc/pki/tls/private/hogehoge.com.key /*===============================================================*/

    証明書・秘密鍵が置き換わっていることを確認します。
    mv コマンドで置き換えを行っています。
    中間証明書については更新前のと同一でしたので今回, 置き換え等行っていません。

Apache 構文チェック

apachectl configtest Syntax OK

上記の様に出力されれば, O.K. です。

証明書の適用

systemctl restart httpd

正常に再起動できた場合にはなにも出力されません。
これで証明書更新作業は完了です。
お疲れ様でした。


ssl