OpenStreetmap のタイルサーバーの地図データを再セットアップしたので、ついでに https にも対応させました。
サーバーの https 化は何度かやってますが、作業記録としてメモっときます。あ、 SSL 証明書は毎度おなじみの Let's Encrypt を使います。
準備
元々、このタイルサーバーは公開にあたりポート番号を 80 から変更していました(こちらの記事参照)。また、それに合わせて ufw も設定していました。なので、 Let's Encrypt を使うにあたり、 80 と 443 でアクセスできるように修正しておきます。
まずは、 apache のポート番号を 80 に戻しておきます。
/etc/apache2/ports.conf
mor@map:/etc/apache2$ cat /etc/apache2/ports.conf # If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default.conf Listen 80 <IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet mor@map:/etc/apache2$
バーチャルホスト設定も併せて変更します。
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80> (略) </VirtualHost>
設定ができたら、apache2 を再起動しておきます。
mor@map:~$ sudo service apache2 restart
次は、 ufw の再設定を行います。『Apache for Public』 という名前で公開するポート番号を定義していたので、これを 80 と 443 に変更しておきます。
/etc/ufw/applications.d/apache2-utils.ufw.profile.for-public
[Apache for Public] title=Web Server description=Apache v2 is the next generation of the omnipresent Apache web server. ports=80,443/tcp
このルールを適用します。
mor@map:/etc/ufw/applications.d$ sudo ufw app update "Apache for Public" プロファイル 'Apache for Public' を規定するルールが更新されました ファイアウォールの再読込を飛ばします mor@map:/etc/ufw/applications.d$ sudo ufw reload ファイアウォールを再読込しました
あと、このサーバーへアクセスするため、ルータの設定を変更します。ルータの設定は、基本的にIPマスカレード設定をしますが、下記の記事で書いたように、
NVR510 の場合、不正アクセス検知機能を有効にしているときは、内部から外部へ出ていくパケットの静的フィルタルールを追記してあげる必要があります。
ここまでの設定ができれば、 http(80番ポート)でタイルサーバーに接続できることを確認しておきます。
certbot のインストール
ちょっと前まで、 Ubuntu で Let's Encrypt 使おうとすると、 ppa リポジトリを追加して、 apt で certbot をインストールして、という流れでしたが、今は snap を使ってインストールするそうです。
なので、やってみます。
certbot インストールしてないけど、一応削除
mor@map:~$ sudo apt remove certbot [sudo] mor のパスワード: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 パッケージ 'certbot' はインストールされていないため削除もされません アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 99 個。 mor@map:~$
certbot を snap でインストールします。
mor@map:~$ sudo snap install --classic certbot 2020-09-08T15:10:00+09:00 INFO Waiting for automatic snapd restart... certbot 1.7.0 from Certbot Project (certbot-eff✓) installed mor@map:~$
certbot の設定
あとはいつもの certbot の設定をします。今回は下記コマンドにより apache 側の設定も変更することにしました。 画面の指示に従って、必要事項を入力していけば簡単に設定できます。
mor@map:~$ sudo certbot --apache
(略)
こちらなどが参考になるかと思います。 Ubuntu18.04 で Certbot を使った SSL 証明書の発行と更新 | 株式会社TKS2
今回の設定では http --> https のリダイレクトを設定するようにしました。
あとは、 https でタイルサーバーにアクセスできること、 http でアクセスすると https にリダイレクトされることが確認できればOKです。
なお、 certbot をインストールすると renew のための設定も自動で追加されるようなので、これも操作不要です。心配なら、下記でテストだけしておけばよさそうです。
mor@map:~$ sudo certbot renew --dry-run
(略)
ちなみに、この方法だと Apache の設定ファイルの書き換えもやってくれるというので、今回初めて試したのですが、変更前のファイルを残してくれないんですね。なので個人的にはちょっともやもやしています。ということで certonly をつけて、設定ファイルの変更は自分でやるほうが好みかもしれません。また次の機会に試してみようと思います。