無料で絵文字ドメイン名とそのSSL証明書を取得して遊ぶ (Freenom × Let's Encrypt)

#:jack_o_lantern: はじめに
去る 2016/10/20、[Let's Encrypt](https://letsencrypt.org/) が IDN (国際化ドメイン名) に対応したようなので、さっそく試してみたいと思います:fist:
どうせ試すなら無料で楽しく、ということで絵文字ドメイン名を取得して遊んでみることにします:grin:

[https://🌙👻🎃🎃🎃👻🌙.tk/](https://xn--5g8ha13aaa99lda.tk/)

#:ghost: 無料で絵文字ドメイン名を取得する (Freenom)
先日投稿された[「無料のドメインを取得する（2016年10月）」](http://qiita.com/teekay/items/135dc67e39f24997019e)にて紹介されている [Freenom](http://www.freenom.com/) では .tk/.ml/.ga/.cf/.gq が無料で取得できるだけでなく、絵文字を含む IDN が取得可能です:exclamation:

まずは取得したいドメイン名の Punycode を調べます:mag:
方法は簡単で、[Punycoder.com](https://www.punycoder.com/) で「Text」フォームに好きな絵文字を入力し「Convert to Punycode」ボタンを押すと「Punycode」フォームに Punycode 変換された文字列 (xn--...) が出てきます:+1:
絵文字の入力は [http://unicode.org/emoji/charts/full-emoji-list.html](http://unicode.org/emoji/charts/full-emoji-list.html) の「Brow.」列や、[getemoji.com](http://getemoji.com/) などからコピペするのが簡単です:musical_note:

![punycoder.png](https://qiita-image-store.s3.amazonaws.com/0/103430/ae459156-75e1-7617-eb10-40a76f5383bc.png "ハロウィンっぽい感じで")

あとは[「無料のドメインを取得する（2016年10月）」](http://qiita.com/teekay/items/135dc67e39f24997019e)を参考に、調べた punycode 文字列で [Freenom](http://www.freenom.com/) にてドメイン名を取得すれば OK です:ok_hand:
今回は `xn--5g8ha13aaa99lda.tk` (🌙👻🎃🎃🎃👻🌙.tk) を取得してみました:bowtie:

![freenom.png](https://qiita-image-store.s3.amazonaws.com/0/103430/745a7491-d97a-593f-7a64-5cb49a90c133.png "絵文字ドメイン名は短い文字数でも大体空いてます")

#:skull: 無料で証明書を取得する (Let's Encrypt)
Let's Encrypt での証明書取得方法については事例がたくさんあるので省略します:sweat_smile:
IDN の証明書を取得する際の注意点としては、ドメイン名として直接絵文字等を使用するのではなく、Punycode 変換後のドメイン名 (xn--...) で証明書の申請を行うことです:warning:
また現時点では[公式の certbot スクリプトはまだ IDN に対応していない](https://community.letsencrypt.org/t/idn-support-enabled/21469)ようなので、[最新の開発版 certbot をインストールする](http://letsencrypt.readthedocs.io/en/latest/contributing.html#running-a-local-copy-of-the-client)か、[非公式クライアント](https://letsencrypt.org/docs/client-options/)を利用する必要があります:hand:

ちなみに拙作のブラウザ用 Let's Encrypt クライアント[「SSLなう! (https://sslnow.ml/)」](https://sslnow.ml/)でも IDN の証明書が取得できます:v:
[「SSLなう! 」](https://sslnow.ml/)については前回の記事[「Let's Encrypt の証明書をブラウザ上で簡単取得 (dns-01 / ECDSA もあるよ)」](http://qiita.com/tappie/items/76881fdf7996c57a105a)を参照してください:point_left:

無事証明書が取得できたら準備完了です:sunglasses:
![cert.png](https://qiita-image-store.s3.amazonaws.com/0/103430/c17993cf-316a-ab3d-0c0f-daf440474f1c.png "Punycode で取得します")

#:tada: 遊びかた

##:earth_asia: Web で遊ぶ
独自ドメイン名と証明書を入手したら、まずは Web ですね:relaxed:
せっかくの絵文字ドメイン名なので、うまく絵文字を選んでネタサイトを作れば楽しそうです:laughing:

ただリンクに絵文字を使った場合、ブラウザ環境によってはアクセスできない可能性があるので、リンクは Punycode で張っておいた方が無難かもしれません:alien:
以下の 2 パターンでブラウザの挙動に違いがあるかどうかを確認してみてください:white_check_mark:

URL に絵文字 (Unicode) を使用したリンク :
[🌙👻🎃🎃🎃👻🌙.tk](https://🌙👻🎃🎃🎃👻🌙.tk/)
`<a href="https://🌙👻🎃🎃🎃👻🌙.tk/">🌙👻🎃🎃🎃👻🌙.tk</a>`

URL に Punycode　を使用したリンク :
[🌙👻🎃🎃🎃👻🌙.tk](https://xn--5g8ha13aaa99lda.tk/)
`<a href="https://xn--5g8ha13aaa99lda.tk/">🌙👻🎃🎃🎃👻🌙.tk</a>` 

![Safari.png](https://qiita-image-store.s3.amazonaws.com/0/103430/9c3aa5da-1e0c-d6f8-99bb-9223ddd97e47.png "Safari ではアドレスバーも絵文字のまま表示されます")

##:email: メールで遊ぶ
Web の次はメールです:smiley:
正しく設定すれば取得したドメイン名でメール送受信ができるようになります:inbox_tray::outbox_tray:
メールクライアントにより表示は異なりますが、From のアドレスが絵文字ドメイン名となっているメールが届いたらインパクト大ですね:zap:

![OCN Mail.png](https://qiita-image-store.s3.amazonaws.com/0/103430/ac6af909-9357-472d-3ffb-a7f7f5c9da2a.png "OCN メールでは絵文字ドメイン名も正常に表示されます")

しかし、残念ながら絵文字ドメイン名のアドレスを From として Gmail に送信すると下記のように拒否されてしまいました…:scream:

```
<XXXXX@gmail.com>: host gmail-smtp-in.l.google.com[64.233.188.26] said:
    550-5.7.1 [X.X.X.X] Our system has detected that this message is
    attempting 550-5.7.1 to use a domain name that does not meet our domain
    name policies. 550-5.7.1 Please visit 550-5.7.1
    https://support.google.com/mail/?p=DomainNameError to review our Bulk 550
    5.7.1 Senders Guidelines. xxxxxxxx.xxx - gsmtp (in reply to end of
    DATA command)
```

どうやら Gmail はドメイン名に使える文字列のポリシーを持っており、そこから外れたドメイン名を含むメールアドレスからのメールは拒否しているようです:disappointed_relieved:
送信できない宛先が存在する以上、絵文字ドメイン名をメールアドレスとして常用するのは現実的ではなさそうです:sweat_drops:

#:sleeping: おわりに
当初は鳴り物入りで(?)登場したものの、なかなか使用されているのを見かけない IDN で何か遊べたらなーと思ったのですが、あまり遊び方が思いつきませんでした:sweat:
世の中には絵文字ドメイン名を利用した短縮 URL サービス [linkmoji](http://www.xn--vi8hiv.ws/) なんてものもあるようで、まだまだ他にも使い道はありそうな気がします:bulb:
楽しそうなアイディアがあればぜひぜひ教えてください:memo:

それではみなさん良い週末を:sparkles:
Happy Halloween !! :jack_o_lantern:

#:closed_book: 参考
- [Freenom](http://www.freenom.com/)
- [😇絵文字ドメイン😇 - Qiita](http://qiita.com/hiraro/items/97a0983cd93a7cfc6423)
- [無料のドメインを取得する（2016年10月） - Qiita](http://qiita.com/teekay/items/135dc67e39f24997019e)
- [💩.la](http://xn--ls8h.la/)
- [Punycoder.com](https://www.punycoder.com/)
- [Unicode Emoji](http://unicode.org/emoji/charts/)
- [getemoji.com](http://getemoji.com/)
- [Let's Encrypt - Free SSL/TLS Certificates](https://letsencrypt.org/)
- [Let's Encrypt の証明書をブラウザ上で簡単取得 (dns-01 / ECDSA もあるよ) - Qiita](http://qiita.com/tappie/items/76881fdf7996c57a105a)