Let's EncryptでSSL化

これでValhallaが使えるようになりますが、接続を安全にするためにはSSLを有効にした方が良いでしょう。ここでは、独自のドメインを使ってSSLを有効にするために、let’s encryptを設定します。

ここでは、Valhalla APIにvalhalla.water-gis.comドメインを使用しています。

DNSサーバーにAレコードを作成

下の画像は、Google Domainでの例です

image

Nginxとcertbotのセットアップ

$ sudo apt install certbot python3-certbot-nginx
$ sudo mkdir -p /var/www/valhalla.water-gis.com/html
$ sudo chown -R $USER:$USER /var/www/valhalla.water-gis.com/html
$ sudo chmod -R 755 /var/www/valhalla.water-gis.com
$ vi /var/www/valhalla.water-gis.com/html/index.html

index.htmlは以下のようになるでしょう。

<html>
    <head>
        <title>Welcome to valhalla.water-gis.com!</title>
    </head>
    <body>
        <h1>Success!  The valhalla.water-gis.com server block is working!</h1>
    </body>
</html>

index.htmlが表示されるか確認します。

$ curl http://valhalla.water-gis.com

valhalla APIへのリバースプロキシ

$ sudo vi /etc/nginx/sites-available/valhalla.water-gis.com

valhalla.water-gis.comファイルは以下のようになるでしょう。

server {
        listen 80;
        listen [::]:80;

        root /var/www/valhalla.water-gis.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name valhalla.water-gis.com;
        
        location / {
                proxy_pass http://localhost:8002;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_redirect off;
        }
}
# シンボリックリンクの作成
$ sudo ln -s /etc/nginx/sites-available/valhalla.water-gis.com /etc/nginx/sites-enabled/
# 必要であれば nginx.conf を編集
$ sudo vi /etc/nginx/nginx.conf

# Nginx再起動
$ sudo nginx -t
$ sudo systemctl restart nginx

この手順で、SSLなしでも動作するようになります。次のステップでは、let’s encryptの設定を行います。

SSLの有効化

$ sudo certbot --nginx -d valhalla.water-gis.com
  • ログ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://valhalla.water-gis.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=valhalla.water-gis.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/valhalla.water-gis.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/valhalla.water-gis.com/privkey.pem
   Your cert will expire on 2021-07-04. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

let’s encryptから上記のURL(https://www.ssllabs.com/ssltest/analyze.html?d=valhalla.water-gis.com)にアクセスすると、以下のような結果になります。

image

ここで、nginxを再起動してSSLを有効にします。

sudo nginx -t
sudo systemctl restart nginx

ブラウザでhttps://valhalla.water-gis.comを開きます。valhalla APIからのレスポンスが表示されました。これで、valhallaのSSL化ができました。

参考にしたウェブサイト