2017年6月28日水曜日

日本語ドメインについてお勉強したのでそのまとめ

日本語.jp みたいなドメインってたまに見かけますが実際に自分が運用することになるとは思わなかったので学んだことをまとめたいと思います。
このような形式のドメイン名は「国際化ドメイン名」と呼ばれるものらしいです。

従来のアルファベット、数字、ハイフン以外にマルチバイト文字を利用できるようにする仕組みのことで、日本語の他にもアラビア文字なども利用できるようです。
ただ、毎回国際化ドメインと呼ぶのもアレだし非エンジニアのスタッフに説明する時に相手に難しそうなイメージを持たれたくないので、
日本語が含まれたドメイン名のことを日本語ドメインと会社では呼んでいます。
中国語だったら中国語ドメインですね。

この日本語ドメインをDNSサーバが理解できるようにするためには、Punycode(ピュニコード)と呼ばれる形式で、アルファベット数字ハイフンだけの、既存のドメイン名に使用できる文字だけの対応ドメインに変換してあげる必要があります。
言いたかったのはそれだけです。

たとえば、JPRSが運用している 日本語.jp はPunycodeだと xn--wgv71a119e.jp になります。

これはHTTPS接続についてほんのちょっとだけめんどくさいトラブルが発生します。
curlなどでHTTPアクセスのテストをすることはよくあると思いますが、開発している日本語ドメインのサービスがHTTPSを基本としていて、curlでもHTTPSで行う場合、通常はSSLに関するエラーが出力されます。
SSL証明書を取得するときはPunycode変換済みのドメイン名で取得することが前提となっており、変換済みのドメインは変換前のドメインとリテラル的に同等とみなされないからです。
SSL証明書エラーを回避するには curlの -k オプションを利用します。

今回私が運用することになった日本語のドメイン名は、AWSのACMで無料の証明書を取得しました。
そのドメインは お名前.com で購入したのですが、デフォルトの状態では取得不可能でした。
なぜか?それは、こちらの仕様によるもの

日本語ドメインは、A / AAAA / CNAMEレコードのみご利用いただくことが可能です。
設定方法はこちらをご参照ください。

これはMXレコードを設定できないことを意味します。
MXレコードが設定できないということは、該当ドメインでのメール受信ができないことを示します。
つまり、ACMで必須となる認証メールによるACM発行承認が得られないわけです。

なので、何らかの方法でお名前.com以外のDNSサーバ、できればRoute53でDNSレコードが管理できる状況にしなければなりません。
私は「お名前.comのドメインをAWSで使用する4つの方法 - Qiita」によるところの、2番目の方法で実質的な管理者をRoute53に変更して対応しました。

これを行うことにより、Route53上で好きなようにDNSレコードを設定することができるようになりました。
これでACMの証明書が取得できましたので、ELBやCloudFrontに登録して、快適HTTPSライフが遅れるという算段です。

以上がTIL(Today I Learned)になります。
これから同様の仕事を行う方の参考になれば幸いです。