私はSSLの設定は1000件くらいやったかもしれない。Let’s Encryptやその他有償の証明書など色々な選択肢があるが、この記事では有償の証明書で、サーバー認証をする場合についてのメモをまとめる。
サーバー認証方式とは、ウェブサーバーの公開ディレクトリに認証ファイルを設置し、該当ドメインの所有者であることを認証するというもの。サーバーにファイルを置くだけなので、設定うする側からすると簡単なので重宝する。しかし、うまくサーバー認証がされない場合がたまにあるので、そういった場合について紹介する。
- ファイル名が違う
- 中身が違う
- 設置場所が違う
- DNSの変更直後である
- サブドメイン周り
- リダイレクト設定周り、特に301
- はまったケース
初級編
ファイル名が違う
サーバーにアップしたファイル名が本当に正しいか確認しよう。ローカルPCに保存したファイル名と、サーバーにアップしたファイル名が完全に一致していないといけない。
中身が違う
作業の過程でファイルの中身をうっかり編集してしまっていないか確認しよう。サーバーでviコマンドなどで編集していると、気づかない内にファイルの中身が変わっていることがあるかもしれない。
設置場所が違う
サービスにもよるが多くの場合、認証ファイルはサーバーの公開ディレクトリの .well-known/pki-validation 配下に設置することが多い。validationがvalidtaionとかになってると、もちろん認証されない。
中級編
DNSの変更直後である
新規のドメインを取得し初めて公開するウェブサイトの場合とか、あるいは新規取得のドメインではないがサーバーAからサーバーBに変更する場合など、こういったDNSの変更直後はなかなかサーバー認証されない場合がある。こういう場合はひたすら待つしかない。どうしても急ぎという場合は、サービス提供元に相談すればメール認証に切り替える場合もあるので、選択肢として覚えておくといい。
サブドメイン周り
まずは申請時のドメインをよく確認する必要がある。ウェブ運用の意図と違う結果にならないようよく確認しよう。また、ドメインにwwwをつけて運用していて、かつwwwをつけないドメインを公開していない場合はサーバー認証はできない。別の方法の認証を検討しよう。
リダイレクト設定周り、特に301
wwwなしのドメインからwwwありに301リダイレクトをつけて運用しているとすると、サーバー認証は難しいかもしれない。301はpermanentなので、一度設定するとその状況を覆すのは至難の業である。別の認証方法を検討しよう。
上級編
はまったケース
最後にはまったケースを紹介する。サーバーに認証ファイルを設置したのだが、どうやっても認証がされない。上に紹介したような確認はしたのだが、なぜか認証ファイルが404 not foundとなってしまう。サーバーの所定の場所を目視すると確実にファイルが存在し、ファイル名も間違っていない。それでも404が出る。うーむ、困った。
そこで思い出したのは、コンピュータは命令通りにしか動かないという原則である。404が出るということはそれは正しいのだ。それを固定して考えると、やはりファイル名に問題があるのかもしれないと思った。そこで、やったことは、ローカルPCにある認証ファイルをSCPコマンドで再度サーバーにアップしたのだ。
そうしたら、サーバー上の同じディレクトリに同じファイル名が並んでいたのだ。我が目を疑ったが、紛れもなく同じファイルが2つある。そんな馬鹿な。
結論を書こう。一方のファイル名の最後に全角のスペースがはいってた。それで404が表示されていたのだ。目視しても人間は半角スペースを認識できないが、コンピュータにとっては別ものである。やはりコンピュータは命令通りに動くのだ。