Let's Encryptがワイルドカード証明書に対応したので早速発行してみる

昨年(2017年)後半頃より、フリーSSLプロジェクトのLet's Encryptで、ワイルドカード証明書の発行対応(特定のドメインやサブドメインに限らず、*.example.com のようなサブドメインへの対応)を宣言していました。
元々の計画では2018年2月下旬を予定されていましたが、品質向上のため直前でリリース延期となっておりました。

それが本日(3月14日、現地時間で3月13日)、ついにリリースされました

今回、ワイルドカード証明書の対応含め、ACME v2プロトコルにも対応になりました。
ワイルドカード証明書を利用するには、こちらのACME v2プロトコルの利用が必要になります。
また、これまでは証明書発行ドメインが向いているサーバ内に、認証サーバから接続し、それによって証明書発行時の所有者確認が行われていましたが、ワイルドカード証明書の取得にはDNS認証(DNS-01)を利用する形になります。

これまでと同様、コマンドラインからcertbotまたはcertbot-autoコマンドを利用して、証明書を発行するには以下の様にする必要があります。

ACME v2プロトコルを利用し、DNS認証を行うには、--manualオプションと、ACME v2プロトコル利用字のEndpoint (https://acme-v02.api.letsencrypt.org/directory)の設定が必要になります。

Certbotコマンドによる証明書生成


$ sudo certbot-auto certonly --manual \
--server https://acme-v02.api.letsencrypt.org/directory \
-d "*.anoncom.net"
※ドメイン名部分(anoncom.net)は適宜読み替えてください。

実行すると、以下の様に表示され、DNS認証の準備が開始します。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for anoncom.net

-------------------------------------------------------------------------------
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
-------------------------------------------------------------------------------
(Y)es/(N)o: 

まずは、現在のサーバのIPアドレスを記録して良いかと聞かれます。
証明書を要求しているサーバ(現在コマンドを実行している環境)と、ドメインの接続先が同じであることを確認するためと思われます。
CloudFlareやGCPを利用しているなどで、要求元と接続先が異なる場合はDNSプラグインを指定することになりますが、ここでは割愛します。

チャレンジコードの取得

ここをパスすると次はDNS認証に使用するチャレンジコードが発行されます。
これを設定するドメインのTXTレコードに設定する必要があります。

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.anoncom.net with the following value:

Ahacuzt7x1785Kr8jncL4IqfpbBG3gqwVnrBstesRSC

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

認証用TXTレコードの作成


このチャレンジコードを、DNS上のTXTレコードに、_acme-challengeというレコードを作成し、値を指定します。
※なお、本記事中で記載されているチャレンジコードはサンプル用で、実際に発行されたものとは異なります。

以下はGoogleドメインのDNS設定画面での操作をキャプチャしたものになります。

DNS認証用TXTレコード作成画面
追加されたTXTレコード


DNSに設定するため、Let's Encrypt側の認証サーバからDNS上で確認できるようになるまでしばらくかかります。
そのためここで発行された値を設定後、この画面でしばらく待機します。

待たずに行うとDNSの更新が間に合わずエラーに


待たずに、即座に行うとこのようにエラーが表示されます。
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. anoncom.net (dns-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: No TXT record found at _acme-challenge.anoncom.net

失敗すると再度同じコマンドを実行する必要がありますが、チャレンジコードは毎回新規に発行されるため、改めてDNSレコードを更新する必要がありますので注意してください。

焦らずしばらく待ちましょう

私は上記の状態で十数分程度待ってみました。

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/anoncom.net-0001/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/anoncom.net-0001/privkey.pem
   Your cert will expire on 2018-06-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

成功すると、このようにこれまでの証明書発行時と同様に、作成されます。


あとは、リバースプロキシやウェブサーバに証明書を設定することで、無事ワイルドカード証明書が利用できるようになります。

利用できるようになったワイルドカード証明書


注意点

既に販売されているワイルドカード証明書でも同様のことですが、ワイルドカード証明書は www.anoncom.net や games.anoncom.net といったサブドメイン部分にまで適用されます。
例えば、sample.demo.anoncom.net といった、さらに下階層のドメインレベルにまでは適用されません。




最近作ったアプリの話

先日、コナミ社の提供している コナステ のダウンロードコンテンツゲームを1クリックで起動できるアプリを作り、公開した。 Ks Game Launcher  ( Github ) 作った理由として、インストール時に作成されたショートカットをクリックするとブラウザが起動し、ログインし...