脱サラのすすめ

ダムとバイクとSEの記録


【Ubuntu18.04】Let'sEncryptで簡単通信暗号化【LAMP構成】【certbot】【SSL/TLS】

f:id:shibatty:20210304132949j:plain

2021.2.27 

以前記載した無償e-LearnigツールMoodle(詳細はリンク参照)導入の延長で、HTTPサイトLet's Encypt*1 の無料SSL/TLSサーバ証明書を用いてHTTPS化させていく話です。

 

datsusara-susume.hatenablog.com

 

Let's Encyptのクライアントツール「certbot」をインストールしていくわけですが、執筆時現在、ストレートにインストールしようとすると、下図のようなサポート切れエラーが出ます。

f:id:shibatty:20210304131724j:plain

※「サポートが切れてるのでインストールできません。公式サイトで他のやり方を参照してください。」というニュアンスの内容

certbot公式サイトを覗いてみると、もう最新版は利用できいようです。

公式サイトに回避手法が載ってはいるのですが、これまたわかり辛い・・・

ということで、色々試して成功したパターンを紹介しようという趣旨です。

この記事はSSL/TLSサーバ証明書を発行できるようにする内容なので、Moolde関係なく参考になるかと思います。

(設定時間:30分)

 

 

 

 

目次

 

0.構築環境

・さくらVPNメモリ:1GB、CPU:2コア、SSD:100GB)

 ※有料契約

 ※ハードがどのような環境でも構築手順は大きく変わりません

 

LinuxOS:Ubuntu18.04

 ※最新は20.04ですが、何故かSSL化がうまくいかなかったので、

  個人的に実績がある18.04を選定しました

 

Apache:2.4

MySQL:5.7

PHP:7.2

 

Moodle:3.8

 ※当Verの必須環境は、Apache2以上、MySQL5.6以上、PHP7.1以上

 ※執筆時の最新Verは3.9ですが、リリース間もないということもあり

  安定性という意味でひとつ前の3.8を導入しました

 

 

 

 

1.snap 経由で certbot を導入

snap 経由で certbot を導入していきます。

コンソール画面を開き、コマンドを投入していきます。

 

①エディタツール「gedit」のインストール

sudo apt-get install gedit

 

②snap 経由で certbot をインストール

sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot

 

サーバ証明書発行対象のサイトドメインを登録

 ※途中E-mailを入力するフェーズがあり、入力必須

 ※選択肢は全てYes(y)を選択

sudo certbot certonly --apache -d サイトドメイン

 

④対象ドメインサーバ証明書を発行

sudo certbot renew --dry-run

うまく発行されると、下図のように「success」が表示されるはずです。

f:id:shibatty:20210303165231j:plain

ドメインを変更した際は、手順③と④を同じように実行することで、再度対象ドメインに対して証明書が発行されます。

続いて次手順で再度Apacheの設定ファイルの変更していきます。

 

 

2.Apache2 の設定ファイル修正

HTTPSでサイトが開くよう、Apache2の設定ファイルを修正してきます。

コンソール画面でコマンドを投入していきます。

 

① 管理者権限で gedit 起動

 ※通常ユーザだと対象ファイルが更新できないため

sudo gedit

 

②対象ファイル「default-ssl.conf」を gedit にドラッグ&ドロップ

f:id:shibatty:20210303170219j:plain

 

③対象ファイルの追記、修正

・VirtualHost

 default → サーバのグローバルIP

・ServerAdmin

 localhost → サーバのドメイン

f:id:shibatty:20210303170507j:plain

※図では、元の行を「#」でコメントアウトし、修正文を新たに記載しています

 

・SSLCertificateFile のロケーション変更

 /etc/letsencrypt/live/ドメイン名/cert.pem

・SSLCertificateKeyFile のロケーション変更

 /etc/letsencrypt/live/ドメイン名/privkey.pem

・SSLCertificateChainFile のロケーション変更

 /etc/letsencrypt/live/ドメイン名/chain.pem

f:id:shibatty:20210303170750j:plain

※図では、元の行を「#」でコメントアウトし、修正文を新たに記載しています

 

④「Ctrl」+「S」キーでファイルを保存 → ファイルを閉じる

 

 

 

 

3.Apache2 の設定変更

HTTPSでWEB画面が開くよう、Apache2の設定を変更していきます。

コンソール画面でコマンドを投入していきます。

 

①Apache2にSSLモジュールを追加

sudo a2ensite default-ssl

 

SSLモジュールの有効化

sudo a2enmod ssl

 

③Apache2再起動

sudo systemctl restart apache2

 

https://サイト名 で起動確認ができればOK

 ※先にHTTPでページを作成、またはMoodleをインストールしていると、画面が崩れる場合があります。(次手順で、Moodleの設定変更手順のみ載せておきます。)

 

 

 

 

4.Moodleの設定変更

アドレスがHTTPからHTTPSに変わったため、Moodleの設定ファイルを修正していきます。

Moodleのインストールを行った者のみ参照ください。

コンソール画面でコマンドを投入していきます。

 

① 管理者権限で gedit 起動

 ※通常ユーザだと対象ファイルが更新できないため

sudo gedit

 

Moodleフォルダ直下にある「config.php」ファイルをドラッグ&ドロップ

 

③下図赤枠の「wwwroot」の値を変更

 ※今回HTTPS化したため、アドレスとhttps://から始まる値に変更している

 ※ドメイン変更時も同様にこのアドレスを変更すればOK 

f:id:shibatty:20210303172433j:plain

 

https://サイト名 で起動確認ができればOK

 

 

5.最後に

certbotで証明書が自動更新されそうな動きをしていますが、まだ更新時期が来ていないため検証できていません・・・。

自動更新がダメなら再度発行すれば問題ないと思いますが、また更新時期がきたら状況を追記しようと思います。

 

ドメインは、下記バナーの「お名前ドットコム」で契約するか、さくらVPS利用であればそのままさくらインターネットよりドメインを契約するのが手っ取り早いです。

名前ドットコムが安いのでオススメです。

 

以上。 

(不明点あればコメント頂ければ、可能な限りお答えします。)

 

 

 

 

*1:フリーで自動化されたオープンな認証局