逆プロキシとSSL証明書
Webサイトのセキュリティ強化のために逆プロキシを設けることにしました。
インターネットからのパケットを一手に引き受けるサーバを作り、nginxを動かして、バックエンドにある真のサーバに転送するというものです。そうすると、仮にそのサーバが攻撃を受けても背後にある真のサーバの中のデータは書き換えられたり盗まれたりしないという考えです。
一般的には逆プロキシと呼ばれています。0.2msくらいの遅延が増えるだけでユーザの体感速度は変わりません。
また、バックエンドにある真のサーバは、逆プロキシからのリクエストしか応答しないようにして、一般のインターネットからのリクエストを遮断します。
要するに従来のファイアーウォールとDMZのような発想ですね。
このような構成を取る場合、SSLの証明書を持つものは逆プロキシだけでよくなります。
すごく便利なことで、SSLを使った暗号化の規格って何度かアップデートされているのです。Webサーバを直接インターネットに晒していると、SSLのバージョンをアップデートするためにApacheやnginxのアップデート、さらにはOSのアップデートからしなければなりませんが、サーバサイドでDBとかPHPとかでアプリケーションが動いている状況では気軽にはできません。
逆プロキシを1段かましておけば、最新の通信規格が出た場合でも逆プロキシのWebサーバやSSLをアップデートするだけでよく、本体のサーバはそのままで良いのです。
Web系の次のアップデートというと、QUIC対応でしょうかね。
いずれ全世界がQUICに対応しなければらならないというような雰囲気になっていくんじゃないかと思います。
そんなとき、サーバのアプリをQUICに対応させなければならない、となったら大騒ぎです。でも、逆プロキシがあれば、逆プロキシをapt updateするか、新しいVPSを借りてくればよいわけです。
さて、そのような感じで逆プロキシを作ってみましたが、SSLのためには証明書が必要です。
今まで私はSSL証明書のためにDigicertとかに毎年何万円×ドメイン数で払ってきたのですが、これからはLet’s Encryptを使うことにします。
Let’s Encryptは無料のSSL証明書サービスですが、CSR作成とか定期的な更新とかの必要がなく、コマンドラインで作成できて自動的に更新されます。nginxの設定ファイルまで自動的に書き換えてくれます。こんな便利なものがあったのかと驚きました。
有料のSSL証明書はサポートが手厚いとか言われていますが、サポートなど利用したことはありません。
それに、今はEV証明書だろうが何だろうが、ユーザは誰も気にしていません。銀行や証券のサイトだったら気にするかもしれませんが、一企業やサービスのサイトがどんな証明書を使っていようが気にすることはありません。世界中のSSL/TLS対応サイトの6割がLet's Encryptだというではないですか。
正直いうとLet’s Encryptを使うのは恥ずかしかったのですが、使わない理由はありません。
ということで、 https://nagata2000.jp/ をアップデートして最新のSSLにも対応しました。
| 固定リンク


コメント