WebARENAでUbuntuサーバを立てる(1)

実験用にWebARENAでUbuntuサーバを立ててみます。
まずは、サーバのインスタンスを生成して、nginx + Let’s Encypt をインストールするところまでです。以下では、ホスト名を example.com と仮定します(置換しています)。

インスタンスの作成

インスタンスの作成は
https://help.arena.ne.jp/hc/ja/articles/360049806534/
に沿って行います。OSインストールにはそこそこ時間がかかります。作成したら起動します。

SSH秘密鍵のインポート

秘密鍵ファイルを .ssh の下にコピーして、

$ chmod 600 (鍵ファイル)

としておきます。その状態で、

$ ssh ubuntu@(IPアドレス) -i ~/.ssh/(鍵ファイル名)

としてリモートログインします。

・・・と、その前に、鍵ファイルにパスフレーズを設定します。

$ ssh-keygen -f ~/.ssh/(鍵ファイル名) -p

でパスフレーズを設定しておきます。

root権限に昇格してアップデートをかけます。その後、自動アップデートを有効にします。

ubuntu@i-xxxxxxxx:~$ sudo su -
root@i-xxxxxxxx:~# apt-get update
root@i-xxxxxxxx:~# apt-get upgrade
root@i-xxxxxxxx:~# dpkg-reconfigure -p low unattended-upgrades
root@i-xxxxxxxx:~# cat /etc/apt/apt.conf.d/20auto-upgrades 
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

ただ、自動アップデートは始めから有効になっているように思います。

お名前.com 側でネームサーバの設定

以下の手順でお名前.com側でネームサーバの設定を行う。

1.管理画面にログイン
2.ドメイン機能一覧を表示させる
3.ネームサーバー設定の中の「ネームサーバーの変更」をクリック
4.設定するドメインを選択する
5.お名前.comのネームサーバを使うを選択
6.ネームサーバーの設定の中の「DNS設定/転送設定」をクリック
7.対象のドメインを選択して「次へ」
8.「DNSレコード設定を利用する」の右の「設定する」をクリック
9.設定を入力する

ホスト名は空欄、TYPEはAのまま、VALUEに設定するIPアドレスを記入して「追加」をクリック
10.下の方の「DNSレコード設定用ネームサーバー変更確認」に必要に応じてチェックを入れて(基本入れる)、確認画面に進むをクリック
11.あとは流れに従う
12.しばらくすると、ホスト名で ping が返ってくるようになる。

ファイアウォールの設定

これはWebArenaで用意されているファイアウォールのこと。
設定すると、ICMPも通らなくなるため、ファイアウォールの設定はしない。(が、落ち着いたら設定したほうがいいかもしれない)

nginxのインストール

以下の手順で nginx をインストールします。

root@i-xxxxxxxx:~# apt-get install nginx

インストールすると、Webブラウザでテスト画面が表示できるようになる。

certbotのインストール

ここからは Let’s Encrypt のインストールです。参考にしたのはこちら

root@i-xxxxxxxx:~# add-apt-repository ppa:certbot/certbot
root@i-xxxxxxxx:~# apt-get update
root@i-xxxxxxxx:~# apt-get install python-certbot-nginx

nginx の config 作成

/etc/nginx/sites-available/default を編集してホスト名を記載します。

# Default server configuration
#
server {
   :
  server_name example.com;
   :
}

編集したら

root@i-xxxxxxxx:/etc/nginx/sites-available# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

で設定ファイルをチェックしてから、nginx を再起動します。

root@i-xxxxxxxx:/etc/nginx/sites-available# service nginx restart

ファイアウォールの設定

こっちはUbuntuというかLinuxカーネルで持っているファイアウォール(ufw)のこと。初期設定ではファイアウォールは無効になっているので、必要なポートの穴あけをしてから有効化します。

root@i-xxxxxxxx:/etc/nginx/sites-available# ufw status
Status: inactive
root@i-xxxxxxxx:/etc/nginx/sites-available# ufw allow 22
root@i-xxxxxxxx:/etc/nginx/sites-available# ufw allow 80
root@i-xxxxxxxx:/etc/nginx/sites-available# ufw allow 443
root@i-xxxxxxxx:/etc/nginx/sites-available# ufw enable
root@i-xxxxxxxx:/etc/nginx/sites-available# ufw status
Status: active

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

root@i-xxxxxxxx:/etc/nginx/sites-available#

証明書の取得

ドメイン認証を使用して証明書を取得します。

root@i-xxxxxxxx# certbot --nginx -d example.com

質問でメールアドレス、メールアドレスをEFFと共有するか、HTTPをHTTPSにリダイレクトするかなどを聞いてくるので、適当に答えます。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://example.com

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

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-10-31. 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"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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

と出力されれば成功。この時点で、HTTPSにリダイレクトされるようになっています。

証明書の自動更新の設定

証明書の自動更新の設定を行います。

root@i-xxxxxxxx:/etc/nginx/sites-available# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for example.com
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/example.com/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/example.com/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates above have not been saved.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
root@i-xxxxxxxx:/etc/nginx/sites-available#

Let’s Encrypt の導入も随分と簡単になったものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)