名前解決をせずにIPアドレスだけで、Let’s Encrypt(オープンソースのSSL証明書)をドメイン名の認証はできません。当たり前のことですが。
自分はこの簡単な事実に気がつくのに丸一日かかりました。つい最近自分でDNSのゾーン設定を削除したにも関わらず、何やってんだか…orz。
“SERVFAIL looking up A for”とは
SERVFAIL looking up A for mydomainname.com
すべてはこのエラー文の意味について、よく考えることに尽きます。意味は「”mydomainname.com”のAレコードを調べてもIPアドレスを正引きすることはできません」ということになります。
# certbot --apache -d mydomainname.com
ドメイン名の認証作業をするためには、上記のcertbotコマンドが必要です。ですがDNSのゾーン設定ができていない状態で、このコマンドを実行すると2種類のエラーが出ます。
80番ポートが空いてないぞ!
Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80. IMPORTANT NOTES: - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.
「(意訳)あんたのサーバーはバーチャルホストでも使ってんのか?ドメイン認証してやるから80番ポートを使えるようにしとけや」。なのでこの注意書きに対して、
# vi /etc/httpd/conf/httpd.conf <VirtualHost *:80> ServerAdmin root@mydomainname.com DocumentRoot /var/www/html ServerName mydomainname.com </VirtualHost> # systemctl restart httpd
とApacheの設定を書きかえて、再度”certbot”コマンドを実行しました。
Aレコードを正引きしてもIPは分かりません!
# certbot --apache -d mydomainname.com ... Failed authorization procedure. mydomainname.com (http-01): urn:acme:error:dns :: DNS problem: SERVFAIL looking up A for mydomainname.com IMPORTANT NOTES: - The following errors were reported by the server: Domain: mydomainname.com Type: None Detail: DNS problem: SERVFAIL looking up A for mydomainname.com
すると、上述した”SERVFAIL looking up A for mydomainname.com”というエラーメッセージが登場します。簡単に言えばAレコードによる正引きができないという意味ですが、より正確に表現すると「DNSSECの設定にエラーがある」ということになると思います。
Let’s Encrypt Communityコミュニティのサポートフォーラムでもそれっぽいことが書かれています。
DNSSEC(DNSセキュリティ拡張)とは
ちなみにDNSSEC(DNS Security Extentions DNSセキュリティ拡張)とは、何のことでしょうか?「標準テキスト CentOS 7」のP644に詳しく説明されていますので、引用しておきましょう。
DNSSECとは、デジタル署名による生成元の正当性とDNSデータの完全性を提供します。サーバはゾーンデータを秘密鍵で署名し、それを受け取ったクラインアントがサーバの公開鍵によって生成元の正当性とデータが改ざんされていないかどうかの完全性を検証します。
ここでいう「サーバ」とはDNSサーバのことをさし、クライアントとはDNSクライアント(当該IPアドレスが割り当てられている自分のサーバー)のことをさします。今回の場合、DNSサーバにおいてゾーンデータを削除しちゃってます。そりゃエラーも出ますわな。
もし”mydomainname.com”をSSL化したい場合は、まずDNSのゾーン設定(名前解決)が必要ということですね。