[Raspberry pi4] NginxのインストールとLet’s EncryptからSSLサーバー証明書を取得する

Linux

概要

ラズパイ4にUbuntu 20.10をインストールしたので、現行の自宅サーバで動いているメールサーバとWordpressをラズパイへ移行しました。その備忘録です。

試した環境

Raspberry Pi 4 Ubuntu 20.10 (arm64)

$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)

$ certbot –version
certbot 1.11.0

事前設定・準備

Ubuntuのインストール、PPPoEの設定とドメインの設定を事前に済ませておきます。以前にPi3でやったことと同じなので、詳細は割愛。

Ubuntu 19.10 でPPPOE接続をしてポート開放を行う。
お名前.comで取得した独自ドメインのダイナミックDNS設定をUbuntuから定期的に実行する

[Raspberry pi4] Ubuntu 20.10 のヘッドレスインストール。 キーボード、ディスプレイなしでインストールする方法

ラズパイはUbuntuのインストールを済ませた状態から、eth0 に固定IPの設定をして、HGWに有線LANで接続している感じです。

下記のように、/etc/netplan/50-cloud-init.yaml で 固定IPを設定しています。192.168.1.1はHGWのアドレスです。

$ cat /etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        eth0:
            dhcp4: no
            dhcp6: no
            addresses:
            - 192.168.1.40/24
            gateway4: 192.168.1.1
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
            match:
                driver: bcmgenet smsc95xx lan78xx
            optional: true
            set-name: eth0
    version: 2

※ラズパイからPPPoE接続をするので、現行の自宅サーバでのPPPoEを一旦切断して作業しています。移行が終わるまでは切り替えられないので、ラズパイでの作業が終わったら現行の自宅サーバでのPPPoE接続に戻しています。ちょっと面倒ですが移行が終わるまでは我慢です。

現行の自宅サーバのPPPoEは切断しておく。

# PPPoEを切断する
$ sudo poff

ラズパイから PPPoE で接続。接続後、ダイナミックDNSへ登録。

# PPPoEで接続
$ sudo pon dsl-provider

# デフォルトGWがHGWになっているので一旦消す
$ sudo route del default gw 192.168.1.1

# お名前.com のDNS情報のアップデート
# 完全に移行できる状態になるまで Cron等での自動実行はさせないでおく。
$ /usr/local/bin/onamae.com_dns_update.py

実行後は、新しいアドレスで名前解決できるまですこし待ちましょう。数分で反映されるはずです。

NginxとCertbotのインストール

Nginxを入れます。

Nginxのインストール
$ sudo apt install nginx
・・・(省略)

# ポート80と443を開放する
$ sudo ufw allow http
$ sudo ufw allow https

# UFWはこんな状態
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     LIMIT       Anywhere
443/tcp                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
22/tcp (v6)                LIMIT       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)

Let’s Encryptの証明書を取得・更新してくれるCertbotを入れます。
こちらも公式サイトの手順通りにすすめるだけです。
https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx

$ sudo snap install core; sudo snap refresh core
core 16-2.48.2 from Canonical✓ installed
snap "core" has no updates available

$ sudo snap install --classic certbot
certbot 1.11.0 from Certbot Project (certbot-eff✓) installed

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

証明証を取得するコマンドを実行する前に、DNSに反映されているかどうか、NginxのWelcome画面(私の場合は、http://nosubject.io)が表示されるかをみておきます。この状態になっていないと、証明書は取得できないと思います。

Let’s Encrypt SSL証明書の取得

ドメイン名でサイトへの接続が確認できたら、Let’s Encryptの証明書を取得します。

# 証明書の取得
$ sudo certbot certonly --nginx
・・・(省略)

途中でメールアドレスとドメイン名を聞かれるので、正確に入力します。
実行が終わると証明書の取得と Nginx の設定も更新されます。

証明書は /etc/letsencrypt/live の下に取得されます。
/etc/nginx/sites-available/default を見ると設定が追加されているのがわかります。

 # SSLの設定や http → https への転送設定などが自動で追加されている
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/nosubject.io/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/nosubject.io/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

証明書の確認

もう一度、ブラウザから自宅ドメインにhttp接続すると、 自動的にhttpsに転送されるようになっているのがわかります。(⚠http://nosubject.io は 🔒https://nosubject.io へ)

テストサイトからも確認してみます。下記のサイトにアクセスして、hostnameのところに自宅サバのドメイン名を入力します。

SSL Server Test

ドメイン名を入力して、Submit を押すとチェックが走ります。
レートが A 以上ならば OK。それ以下 B~F だと何かしら設定に問題があるそうです。

Let’s EncryptだとおそらくA判定がでると思います。

以上で、NginxとLet’s Encryptの設定は終わりです。

後処理

まだ移行が終わっていないので、PPPoE接続は切っておく。

# PPPoEを切断する
$ sudo poff
# デフォルトGWを戻す
$ sudo route add default gw 192.168.1.1

ずっとPPPoE接続をしたままにできるようになったら、/etc/netplan/50-cloud-init.yaml から下記の行を削除(コメントアウト)しましょう。再起動後、毎回 route コマンドを打つのは大変なので。

# gateway4: 192.168.1.1

まとめ

次は、ここでインストールした Nginx と証明書を使って、Wordpress と メールサーバ を立てていきます。

わし
わし

WordPress と メールサーバ の構築には docker を使ってみたいと思います。

Amazon.co.jp: ゲームウォッチ: ゲーム
ゲーム の優れたセレクションでオンラインショッピング。

コメント