0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SSLファイル認証がルートドメインで確認できない時の対処法

Posted at

はじめに

QuickSSL Premium などの SSL 更新時、ルートドメイン(example.com)が HTTPS に未対応で、認証ファイルがアクセスできない問題に直面しました。
この問題は、www.example.comでは認証が通るが、example.com では 404 や名前解決エラーが返る場合に発生します。


問題の背景

現象

curl -I http://example.com/.well-known/pki-validation/fileauth.txt
# => 404 Not Found または Could not resolve host

curl -I http://www.example.com/.well-known/pki-validation/fileauth.txt
# => HTTP/1.1 200 OK

環境

  • Root domain (example.com) は HTTPS に未対応
  • www.example.com は SSL 設定済み
  • Apache VirtualHost は変更できない(複数ドメイン運用)

原因分析

1. DNS と VirtualHost の設定

DocumentRoot 配下に以下の構造を作成します

  • CA (認証局) は root domain に直接アクセスします。
  • Root domain が正しいサーバーを指していない、または VirtualHost 設定がない場合、HTTP 404 や名前解決エラーが発生します。
2.リダイレクト設定
  • 既存の example.com → www.example.com リダイレクトは、CA がアクセスする際に認証ファイルを読み取れない原因となります。

解決策:.htaccessで例外設定

1. 認証ファイルの配置
/var/www/html/
├─ .well-known/
│  └─ pki-validation/
│     └─ fileauth.txt ← **認証ファイル**
├─ example/
│  └─ index.html
└─ other-sites/
  • CA が直接アクセスできることが重要です

  • ファイル権限: -rw-r--r--

2. .htaccess 設定例
<Files "fileauth.txt">
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

RewriteEngine On

# 認証ファイルはリダイレクトさせない
RewriteCond %{REQUEST_URI} ^/\.well-known/pki-validation/fileauth\.txt$
RewriteRule ^ - [L]

# それ以外は www ドメインへリダイレクト
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

ポイント

<Files "fileauth.txt"> ... </Files>

→ CA が直接アクセスできるようにする(IP やリダイレクト制御に影響されない)

RewriteRule ^ - [L]

→ 認証ファイルへのアクセスはリダイレクトしない

 その他アクセスは既存リダイレクトに従う

動作確認

curl -I http://example.com/.well-known/pki-validation/fileauth.txt
curl -I http://www.example.com/.well-known/pki-validation/fileauth.txt

両方とも HTTP/1.1 200 OK が返ることを確認
DocumentRoot 確認
httpd -S

_default_:443          www.example.com (/etc/httpd/conf.d/ssl.conf:75)
*:80                   is a NameVirtualHost
         default server example.com (/etc/httpd/conf/httpd.conf:1015)
         port 80 namevhost example.com (/etc/httpd/conf/httpd.conf:1015)
         port 80 namevhost www.example.com (/etc/httpd/conf/httpd.conf:1018)

httpd.confの中身を確認した結果

ベストプラクティス

  • 既存 VirtualHost や他サイトに影響を与えない

  • SSL 更新時は root domain と www の両方を事前確認

  • .htaccess の変更はテスト環境で検証

  • 認証ファイルは SSL 更新後速やかに削除

💡 補足

  • 上記方法が実行できない場合、ホスティング提供会社が「メール認証 (Email Verification)」をサポートしているか確認

  • これが最も 簡単で安全な方法 で、VirtualHost や .htaccess に手を加えずに CA 認証が可能

  • ただし、利用可能かどうかはホスティング会社と SSL 発行者次第


まとめ

  • Root domain に SSL 認証ファイルが届かない場合、.htaccess で例外設定を作る

  • DocumentRoot 配下に .well-known/pki-validation/fileauth.txt を置き、アクセス制御を調整

  • 既存リダイレクトや VirtualHost に影響を与えず、CA 認証を通す

  • Hosting の制限がある場合は「メール認証」を検討する
    この方法により、複数ドメイン運用環境でも SSL 更新を安全かつ確実に行えます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?