はじめに
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 更新を安全かつ確実に行えます。