🚁

Fedora40 で HTTPS のウェブサーバを動かす

2024/10/13に公開

お家の検証サーバ用の備忘録です。基本 root です。

前提

続きです。

https://zenn.dev/asterisk9101/articles/fedora40server-1

ファイアウォールの許可

httphttps のサービスを許可します。

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

nginx のインストール

起動して動作確認をします。http で応答があればOK。

dnf -y install nginx
systemctl enable --now nginx

curl http://localhost 2>&1 | grep '<title>'
# => <title>Test Page for the HTTP Server on Fedora</title>

certbot を使って証明書を入手

予めドメインを取得しておき、自宅のグローバル IP を設定しておきます。

read -p 'DOMAIN?> ' DOMAIN

DNSに登録したサーバ名を入力します。

read -p 'SERVER_NAME?>' SERVER_NAME

また、証明書が期限切れになりそうなときに、Let's Encrypt から通知を受けるメールアドレスを設定します。

read -p 'EMAIL?>' EMAIL

certbot で証明書を取得します。

dnf -y install certbot python3-certbot-nginx
certbot certonly --nginx -d $DOMAIN -m $EMAIL --agree-tos -n

nginx の TLS を有効化

nginx の設定ディレクトリに、certbot で入手した証明書を参照するように設定を入れます。

cat << EOF > /etc/nginx/default.d/tls.conf
    ssl_certificate "/etc/letsencrypt/live/$DOMAIN/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/$DOMAIN/privkey.pem";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers PROFILE=SYSTEM;
    ssl_prefer_server_ciphers on;
EOF

nginx.conf の TLS の設定のコメントを外します。

FQDN="$SERVER_NAME.$DOMAIN"
RANGE1='Settings for a TLS enabled server'
RANGE2='^}'
sed -i.bak -r \
    -e "/$RANGE1/,/$RANGE2/s@^#@@" \
    -e "/.*ssl_.*/d" \
    -e "/$RANGE1/d" \
    /etc/nginx/nginx.conf

nginx.conf の構文をチェックして問題無ければ、nginx を再起動します。https で応答することを確認します。

nginx -t
# => nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# => nginx: configuration file /etc/nginx/nginx.conf test is successful

systemctl restart nginx

curl -k https://localhost 2>&1 | grep '<title>'
# => <title>Test Page for the HTTP Server on Fedora</title>

証明書の自動更新

証明書を自動的に更新するよう設定します。

systemctl enable --now certbot-renew.timer
# systemctl daemon-reload でも良いかも

systemctl list-timers certbot-renew.timer

cat /etc/sysconfig/certbot | grep POST_HOOK
# => POST_HOOK="--post-hook 'systemctl restart nginx'"

自宅サーバの DDNS 化

https://zenn.dev/asterisk9101/articles/cloudflare-1

以上

GitHubで編集を提案

Discussion