CloudflareでSSL化の手順(ブラウザ↔プロキシ↔オリジン)on Ubuntu

Web・情報技術

この度、このブログのDNS及び通信のSSL化にCloudflareを使うことにした。

サイトをCloudflareに登録すると、Cloudflare自体がブラウザ↔VPSの間に挟まるプロキシサーバーとして動作する。

このプロキシサーバーが、DNSとしての機能のほか、キャッシュを提供し高速なレスポンスを実現するCDN(コンテンツデリバリーネットワーク)、常時SSL化などのサービスを提供している。

Cloudflareの便利な機能を使って、無料かつ簡単、しかもメンテのいらない楽チンSSL化を実装する。環境はWebARENA IndigoにインストールしたUbuntu 20.04。

スポンサーリンク

ブラウザ↔Cloudflare間のSSL化

まずはブラウザ↔Cloudflare間のSSL化について。

とはいっても、Cloudflareにサインアップして自分のサイトを登録するだけで勝手にSSL化してくれる。すごい。

Cloudflareへのサイトの登録方法

Cloudflareにサインアップ後、「アカウント ホーム」の画面から、サイトを追加する。

自分のサイトのドメインを入力し、「サイトを追加」ボタンを押下。

次にプランの選択だが、タダ(無料、0円)のプランで全っ然事足りる。一番下に表示されているので、これを選んで続行。

次の場面では、DNSレコードをスキャンしてくれる。すなわちCloudflareに移転前、現在運用しているDNSで設定しているDNSレコードをそのまま持ってきて、CloudflareをDNSとする際の設定としてインポートしてくれる。

ただ、このスキャンですべてのレコードを取得してくれるわけではない。読み取ってもらえなかったものは、自力で追加のこと。他社のサービスでDNSチャレンジのために設定した一部のTXTレコードなどは読み取ってもらえなかった。ただし、不要なものはこの際切ってしまっても良いかとも思う。

↑の赤い破線で囲ってある「プロキシステータス」について、これが「プロキシ済み」となっていれば、CloudflareをDNSとして反映させた際にCloudflare自体がプロキシサーバになってくれる。

次の画面で設定する項目はない。サイトのドメインのレジストラ(お名前ドットコムとか、ムームードメインとか)の管理画面で行う設定である。

レジストラにログインし、DNSを変更する。Cloudflareのネームサーバをコピペして追加してやればよい。

そして完了ボタンを押すと、Cloudflareがプロキシサーバとして稼働する。

この時点でブラウザのURLバーのプレフィクスを「https://」をしてやると、既に鍵付きの通信、すなわちSSL通信がSSL化されていることと思う。ブラウザのアドレスバーの鍵アイコンから詳細を見ると、Cloudfareの証明書になっていることが分かる。

ただドメインをSSL通信登録しただけである。実に簡単だ。

デフォルトでSSL化されているが、これのON/OFFの切り替えはCloudflareの管理画面で行える。

まず、そもそもCloudflareにプロキシさせるかどうかについて。

Cloudflareの管理画面から、「DNS」ボタンを押下。DNS管理画面でAレコードに登録してあるものを編集。プロキシのON/OFFが切り替えられる。

プロキシさせている通信において、SSL化するかどうかについて。Cloudflare管理画面から「SSL/TLS」ボタンを謳歌する。「概要」タブから、「お客様のSSL/TLS暗号化モード」セクションの右側のラジオボタンを任意のものにすればいい。

以上、ブラウザ↔Cloudflare間のSSL化について解説した。

さて、元々SSL化してあるサイトをCloudflareに登録した場合、自動的にCloudflare↔オリジンサーバー(ブログのサイト、VPSなど)間もSSL化されていることになるが、そうではない場合、Cloudflare↔オリジンサーバー間は非SSLな通信となる。次章ではこの部分のSSL化について説明する。

Cloudflare↔VPS間のSSL化

Cloudfllare↔VPS間をSSL化する。

Cloudflareで証明書と秘密鍵を取得して、Webサーバで読み込めばよい。

証明書の発行

Cloudflareの管理画面でオリジン証明書と秘密鍵を発行する。

「SSL/TLS」ボタンから「オリジンサーバー」タブを開き、「証明書を作成」ボタンを押下。

「オリジン証明書のインストール」セクションにて、鍵を作成する。

デフォルトでワイルドカード認証になっている。証明書の有効期限は15年。最高やがな。

右下の作成ボタンを押下。

オリジン証明書、プライベートキーがテキストエリアに表示されるので、これをそれぞれコピーして、適当な名前(ex: origin.pem, private_key.pem など)で保存する。

プライベートキーはこの画面を閉じると取得できなくなるので、この際に必ずコピーしておく。閉じちゃった場合は再度作成のこと。

これを移転先のVPSにアップロードする。ターミナルから、

$ scp -P {ポート} -i {移転先VPS用の秘密鍵} priv_key.pem(対象のファイル) {ユーザ名}@{IPアドレス}:~/private_key.pem

などとして送る。

移転先のVPSにて、

$sudo mv origin.pem /etc/ssl/certs/
$sudo mv private_key.pem /etc/ssl/private/

などとして置いておく。

NGINXの設定

NGINXの設定ファイルを、例えば以下のように作成する。

#httpリクエストはhttpsにリダイレクトさせる
server {
    listen 80;
    server_name {ウェブサイトのドメイン};
    return 301 https://{ウェブサイトのドメイン}$request_uri;
}

#httpsのリクエストを処理
server {
    listen 443 ssl;

    #証明書の設定
    ssl_certificate /etc/ssl/certs/origin.pem; #オリジン証明書のパス
    ssl_certificate_key /etc/ssl/private/privatekey.pem; #プライベートキーのパス

    #以下略

}

nginx -t コマンドで設定ファイルの文法を確認し、okであればnginx -s reloadで設定をリロードする。

あとは、Ubuntuのファイアウォール、VPSのプロバイダのファイアウォールで443番ポートを受け付けるように設定変更をすれば完了。

以上でCloudflare↔オリジンサーバー間についてもSSL化された。

タイトルとURLをコピーしました