Web サーバを暗号化する #1 SSL証明書の更新

このサイト https://bigriver.jp/ の SSL サーバ証明書が 2021/1/28 に更新期限を迎えます。 今のシステム構成では Apache で 暗号化 / 復号化の処理を構成していますが、この機会に Alibaba Cloud の Server Load Balancer ないしは CDN にSSL 処理を offload するのもよいかと考えています。 

年に1回の頻度のイベントなので備忘録として作業の記録を残すことにします。

まずは SSL 証明書を CA に要求します。 これまでは Rapid SSL を利用していました。 特に問題も不満もないため引き続き Rapid SSL を利用します。 本当は、Alibaba Cloud MVP 特典で頂いたクーポンで Alibaba Cloud Certificate service を購入しようと思ったのですが、OV / EV しか提供しておらず、個人での購入はハードルが高そうだったので今回は断念しました。 こういう時やその他いろいろ考えると形だけでも自分の会社というものを作った方がよいかなと最近思ったりもします(個人事業主で OV / EV は取れるか不明ですが)。

2年前のサーバ証明書購入時は https://www.rapid-ssl.jp/ で購入しました。

2年前はどこで買うかあまり気にせず Google 検索で一番上に出てきたこのサイトで購入しました。  ただ、今色々見ていると複数の販売会社から提供されていて値段もバラバラであることもわかりました。 2,980円/年や2,900円/年で購入できるところもあるようです。  このコストの差は CA というか PKI の運営コストになっているはずで普通に考えて安かろう悪かろうということに。 ただ、仮に秘密鍵が漏れても大きく困ることはないかなとは考えています。 私が今回利用するDV (Domain Validation)の証明書はドメインの正当性を証明するものではありますが、公開Webサイトしかも技術ブログということで仮に秘密鍵が流出し暗号化通信を復号化されて困る情報は特にないということがあります。 もちろん最悪のケースとして bigriver.jp のドメインないし DNS サーバを乗っ取られ、また、盗まれた秘密鍵とサーバ証明書でフィッシングサイトなどを作られてしまうリスクはあるのですが。とりあえず今回も 4,300 円 / 年の証明書を購入することにしました(安価なものに問題があるから高い方を選んだということはありません。この金額差は PKI を維持する人件費に比べたら誤差のようなもの。)。

更新を進めようとサイトの情報を確認していきます。

CSRは2年前のものを流用できるとの記載があるのですが、Common Name 以外の情報も必須項目となっているようです。

今の証明書のサブジェクトは CN しか利用していません。  私的には Common Name さえあれば何の問題もないのですがこのタイミングで世の中の常識に合わせることにして、新規にCSRを作ることにします。

この後は一般的な手順で以下の流れとなります。

  1. CSR を作成
  2. CSR でサーバ証明書を要求
  3. Domain Validation (DNS TXTレコードを利用)
  4. サーバ証明書の受け取り
  5. サーバ証明書の登録

今回は既存の秘密鍵を利用して CSR を作成します。 openssl コマンド実行時に “-key” で既存の秘密鍵を指定します。 あわせて”-out” で出力する CSR のファイル名を指定します。

oot@bigriver3:~/20210124# openssl req -new -key /etc/ssl/private/bigriver.jp.key -out bigriver.2021.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Tokyo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:bigriver.jp
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:bigriver.jp
Email Address []:.
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

生成された CSR で サーバ証明書を要求します。 CSRを張り付けて “CSR内容確認” をクリックします。

Common Name に間違いがないことを確認します。

これ以降は申込者の情報や支払情報の登録なので説明は割愛します。

支払いはクレジットカードを利用し、オンライン決済で申請登録は無事完了しました。

申請してすぐにメールで Domain Validation のために TXT レコードを作成するよう案内が届きます。 

Alibaba Cloud のコンソールから DNS の管理画面に移動し、 TXT レコードを追加します。

レコード登録は特に問題なく完了です。

動作確認します。 dig コマンドで確認します。 ANSWER SECTION に登録したレコード内容が表示されることを確認します。

root@bigriver3:~/20210124# dig bigriver.jp txt
; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> bigriver.jp txt
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59058
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;bigriver.jp. IN TXT
;; ANSWER SECTION:
bigriver.jp. 1 IN TXT “rd4m8slzxymw3x3dndpm2trn9t8ms6z8”
;; Query time: 5 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Jan 24 20:59:36 CST 2021
;; MSG SIZE rcvd: 85

登録したTXTレコードによるドメイン検証依頼をWebサイトから実行します。

検証は問題なく完了したとのこと。 あとは証明書発行完了のメールを待ちます。 2年前はドメイン認証検証から約10分で発行されました。今回は5分位でした。

あとは届いたメールに記載されている”サーバ証明書” と”中間証明書”を Apache に登録します。

apache のconf で指定している “/etc/ssl/certs/bigriver.jp.pem” にサーバ証明書を、”/etc/ssl/chain.txt” に中間証明書を登録し、apache を再起動、”systemctl restart apache2.service” を実行します。

有効期間が 2021/1/24 ~ 2022/1/25 になったことが確認出来ます。 実は今回、更新処理ではなく新規で登録しました。その結果もとの証明書の有効期限が2021/1/28 だったので3日分ほど無駄になっています。 本当は更新処理で進めたかったのですが(更新であれば無駄なくできる)、今回購入したサイトが昨年夏に仕様が変わったようで更新時にはパスワードが必要となりそのパスワードの連絡を受けていないこと、サポートに問い合わせするのも面倒なので新規で購入しています。

 

以上で、サーバ証明書の更新は終了です。 2年前の購入時は有効期間が2年で証明書を購入出来たのですが、去年から世の中として1年毎に更新が標準、2020/9/1 よりWebブラウザとして398日を超えるものは有効しないという措置、となっています。 証明書以外にもドメイン(bigriver.jp)の更新も定期的に必要なので Internet 上にWebサイトを責任もって公開していくために来年以降も忘れずに実施していきます。 来年はこの記録を見ながら進めることですこしは簡単に出来るかなと思います。

https://knowledge.digicert.com/ja/jp/solution/SO22917.html

以上