個人情報やパスワード、クレジットカードなどの機密情報を扱わないようなページだとしても、今や標準ともいえるhttpsでアクセスできるようにしたいですよね?
少なくとも自分においては、情シスに転職する前の就活中に、企業のホームページがhttps対応していなかったために応募をやめたことがあるので、この対応は必須だと思っています。
というわけで、Apacheをhttps(SSL)に対応させるべく、Certbotを導入します。
Cerbotとは?
Certbot is a free, open source software tool for automatically using Let’s Encrypt certificates on manually-administrated websites to enable HTTPS.
Certbot は、手動で管理されている Web サイトで Let’s Encrypt 証明書を自動的に使用して HTTPS を有効にする、無料のオープンソース ソフトウェア ツールです。
https://certbot.eff.org/pages/about
まさに自前でサーバー運用する人のためのツール!
Certbotをインストール
インストールする環境はUbuntu Server22.04.3LTSで、公式の手順はUbuntuのバージョンが20となっていますが、とりあえず公式の手順でやってみます。
準備
Certbotを使用するには、以下が必要。
- SSHが使えること
- 管理者権限(sudo)
- Apacheが80番ポートで起動中
SSHでログイン
HTTP Web サイトを実行しているサーバーに SSH 接続します。
WindowsのコマンドプロンプトでSSH接続する場合は以下のコマンドを入力します。
ssh <OSユーザー名>@<接続先>
接続するか確認するメッセージが表示された場合は、yesを入力してEnterを押せばOK。
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
好みの問題で自分はTeraTerm使うんですけどね。
snapdをインストール
snapdというものが必要な様子。公式は次のリンクを参照。
ドキュメントを見る限り、今回使用するUbuntuには既にインストール済みのようです。
Snap is pre-installed and ready to go on all recent releases of Ubuntu.
This means, if you’re running Ubuntu 16.04 LTS (Xenial Xerus) or later, including Ubuntu 22.04 LTS (Jammy Jellyfish) and Ubuntu 23.04 (Lunar Lobster), you don’t need to do anything.
Snap はプリインストールされており、Ubuntu の最近のすべてのリリースですぐに使用できます。
つまり、Ubuntu 16.04 LTS (Xenial Xerus) 以降 (Ubuntu 22.04 LTS (Jammy Jellyfish) および Ubuntu 23.04 (Lunar Lobster) を含む) を実行している場合は、何もする必要はありません。
https://snapcraft.io/docs/installing-snap-on-ubuntu
念のため、実行中のUbuntuのバージョンを確認します。
lsb_release -a
ubuntu@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
もしインストールされていなければ、以下のコマンドでsnapdをインストールします。
sudo apt update
sudo apt install snapd
デフォルトのCerbotを削除
you should remove them before installing the Certbot snap to ensure that when you run the command certbot the snap is used rather than the installation from your OS package manager
コマンド certbot を実行するときに、OS パッケージ マネージャーからのインストールではなくスナップが使用されるようにするために、Certbot スナップをインストールする前にそれらを削除する必要があります。
snapdからCertbotを使用するため、インストール済みのCertbotを削除します。
入ってなくても問題はないので、とりあえず削除するコマンドを実行してみます。
sudo apt-get remove certbot
Package 'certbot' is not installed, so not removed
インストールされていなかったので、削除もされませんでした。
Certbotをインストール
ここまできてようやくインストールします。
sudo snap install --classic certbot
certbot 2.8.0 from Certbot Project (certbot-eff✓) installed
シンボリックリンクを作成して、certbot コマンドを実行できることを確認します。
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbotの設定
設定はコマンド1つで以下の作業を全て自動でやってくれます。素晴らしい!
- 証明書の取得
- apacheの設定ファイルの構成
- httpアクセスの有効化
sudo certbot --apache
ubuntu@ubuntu:~$ sudo certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): <自分のメールアドレス>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
404 Page not found - Let's EncryptLet's Encrypt is a free, automated, and open certificate authority brought to you by the nonprofit Internet Security Research Group (ISRG). Read all about our n... You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
規約に同意しないと多分進まないのでYを入力。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
いろんなメールは必要ないのでNを入力。
Account registered.
Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): private.sysmemo.com
証明書に記載するドメインを入力。
Requesting a certificate for private.sysmemo.com
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/private.sysmemo.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/private.sysmemo.com/privkey.pem
This certificate expires on 2024-04-18.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for private.sysmemo.com to /etc/apache2/sites-available/000-default-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://private.sysmemo.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
自動更新の確認
ログを見る限り、証明書を発行してくれるLet’s Encryptから発行される証明書の有効期間は3ヶ月のようですが、Certbotは自動的に有効期限を更新する機能もあります。
自動更新ができるかどうかは、以下のコマンドで確認できます。
sudo certbot renew --dry-run
httpsでのアクセスを確認
対応できたか確認するために、ドメインでアクセスしてみます。
コメント