メニュー ホーム

Ubuntuサーバー20.04にLet’s encryptを使ってhttps接続を実現する

二度やったんでだいたいの流れはわかりました。表題の通りなのですが、順番にやれば何とかなります。手順は多いですが、難しくはないのでやってみてください。需要があるかどうかは知りませんけどね。

前提

Ubuntuサーバー20.04を使います。すでにWordPressなどをApache2を利用して表示できるようになっている。そこから始めます。Apacheのインストールなどは他にもたくさん書かれている情報があるので、そちらを参照してもらうとして省略させていただきます。

Apacheサーバーのホームディレクトリは、/var/www/htmlが標準ですね。ここにWordPressなどを展開しても良いのですが、/var/www/your_domainというフォルダを新たに作ってそこにWordPressを展開しました。WordPressのインストールも省略させていただきます。

さて順番に始めますね。

Apache仮想ホストの設定

あとでcertbotというスクリプトをインストールして利用します。certbotが問題なく動くためにApache仮想ホストを設定します。設定ファイルを/etc/apache2/sites-available/your_domain.confという名前で作ります。いうまでもありませんが、your_domainの部分は各自のドメイン名を使います。私はkaizawa.jpというドメイン名を使いましたので、/etc/apache2/sites-available/kaizawa.jp.confというファイルを作りました。このファイルの中身は次の通りです。

<VirtualHost *:80>
    ServerAdmin ≪メールアドレス≫
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

作っただけではApacheサーバーは認識してくれないので、Apacheサーバーに認識させます。

$ sudo a2ensite your_domain.conf

このコマンドで、Apacheサーバーは仮想ホストを認識します。更に、デフォルトでは/etc/apache2/sites-available/000-default.confというファイルがあって/var/www/htmlをアクティブにしています。これを無効にしてやります。

$ sudo a2dissite 000-default.conf

これで良いですね。your_domainが有効になりました。念のためシンタックスチェックをかけます。

$ sudo apache2ctl configtest

エラーが出なければOKです。Apacheを再起動させましょう。

$ sudo systemctl restart apache2

certbotのインストール

さて自動的にセキュア接続の処理をしてくれるcertbotですが、標準ではインストールされていないので、インストールします。aptでインストールできますので簡単です。certbotと使用するライブラリーをインストールします。

$ sudo apt install -y certbot python3-certbot-apache

ファイアウォールの設定

おそらく80番のポートは空いていて442番(https)は閉じているはずですね。下記のコマンドを実行します。二行目は重複する設定を削除しているものです。

$ sudo ufw allow 'Apache Full'
$ sudo ufw delete allow 'Apache'

certbotの実行

$ sudo certbot --apache

SSL証明書を入手する必要があります。基本certbotがやってくれるので、こちらは質問に答えていくだけでOKです。Apacheではなく、Nginxを使っている場合は、ここで引数が変わるはずです。詳しく調べていないのですが、Welcome to the Certbot documentation! — Certbot 1.22.0 documentationに引数の事も書いてあったと思います。参照してみてください。英語ですが…

さて、上記コマンドを入力するといくつか質問が出てきます。実はその部分記録を取っていなかったので、ここには転記できません。your_domainを答える部分。そして各種質問事項。5〜6問あったはずです。英文ですが平易な文章なのでゆっくり読んで答えてください。最後にCongratulations! というメッセージとともに、あなたのサイトはSSL接続できるようになったよ。と教えてくれます。ひとまずこれでOKですね。

証明の期限と自動通知の確認

Let’s encryptは90日で期限切れとなります。期限が切れる度にスクリプトを実行しても良いのですが、人間忘れますからね、気がついたらセキュア接続できなくなっていたっていうのは悲しいですね。certbotはその辺もちゃんと考えてあります。一日に二度自動的にサーバーに問合せを出してくれるようになっているんですね。それを確認してみます。

$ sudo systemctl status certbot.timer

● certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; disabled; vendor preset: enabled)
     Active: active (waiting) since Thu 2021-12-09 20:25:30 JST; 1 day 1h ago
    Trigger: Sat 2021-12-11 01:52:05 JST; 4h 4min left
   Triggers: ● certbot.service

12月 09 20:25:30 ubuntu2 systemd[1]: Started Run certbot twice daily.

一行目を実行してみたら、私の環境ではその下の部分が表示されました。アクティブになってますね。次の通知が12/11の01:52に行われるようです。


以上簡単でしたがセキュア接続までの説明でした。参考になれば幸いです。

投稿者プロフィール

會澤 賢一
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

カテゴリー:blog Linux

タグ:

會澤 賢一

新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

お気軽にコメントを残していってください