Rocky Linux 9 一覧へ戻る トップRocky Linux 9 / HTTPS接続拒否の解決記録
Rocky Linux 9 ・ Web Server ・ トラブルシューティング

HTTPS接続拒否(ERR_CONNECTION_REFUSED)の解決記録

Apache × Let's Encrypt × SELinux でハマりがちな2つの罠と、その診断・解決手順

Listen 443 SELinux ラベル(cert_t)

目次

  1. 1. 発生した問題
  2. 原因①:ポート(443番)の開放命令が不足
  3. 原因②:SELinuxによる証明書ファイルのアクセス拒否
  4. 3. 成功を確認した診断フロー
  5. 4. 学習のポイント(まとめ)
  6. 実機で確認した現在の状況

📋 1. 発生した問題

項目内容
状況http(80番)では接続できるが、https(443番)でアクセスするとブラウザに「接続が拒否されました(CONNECTION_REFUSED)」と表示される。
環境Rocky Linux 9 / Apache (httpd) / Let's Encrypt (Certbot)
セキュリティ設定SELinux が Enforcing(有効)モード。

🔧 2. 原因と解決策(2つの大きな要因)

原因①

ポート(443番)の開放命令が不足していた

【現象】

コマンド sudo ss -napt | grep 443 を打っても何も表示されなかった。これは、Apacheという「店」は開いているが、「HTTPS専用の入り口(443番ポート)」を誰も開けていない(Listenしていない)状態。

【なぜ起きたか】

Rocky Linuxで mod_ssl を導入した際に作られる標準の ssl.conf には Listen 443 という命令が入っていた。しかし、初期エラーを回避するために ssl.conf を無効化したため、「443番ポートで待機せよ」という命令そのものが消えてしまっていた。

【解決策】

Apacheに443番ポートを監視するように明示的に命令を追加した。

# 設定ファイルの新規作成
sudo vi /etc/httpd/conf.d/listen443.conf
# 以下の1行を書き込み
Listen 443
原因②

SELinuxによる証明書ファイルのアクセス拒否

【現象】

ポートを開けても、ブラウザが拒否される、または「403 Forbidden」が出る。

【なぜ起きたか】

SELinux(看守)は非常に厳格。Certbotが作成した「証明書ファイル」に対し、「これはApacheが触って良い証明書である」という正しいラベル(身分証)が貼られていなかった。

ラベルが etc_t(一般設定ファイル)のままだと、Apache(httpdプロセス)は cert_t(証明書用ラベル)以外のファイルを読み込むことが許されない。

【解決策】

restorecon コマンドを使い、証明書関連ファイルのSELinuxラベルを「本来あるべき姿(cert_t)」に貼り直した。

# 証明書フォルダ全体のラベルを修復
sudo restorecon -Rv /etc/letsencrypt/

※ログに Relabeled ... from etc_t to cert_t と出れば成功。

🔍 3. 成功を確認した診断フロー

トラブル時に、どこが悪いかを特定するための「最強の確認コマンド」です。

1. サーバーの内部で動いているか?(これが最優先)

curl -k https://localhost

→ これでHTMLが返ってくれば、ApacheとSELinuxの設定は「合格」。

2. ポートは開いているか?

sudo ss -napt | grep 443

→ LISTEN 状態の行が出れば「合格」。

3. ファイアウォールは通しているか?

sudo firewall-cmd --list-all

→ services に https があれば「合格」。

💡 4. 学習のポイント(まとめ)

この記録を保存しておけば、今後同様の構成(Rocky Linux + Apache + SSL)でサーバーを構築する際、迷うことなく最短距離で「最強のセキュリティサーバー」を完成させることができます!

実機で確認した現在の状況

2026年8月4日時点で、本サイトのRocky Linux 9サーバーの実際の状態を確認しました。

$ curl -sk -o /dev/null -w 'HTTP %{http_code}\n' https://localhost
HTTP 200

$ ss -napt | grep 443
LISTEN 0  511  *:443  *:*

精査メモ:listen443.confのその後

この記録作成時点の応急処置だった /etc/httpd/conf.d/listen443.conf は、実機では現在存在しません。代わりに、当時無効化されていた標準の ssl.conf が復活しており(Certbotの再実行等で再生成されたとみられます)、そちらが Listen 443 を提供しています。応急処置のファイルが後日より正規の構成に置き換わった、という自然な経過です。

HTTPS接続問題 解決済み ✅

2つの原因(ポート未開放・SELinuxラベル不整合)はいずれも解消され、現在もHTTPS接続は正常に機能しています。

Rocky Linux 9 一覧へ戻る