しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Azure Web サイトで国際化ドメイン名を使ってみた

何故だか良く分かりませんが、Windows Azure Web サイトでは国際化ドメイン名が使えないという話を、多分 No.1 から聞いたので本当に使えないのか検証してみました。

今回取得した国際化ドメイン名は「お義父さん仕事してください.biz」です。いつも通りお名前.com で取得したので、いつも通り DNS の設定を行っておきましょう。

f:id:shiba-yan:20140328224240p:plain

A レコードと同時に CNAME で awverify を向いたレコードを追加するのを忘れないように注意しましょう。

さて、カスタムドメインの設定は既に説明済みなので省略しますが、基本的に DNS の設定が完了すれば問題無いので管理ポータルから取得したドメインを登録してみます。

f:id:shiba-yan:20140328111611p:plain

\(^o^)/オワタ

No.1 曰く、単純に入力チェックで弾かれているだけだろうとのことだったので、だったら Punycode にしておけば通るんじゃないかと思ったので試してみましたが、追加は出来ても Web サイト側に正しいドメインとして認識されませんでした。

仕方ないので、経験上管理ポータルとはチェックロジックが異なっていることを知っている REST API を使っての追加を試してみました。Azure の REST API は Management Libraries を使えば非常に簡単に扱えるので、今回もそのライブラリを使って追加するだけのサンプルコードをサクッと作成しました。

var subscriptionId = "SUBSCRIPTION_ID";
var base64Certificate = "BASE64_CERTIFICATE";

var credentials = new CertificateCloudCredentials(subscriptionId, new X509Certificate2(Convert.FromBase64String(base64Certificate)));

var client = new WebSiteManagementClient(credentials);

var parameters = new WebSiteUpdateParameters();

parameters.HostNames.Add("statemachine-biz.azurewebsites.net");
parameters.HostNames.Add("お義父さん仕事してください.biz");

var response = client.WebSites.Update("japaneastwebspace", "statemachine-biz", parameters);

HostNames に追加したい国際化ドメイン名以外にデフォルトのドメインを追加しているのは、Update するとデフォルトのドメイン設定が消えてしまうからです。

このコードを実行するとエラーが発生することなく処理が完了し、管理ポータルから見ると正しく国際化ドメイン名が追加されていました。

f:id:shiba-yan:20140328113153p:plain

実際にブラウザから「お義父さん仕事してください.biz」へアクセスすると、何の違和感もなくページが表示されました。管理ポータルのチェックが未対応なだけで、IIS 周りは問題なく対応していたようです。

f:id:shiba-yan:20140328225931p:plain

今回はドメイン名だけ試してみましたが、おそらく話題の「.みんな」ドメインも使えると思います。

Windows Azure Web サイトは Management Libraries を使えば、管理ポータル経由で使わなくてもいろんな操作が行えるのがクラウドっぽいですね。