ミッション HTTPS化完了

HTTPS だけで見えるサイトにする

この章の締めくくりです。証明書を作り、443 番で待たせ、80 番から案内する。ここまでできました。最後に、運用で必ず触ることになる2つを足します。古い暗号方式を使わせないことと、期限を自分で把握することです。

古いバージョンを切る

TLS にはバージョンがあります。古いものには既知の弱点があり、いま新しく開くサーバーで受け入れる理由はありません。

ssl_protocols TLSv1.2 TLSv1.3;

この1行で、受け入れるバージョンをこの2つに限れます。書かないと、nginx の版によっては古いものまで受け入れます。

書く場所は 443 番の server ブロックの中です。複数のサイトを持つなら、http の階層に1度だけ書いて全体に効かせるほうが漏れがありません。3章で log_formatconf.d に置いたのと同じ考え方です。

期限を把握する

証明書は必ず切れます。切れた瞬間、訪問者全員に警告が出ます。正式な証明書でも同じで、運用でいちばん多い事故のひとつです。

openssl x509 -in /etc/ssl/certs/mysite.crt -noout -enddate # notAfter=Aug 8 12:00:00 2027 GMT

期限が近いかどうかを判定させることもできます。

openssl x509 -in /etc/ssl/certs/mysite.crt -noout -checkend 2592000

-checkend は、指定した秒数のうちに切れるかどうかを調べます。2592000 は 30 日です。切れるなら失敗の扱いになるので、そのままスクリプトの条件に使えます。6 章で .timer を使って定期実行を作りますが、この判定はその題材にちょうど向いています。

通しで確かめる

最後は、訪問者と同じ道筋をたどります。

curl -skIL http://localhost/works/

-I でヘッダーだけ、-L で案内を追いかけるので、80 番の 301 と 443 番の 200 が続けて出ます。この2つが並んで見えれば、案内から配信までが繋がっています。

3章で作った /works/ と自分の 404、専用のアクセスログも、443 番に移したあとで生きているかを確かめます。移設のときに静かに落ちるのは、たいていこういう細かい部分です

手を動かす

古い TLS を切り、期限を確かめ、80 番から 443 番までの道筋が最後まで通っていることを確かめます。

ヒント

  • 1. 443 番の server ブロックに ssl_protocols TLSv1.2 TLSv1.3; を足す
  • 2. nginx -t のあと systemctl reload nginx で反映する
  • 3. openssl x509 -noout -enddate の結果を /root/cert-expiry.txt に保存する
  • 4. openssl x509 -noout -checkend 2592000 の判定結果も同じファイルに書き足す
  • 5. curl -skIL http://localhost/works/ > /root/full-path.txt で通しの結果を保存する

11 項目で採点します