前回まででhttpとグローバルIPアドレスでWordPressにアクセスできるところまではできました。

しかし、ふつうWebサイトにアクセスする際はドメイン名でアクセスします。そこで今回はドメイン名とIPアドレスの紐付けをしていきます。

また最近はWebサイトへのアクセスはhttpではなく、httpsを使います。これはWebサイトのアクセスをSSLで暗号化しています。もし攻撃者がパケットをキャプチャしても中身は暗号化されており、セキュアです。よってhttpsでアクセスできるように設定をしていきます。

DNSレコード設定を行う

これはドメインとグローバルIPアドレスを紐付ける設定です。

Aレコードを作成します。

設定後、手元のPCで名前解決ができるか確認します。

早ければ数分で名前解決できるようになります。一般的には最大24時間と言われていますが、多くは数時間以内には名前解決できるようになります。

# nslookup 12sec.work      
Server:		192.168.254.254
Address:	192.168.254.254#53

Non-authoritative answer:
Name:	12sec.work
Address: 35.77.161.56

ドメイン名でアクセス切るようになったら、ブラウザからwordpressの管理画面にログインします。[設定] からURLをドメインへ変更する

保存ボタンを押した後に404になることがありますが大丈夫です。

WordPress管理画面でURLを変更したあとはWebサーバ(nginx)の設定も変更します。

nginxの設定を変更

$ sudo vi /etc/nginx/sites-available/wordpress
server {
	server_name 12sec.work; ここをドメイン名に変更する
}

再度、ブラウザでwordpress管理画面にアクセスしてログインできることを確認します

HTTPSでアクセスできるようにする

SSL証明書を手作業で設定したり、管理するのは面倒です。そこでcertbotというツールを使って、管理を簡単にしていきます。

certbotをインストールし、設定を行い、HTTPSでアクセスできるようにする

$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
$ sudo certbot --nginx
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
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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:

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: 12sec.work
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

Deploying certificate
Successfully deployed certificate for 12sec.work to /etc/nginx/sites-enabled/wordpress
Congratulations! You have successfully enabled HTTPS on https://12sec.work

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SSL証明書の確認など

$ sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: 12sec.work
    Serial Number: 4022d891e43fce89318b663123c0eefb873
    Key Type: ECDSA
    Domains: 12sec.work
    Expiry Date: 2023-08-08 08:02:07+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/12sec.work/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/12sec.work/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SSL証明書更新サービスの確認

$ sudo systemctl status snap.certbot.renew.service
○ snap.certbot.renew.service - Service for snap application certbot.renew
     Loaded: loaded (/etc/systemd/system/snap.certbot.renew.service; static)
     Active: inactive (dead)
TriggeredBy: ● snap.certbot.renew.timer

$ sudo certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/12sec.work.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for 12sec.work

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded: 
  /etc/letsencrypt/live/12sec.work/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

ブラウザでアクセスして確認します。

https://<ドメイン名>/

HTTPSとドメインでアクセスできれば今回は終了です。