2020
09.05

SynologyのDockerでインストールしたWebアプリケーションにSSL(https)を通す方法

07.コンピューター・ソフトウェア

DockerのWebアプリケーション

Synology自体に有効なアプリケーションは沢山ある。簡単にWebサイトを構築できる「Web Station」。Googleドライブと同期を取り、お互いにバックアップを採取できる。また、ローカルにSynology NASがあれば、ファイルの出し入れがバックグラウンドでGoogleドライブに反映するなんてことが出来て便利だ。
Synology Driveを使えば、final cut proの様なiCloudでバックアップの取れない種類のアプリケーションのファイルも簡単に同期を取ってインターネット経由でバックアップができます。
他にも、Resillo Syncと言う、Torrent互換のツールを使っています。これは驚くべきスピードでファイルの送受信ができるものです。
前置きが長くなりましたが、Dockerです。こいつは、飛躍的にSynologyのアプリケーションを増やせます。今回、Dockerの詳細な話は飛ばしますが、この仕組みのおかげでSynology NASで使ってみたいアプリケーションを試して、問題なければ使うと言うTry&Goが実現できて嬉しいです。

SSLについて

SynologyのウェブアプリケーションでSSLを通すには、有名な「Let’s Encrypt」を使います。無償にてSSLを使える様にしてくれます。多くのVPSでもこちらを採用しているほど有名ですよね。そもそもSSLと言うのは、サーバー側とクライアント側との間の通信を暗号化した上で行うことです。

httpsについて

また、ウェブサイトの通信をSSLで行う場合、SSLサーバー証明書と言うものが必要になります。これは、信頼のおける第三者機関(グローバルサインのような認証局)にて、ウェブサイトの運営者が正しい運営者であるかどうかの審査を行い発行されます。この審査を通過し、SSL通信により立ち上げられたウェブサイトは「http」ではなく、「https」で始まるURLアドレスになっています。そして、正式に審査を通過して「サーバー証明書」を登録しているウェブサイトを参照したとき、最近のブラウザーでは、表示されるURLの前に「鍵マーク」が表示されます。通常、これらの手続きは有償です。

SynologyでのSSL

Synologyでは各種サービスをSSLでの通信が可能です。ただし、先に書いた様に「SSL」の審査にパスする必要があります。この手続きを簡単にしているのが「Let’s Encrypt」と言う仕組みです。なんと、Let’s Encryptでは、この手続きが無償で行われます。なので、多くのサイト、VPSで利用されているわけです。Synologyではこれに関わる手続きがクリック一発で行えます。
【コントロールパネル】-【セキュリティ】-【証明書】で行えます。

File x4JEKvLIy

これで、Synologyから導入するウェブサイトを使ったサービスはSSL接続「https」による安全な通信が行える様になります。

独自サービスのSSLについて

独自サービスと言っても、Synolgyのサードパーティーによるサービスなんですが、これについては、そのままではSSL通信の設定や恩恵を受けられません。Synologyに質問しても、自身での解決が必要とのことでした。

が〜ん!!

待てよ。自身で解決が必要と言うことは、やればできるってことではないかな。そこから、いろいろ調べて実行してみましたが、うまくいく場合とそうでない場合があり、面倒だなあと思っていました。

アプリケーションポータルと言う機能

あるサイトで、別のことのためにSynologyの「アプリケーションポータル」の機能を使っているシーンが書いてありました。

これだ!

と、思いました。そこにある「リバースプロキシ」の機能を使えばできる、と思いました。リバースプロキシについては以前から知っていました。ウェブサイトの仕組みを使ったサービスを立ち上げる場合、そのサービスごとに内部ポートを変えて立ち上げるのが通常です。ウェブサイトは、80番、443番のポート使って通信するのが普通ですが、新しいサービスを立ち上げる際、同じポートを使うと競合してしまいうまくサービスを利用できないため、別のポートで立ち上げ、それを通常の80番、443番と繋いでサービスを実現します。

そして、Dockerのサービス

やっと、Dockerになります。Dockerと言うのは、素晴らしいアプリケーションを簡単に導入できる仕組みです。例えば、Mattermostと言うSlackライクなアプリケーションを立ち上げるには、Mattermost自体の導入、データベースの導入、各種ライブラリの導入。そしてこれらをうまく繋ぐ設定が必要になります。また、Mattermostは8065番のポート使うので、「http://何とかかんとか:8065」と言うURLになります。
また、ポートが異なることから、Synologyで設定したSSLがそのままでは使えません。

アプケーションポータルのリバースプロキシを使う

ここでリバースプロキシの設定です。

File BfU5BqTmq

例にあげた、Mattermostの場合のサンプルです。ここでは、DockerにてMattermostの内部ポートを18065番に変更して立ち上げた場合のケーです。

説明:Mattermost
【ソース】
プロトコル:HTTPS
ホスト名:ここには自分のSynologyへの接続用URLになります
ポート:本来のMattermostのポート番号 8065
【送り先】
プロトコル:HTTP(Mattermost導入時はHTTPなので
ホスト名:localhost
ポート:Mattermost立ち上げ時に再設定したポート番号 18065

これで、Dockerで導入したアプリケーションにSSL通信の設定が簡単にできる様になりました。

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。