LoginSignup
0
0

More than 1 year has passed since last update.

【Wordpress】リバースプロキシを利用し、自宅のラズパイでWordpress環境を構築してみた④

Last updated at Posted at 2022-06-03

はじめに

 みなさん、こんにちは。某通信キャリアでネットワークエンジニアとして働いている「だいまる」です。
本日は、リバースプロキシとWordpressを搭載しているラズパイのSSL化について、説明していきたいと思います。
 その前に、前回までの記事についてリストとして載せておきますね。

(前回までの振り返り)
 1:Wordpressを構築した構成と経緯
 2:1ドメインで複数のサイトを立ち上げる方法
 3:独自ドメインの取得方法とAWSへの適用方法

SSL/TLS化とは?

 「そもそもSSL/TLS化って何するの?」「SSL/TLS化って何?」 と思われた方もいるかと思います。
SSL/TLS化というのは、一言でいうのであれば、「データの暗号化」です。
みなさんがネットを介して様々なサイトにアクセスする時にhttpなのかhttpsなのかで暗号化の有無が変わってきます。
どう判断するかというと、サイトのURL左側に鍵マークがある場合は「https」であり、暗号化されております

image.png

逆に鍵マークがない場合は、「http」であり、暗号化はされていません
image.png

 この違いがどの程度大きいのかというと、アマゾンなどのECサイトで決済のためにクレジットカード情報やセキュリティコードを入力した場合、情報がとられる可能性が天と地の差程生まれてきます。
具体的なイメージでいくと、手紙で例えるとわかりやすいです。

image.png

これが手紙ではなく、重要な情報であった場合、どうなるでしょう?
これがhttpとhttpsの違いになります。

SSL/TLSの仕組み(エンジニア・勉強したい方向け)

次に、SSL/TLSの仕組みについては、こちらの記事(後日投稿予定)を読んでいただけると幸いです。

証明書の取得方法

 ここからは、今回の構成で実際に取り組んだSSLの証明書取得方法について説明します。
今回利用したのは、「Let's Encrypt」です。
 この「Let's Encrypt」とは、世界のウェブサイトを全てHTTPS化することを目的として作られた機関で、今では世界の名だたる企業がスポンサーとなり運営されております。
 このサービスを利用した理由は、ただひとつ!、「無料」だからです。
前置きはこのぐらいにしておいて、ここからは、実際にやったことを書いていきます。

1:Certbotのインストール

 まずはじめに、Certbotというソフトウェアをインストールします。

・gitによるインストール:git clone https://github.com/certbot/certbot
・yumによるインストール:sudo yum install certbot-nginx

2:証明書の発行

 上記でCertbotをインストールしたら以下コマンドで証明書を発行します。

・証明書発行コマンド:sudo certbot --nginx

 上記コマンドで証明書発行を行い、nginx.confに以下の設定が入った後は、リバースプロキシにある設定を行います。

(自動で入る設定)
 listen 443 ssl default_server; # managed by Certbot
 ssl_certificate /etc/letsencrypt/live/***/fullchain.pem; # managed by Certbot
 ssl_certificate_key /etc/letsencrypt/live/****/privkey.pem; # managed by Certbot
 include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

server {
 if ($host = ****) {
   return 301 https://$host$request_uri;
  } # managed by Certbot


   listen  80;
   server_name ****;
   return 404; # managed by Certbot
}

 上記の設定だけでは、ユーザからEC2(Nginx)までのHTTPS化はできてますが、リバースプロキシとして利用しているNginxからラズパイまでの通信はHTTPとなり、矛盾が生じるため、アクセス不可やJavascriptやCSSの読込が不可となります。
 その解決のためには、以下の対応が必要となります。

3:リバースプロキシへの適用方法

 SSL/TLS証明書の取得後、アクセス不可やJavascript、CSSの読込が不可となった場合/etc/nginx/nginx.confに以下の設定が必要となります。

・Server配下に以下設定を追加
 add_header Content-Security-Policy upgrade-insecure-requests;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header Host $host;
 proxy_redirect off;
 proxy_max_temp_file_size 0;

 この設定をserver配下に追加すると無事にJavascript、CSSが読み込まれるようになります。
理由については、後日投稿予定の記事で説明させていただきます。

WordpressのSSL/TLSの設定方法

 最後に、WordpressのSSL/TLSの設定方法について説明します。
やることは、全部で3つです。

1:プラグインのインストール

image.png

プラグイン」のボタンをクリック

image.png
新規追加」をクリック

image.png
キーワード欄に「Velvet Blues Update URLs」と検索し、それをインストールします。

image.png
インストール後、メニューバーの「ツール」をクリックし、「Update URLs」をクリックします。

image.png
 上記の画像が出てきたら、「Old URL」に「http://」と入力し、「New URL」に「https://」と入力します。
そして、Step2のチェック欄にチェックをつけ、「Update URLs Now」をクリックします。

2:一般設定の変更

メニューバーの「一般設定」をクリックし、一般設定の下の我慢が出てきたら、「Wordpressアドレス」と「サイトアドレス」の2つの「http」を「https」に変更したら完了です。
image.png

まとめ

 ここまで環境構築を行い、サイト周りの対応は完了しました。
あとは、サーバの信頼性・可用性の向上、性能の向上、セキュリティの強化を実施する必要があります。
 仮にアクセス数が増えた場合、この環境では膨大なアクセス数を捌くことは難しくなるため、自宅にオンプレミスのサーバを購入し、環境を移すことも考えております。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0