【RockyLinux 9.5 で WordPress 環境構築】DNS設定とCertbotによるSSL証明書の取得と設定

RockyLinux9.5でWordPress環境構築した際のメモです。
今回はDNS設定とCertbotによるSSL証明書の取得と設定を行います。

## DNS設定

新規サイトであれば、ドメインを取得後にDNSレコードにサーバーのIPアドレスを設定してください。既存サイトからの移行の場合、既存のDNSレコードのTTLを60など短く設定しておくことで切替がスムーズにいきます。

## hostsファイル設定

クライアント端末のhostファイルを編集することで、DNSを設定していないサーバーにドメインでアクセスすることができます。

hostsファイルの設定を行う前に、WordPressの「設定 > 一般」 の「WordPress アドレス (URL)」と「サイトアドレス (URL)」をドメイン版のURLに変更します。設定変更時にエラーとなりますが、hostsファイル変更後に正しくアクセスできます。

MacOSなどUnix系の端末の場合は以下のファイルを編集します。
```
sudo vim /etc/hosts
```

Windowsの場合は以下のファイルを管理者権限のメモ帳で編集します。
```
C:\Windows\System32\drivers\etc\hosts
```

以下のように「IPアドレス ドメイン」を追記します。
```shell:hosts
xxx.xxx.xxx.xxx yoursite.com
```

指定したドメイン名で新しいサイトにアクセスできます。ドメインでアクセスしたことによりWordPressの動作に問題がある場合は、この設定をコメントアウトしてIPアドレスでアクセスしなおして原因を探ってください。

## Certbotのインストール

Let's EncryptのSSL証明書を取得するため、Certbotのインストールを行います。

Snapdをパッケージをインストールする

```
sudo dnf install snapd
sudo dnf install epel-release snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
```

Snapdを利用してcertbotをインストールする

```
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --version
```

## Certbot を使用して DNS-01 チャレンジを指定

SSL証明書を取得します。以下のコマンドを実行すると、CertbotがTXTレコードの値を指示するので、それをDNSに設定します。TXTレコードのTTLは最低値60に設定しておきます。

DNSの設定反映を待ってからEnterキーを押します。
```
sudo certbot certonly --manual --preferred-challenges dns -d yoursite.com
```

SSL証明書が作成されたか確認。

```
sudo ls -la /etc/letsencrypt/live/yoursite.com/fullchain.pem
sudo ls -la /etc/letsencrypt/live/yoursite.com/privkey.pem
```
## ssl.confの設定

オリジナルをバックアップ
```
sudo cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.org
```

vim で ssl.conf を編集
```
sudo vim /etc/httpd/conf.d/ssl.conf
```

```conf:/etc/httpd/conf.d/ssl.conf
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
↓
SSLCertificateFile /etc/letsencrypt/live/yoursite.com/fullchain.pem

#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
↓
SSLCertificateKeyFile /etc/letsencrypt/live/yoursite.com/privkey.pem
```

設定に問題がないか確認
```
sudo httpd -t 
```

httpdの再起動
```
sudo systemctl restart httpd
```

```https://```でWordPressサイトにアクセスできるか確認します。
問題がなければ、これにて構築は一段落です。

WordPressのテーマ設定や一般設定などが一通り完了し公開できる状態となったら次へ。

## DNSの切り替えとSSL証明書の再設定

DNSの切り替えを行います。

DNSの切り替え完了後、SSL証明書の再取得と自動更新設定を行います。
DNS-01チャレンジで取得した証明書は自動更新がエラーとなるためです。

DNSの切り替えが完了後、webrootオプションで証明書を再取得します。

```
sudo certbot certonly --webroot -w /var/www/html/yoursite.com -m you@yoursite.com -d yoursite.com -n --agree-tos  --force-renewal
```

httpdを再起動。
```
sudo systemctl restart httpd
sudo certbot certificates
```

Snap 版の Certbot は自動的に certbot renew を実行するようになっています。
以下のコマンドで Snap の自動更新が有効かどうかを確認してください。
```
systemctl list-timers --all | grep snap.certbot.renew
```

以下のコマンドで証明書を手動で更新できます。
```
sudo certbot renew --dry-run
```

もし有効になっていない場合、以下のコマンドで手動実行を設定します。
```
sudo snap set certbot trust-plugin-with-root=ok
sudo snap get certbot
```

以上、お疲れ様でした！

## RockyLinux9.5でWordPress環境構築
1. [さくらのVPS設定](https://qiita.com/tfz/items/58a8a185573ff7080599)
1. [Apacheのインストールと設定](https://qiita.com/tfz/items/f4d74b8a5d93068fe675)
1. [PHPのインストールと設定](https://qiita.com/tfz/items/9e962e83cf84f4e20c14)
1. [mariaDBのインストールと設定](https://qiita.com/tfz/items/ffb4eaaba2eea68211fe)
1. [WordPressのインストールと設定](https://qiita.com/tfz/items/95b355127e3f034b78bb)
1. DNS設定とCertbotによるSSL証明書の取得と設定