サーバ証明書の期限、めっちゃ短くなります(ACME)
「この番組は、「エンジニアの成長は楽しい学びから」をモットーに、昨日より少し成長できる学びを、わいわいお届けするエンタメ系テックラジオです」
「さあ、今日もでかくなっていきましょう」
「はい、いきましょう、いきましょう。ということで、えっと、まあ、ちょっと最近仕事をしていて、普通にぶつかったことをちょっと勉強してお話しする回なんですけど」
「おお」
「えー、のりさんってサービス、うん、業してますか」
「してる」
「ウェブアプリとか、ウェブページとか、なんでも」
「すごく、なんだろうな、うーん、だいぶ、なんか、ワイルドにやってるけど」

「まあまあまあまあまあ。ちょっと、今までの業務経験の中で、えーと、証明書、SSLの、あの、証明書」
「うんうんうん」
「の更新とかってやったことあります?」
「めっちゃある」
「あれ、期限どんどん短くなってるって知ってます?」
「え、あれってそもそもさ、認証局に寄らないの?その長さって」
「えっと、元々寄ってたんですけど、業界全体として短くなってるって知ってます?」
「そうなんだ」

「はい」
「ん?期限が」
「期限、期限が、そう、期限が」
「え、知らないかも。なんか、前より、あの、なんだ、頻繁に更新できないような、なんか、制限かかってるなって思った記憶ある」
「逆に?」
「あの、なんて言うんだろう、前って多分、なんか、毎日更新しても、なんか、いけたみたいな」
「あー、なるほど」
「なんだけど、なんか、期限の何ヶ月以内とかじゃないと、更新走らないみたいな、なんか、制限かかってたりとか」

「なるほど」
「なんか、挙動がちょくちょく変わってるなっていう記憶はありますね」
「うんうん。実はですね、2026年3月14までに発行された証明書って、期限398日だったんですよ」
「え?」
「マックス」
「マックス?」
「398日、はい」
「はいはい」

「まあ、なんで、大体年1更新」
「はいはいはい」
「だったのが、えー、3月15日以降、まあ今、これマックス200日になってます」
「あー」
「ほぼ半分」
「え、でもそれで言うと、俺、あんま驚きがなくて」
「はい」
「僕、あの、レッツエンクリプトガチ勢なんですけど」

「はいはいはいはい」
「あれ、90日のイメージあるんだよな」
「そうっすよね」
「うん」
「レッツエンクリプト短いっすよね」
「短い。で、なんか、レッツエンクリプト以外使ったことなさすぎて」
「はい」
「むしろ、そんな長えんだって今なってしまった」

「ただ、のりさん、まだ終わりじゃないんすよ、これ」
「なんやって」
「来年の3月15からは100日になって」
「おお」
「で、2029には47日になります」
「ん?全部が?どこも?」
「全部、全部」
「ふーん」

「で、もっと言うと、レッツエンクリプト多分もっと短くて。と、あ、でもレッツエンクリプト今90日で、来年の2月から64日になって、2028年から45日になりますね、レッツエンクリプト」
「へえ」
「まあ、なんで、大体月1更新になります」
「まあでも、まあそうか。え、そっちのほうが安全だからってことっすよね、多分」
「イエス」
「うんうんうん」
「で、証明書の更新って、まあ従来、従来、うん、従来か。従来、えーと、まあ認証局に証明書更新したいんすけどって申し込みして、なんか、ごにょごにょやってもらって、まあメールで、えー、サーバー証明書とか中間証明書が送られてくる」
「はい」

「で、送られてきたやつを、サーバーじゃないな、えーと、まあ置き場所に配置する」
「うんうん」
「まあルーターかも、てかロードバランサーかもしんないし、まあ、え、大体ロードバランサーか」
「まあ、大体そこで、なんだ、内部の通信はHTTPっすよね」
「そうそうそうそう。っていうふうなことをやるんですけど、そんなん月1になったら死んじゃいますと」
「ほう。てか俺、その更新のやり方、やったことないかもしんない」
「ちなみにレッツエンクリプトのときはどうやってました?」
「あの、サートボットっていう」

「はいはいはいはい」
「なんか、便利コマンドで発行して、で、サートボットリニューみたいなコマンドで更新できるんで、もう完全自動化してましたね」
「まさしく」
「え?」
「まさしくです、それ」
「まさしく?」
「はい。今日はその話をします」
「ほう」

「で、手動でやってたら死ぬんで、それを自動化しようっていうプロトコルがあって」
「へえ」
「それがアクミーと呼ばれるプロトコルになります」
「アクミー?」
「はい」
「あれですか、タイミーの違法版ですか」
「なんで悪になると、ああ、悪いからってこと?」
「違法版のタイミーですか、それ」

「すいません、ちょっと遅れちゃいましたわ。違います、違います」
「違いますか」
「オートメーション・サーティフィケイト」
「はいはい」
「M、なんだっけ、マネージメント・インプリメントだったかな」
「ほう」
「まあ、という仕組みがあるんですけど、それをちょっとお話ししようかなと思う前に、じゃ、えっと、証明書の話をちょっとしますね」
「ね、あのへん、なんか、いろいろ、なんか、3つぐらいファイルあってね、いっつも、なんか、理解ふわっとしてるんすよね」

「そうなんすよね。で、今ちょっと、もうずっと証明書うんぬんかんぬんって言っちゃってたんですけど、えっと、まあHTTPS暗号化して、えー、通信はされるんですけど、なんて言えばいいんだろうな。このドメインが本当に正しい組織、えー、人が運営しているドメインであるかというものを、まあ証明するものが、まあいわゆる証明書になります」
「うんうんうん」
「で、証明書は、まあ大体3段構成になっていて、ルート証明書、中間証明書、サーバー証明書の、まあ3段構成になってます」
「うんうんうん」
「で、えー、まあルート証明書は、まあグローバルサインとか、えー」
「グロー、グローバルサイン?」
「あ、どこだ、有名なとこ」
「なんか、あの、サイト上で見たことあるけど、何それってなってる」

「まあ、認証局っすね」
「ああ、そういうことなんだ」
「はい。まあ会社の名前なんですけど、サービスかな。まあこのルートの、えー、証明書を持っている組織って、そんなにいなくて」
「へえ」
「なんて言えばいいんだろうな。もうなんか、もうブラウザが知っているので、ああ、ここね、ここね、ここなら大丈夫だわっていうふうに、ブラウザ側とか、なんか世の中的に認識されてるやつらが、まあルート証明書を持ってますと」
「うーん」
「で、そのルート証明書が発行してるんですけど、その中間証明書とかサーバー証明書」
「はいはいはい」

「で、えー、そうだな、まあルート証明書から直接サーバー証明書を出すんじゃなくて、中間証明書っていうのを経由して、えー、サーバー証明書っていうものを出してますと」
「なるほどね」
「で、なんでこんなことしてるかと」
「はいはい」
「いう話になってくんですけど、えー、まあそれぞれの証明書には、署名が付いてますと」
「署名」
「はい。で、えー、まあサーバー証明書が、まあ基本的に各ドメインで扱われるようなものなんですけど、そのサーバー証明書には、中間証明書の秘密鍵で暗号化とかされてる署名が付いてます」
「はい」

「なので、サーバー証明書を見に行ったユーザーは、あ、なんか署名付いてるわって言って、なんかここの中間証明書で署名されてる、署名付いてるから、えー、中間証明書の公開鍵で確認したろうっつって、あ、合ってたわってなりますと」
「ああ」
「で、ただ、この中間証明書がほんとに正しいやつなのか分かりませんと」
「え?」
「なので、中間証明書の署名をルート証明書の公開鍵で復号とかします」
「ほう」
「で、あ、これルート証明書ちゃんとしたやつの中間証明書だわってなって、ああ、なるほど、これ正しいドメインですわ。あ、ていうか、正しいというか、まあそっか、正しいドメインですわ」
「ああ、なるほどね。えっと、これ、あれですか、ってことは、鬼滅の刃で言うと、あの、十二鬼月みたいな、なんか強い鬼たちがいるじゃないですか」

「はいはい」
「あれがルート証明書みたいな、あれがルート証明書みたいなことで、そのへんの野良鬼が、えー、中間証明書を出してるところで。はいはいはい。あ、だめだ、1レイヤー足りねえ」
「いや、ルートはもう鬼仏寺無惨です」
「そう、ルート鬼仏寺無惨にしないとだめだった」
「はい」
「出発点間違えてる」
「はい」
「あー」

「そうっすね」
「で、えーと、まあそっからなんかこう、じわじわ辿ってって、チェックしてるってことね」
「まあまあ、あの、階層というか関係だけ言えばそうっすね。もうほんとにただのツリー構造」
「ただのツリー構造だから別にね、なんでも良かったよね」
「はい」
「はい」
「はい。で、ね、まあこれなんでこんな、ね、3段になってるかっていうと、えっと、サーバー証明書ってさっき言ったとおり、まあ元々1年に1回更新されるものでしたと」
「はい」

「で、1年に1回更新されると、えっと、更新するときには中間証明書を使った署名をしなきゃいけないわけじゃないですか」
「うん」
「で、この1年に1回更新する人って、その、例えばさっき言ってたそのルート証明書を持ってる会社からすると、めっちゃいるわけじゃないですか、お客さん」
「うんうんうんうんうん」
「なので、そのサーバー証明書を更新するたびに、えー、秘密鍵を使って署名しなきゃいけませんと」
「うん」
「ただ、この証明書、ルート証明書ってめっちゃ大事なものなんで、えー、オフラインで管理しなければならないというふうに業界で決まっています」
「へえ」

「なので、そのサーバー証明書の更新、めっちゃ頻繁に来る中で、いちいちオフラインで管理してる証明書の秘密鍵取ってきて、えー、うんしょうんしょって言って運用するのが超大変ですと」
「確かに」
「なので、間に中間証明書をかましますと」
「はいはいはい」
「で、中間証明書は期限、これ1年じゃないんすよ」
「ほう」
「もっと長いっす」
「長いの?」

「はい。3から5年、まあ調べてる範囲だと、まあもっと長い。1年より長い」
「え、可能なのか、そんなこと」
「可能なのかというと」
「あ、いや、なんか、元のやつが1年なのに、そっから派生したやつがそれより長いってのが、なんか」
「えっと、元のやつというのは、1年なのはサーバー証明書です」
「あ、1年、ああ、そっちか、そっちか」
「そう、サーバー証明書が1年で、で、その1個上の中間証明書はもっと長くて」
「はいはい」

「で、ルート証明書はもっと長いんすよ」
「ああ、ああ、ああ」
「20年とか、はい。で、なので中間証明書は、まあ例えば3年から5年に1回更新するとしたら、サーバー証明書の、まあ5分の1とかの頻度で問題なくなるので、で、それでルート証明書がオフラインで管理しても、まあギリ回るようになってると」
「うんうんうん」
「いうような形らしいです」
「ほお」
「まあ、なので今回紹介するアクミーっていうのは、基本的にこのサーバー証明書を月1で交換するための、まあ絶対に必要な仕組みになります」
「うーん。そこの更新は、なんか新しいものを、ん?新しい秘密鍵を作るのか?で、それを署名するのか?」

「アクミーでやるのは、認証局からサーバー、えっと、新しいサーバー証明書ちょうだいって認証局に言ってもらう」
「うんうんうん」
「で、おそらく中間証明書の署名は認証局側でやってくれるはず」
「うーん」
「まあ、そのユーザーというか、なんだ、サーバー管理者側も持ってますけどね、中間証明書は」
「はいはいはい」
「ただ、えっと、今回やるのはサーバー証明書を更新することだけです。で、この、じゃあ今まで手動で、ね、手動で、すいません、証明書新しいのくださいって言って、メールで、メールじゃねえや、なんか申請フォームから送って、で、認証局っていうかルート証明書を持ってる会社側でごにゃごにゃやって、証明書どうぞってやってたところを、どうやって自動化するかというとですね、えー、まあもちろんAPI経由でやり取りをするわけなんですけど、えっと、まず最初に、まあ証明書ちょうだいのポストリクエストを送りますと。ただ、それでレスポンスで証明書が返ってくるわけではないです」
「うんうんうんうん」

「えっと、なぜなら、えー、まあ本人じゃない可能性があるし」
「ああ、そのリクエスト送ったのが」
「そうそうそう」
「うん」
「あともっと言うと、なんか例えばAPIキー合ってるからいいよねっていうのを、まあなんかセキュリティキー的にどうなんっていう可能性あるし」
「うんうんうん」
「なので、何してくるかっていうと、証明書を送って、あ、違う、証明書2送ってっていうと、オッケー、じゃあこの文字列、えー、このドメインに登録してみなっていう文字列が送られてきます」
「ああ、はいはいはいはい。なんか確かにやった記憶あるかも」

「はい。で、その、まあランダムなのかな、の文字列を、えー、これ確か2通りあってやり方が」
「うんうん」
「1個はDNSの、えー、テキストレコード」
「はいはいはい」
「に、その文字列登録するか、もしくは、えっと、ウェブサーバーの、その、なんか指定されたURL、このドメイン配下の、すら、なんだっけ、ちょっとパス忘れちゃったんですけど、指定されたパスに、その文字を返すように設定する」
「うんうんうんうん」
「で、それが終わったら、設定できたから試してちょって言うと、それをまたポストアウトかな、APIで送って、えー、認証局側でそれチェックして、オッケーだったら、オッケーだったよ、証明書作るからちょっと待ってねみたいなのが返ってきて、ちょっと時間経ってから証明書ちょうだいってまた言うとくれるっていう」
「うん」

「まあ大体そんな流れになってます」
「なるほどね。まあ、に、に、なんだ、そこの、そこの場所にそれ設置できるなら持ってる本人だろうっていうふうに、まあ見なしてるという感じですよね」
「あ、そうそうそうそうそうそうそう。そうそうそうそう。はい。まあみたいな感じで、えー、やってって、えっと、手続きをやってくんですけど、まあ最初のりさんが言ってたようなサートボットとか使うとなんかもっと楽にサクッとやれるよっていうのだったり、あとはAWSのACMとかだとマネージドでもうなんかもう勝手にやってくれるやつとかもあったりするんで」
「うんうんうん」
「AWSとかでやってるんだったらね、えー、ACMとか使うのが楽だなって思いますね」
「あ、でもサートボットは確かなんかそのウェブサーバーのどっかのパスになんか自動で配置してるところとかもなんかやってくれてるイメージあるな」
「うんうんうん。そう」
「うん」

「っすね。はい。っていうのでちょっとあの、まあちょっとリスナーで聞いてる方で、まあ手動で証明書更新してる方、自動対応せんにあかんぜというところで、えー、ちょっと今日お話しさせていただきました」
「これちなみにあれですか、証明書の種類によって、なんかサートボットみたいな、なんかそれぞれ専属のなんかボットみたいなやついるんすか」
「あ、いや、そんなことはないと思います。どっちかっていうと認証局側の、なんか対応状況次第っていうんですかね」
「うんうんうんうん」
「の認識ですね」
「へえ」
「すいません、ちょっとそこまで調べきれてないですけど、多分そう」
「うんうんうんうん」

「っすね。はい。というので、えーっと、サクッとアフタートーク行きます」
「はい。あ、ちなみにアクミーはどこまでがアクミーなんですか、今の話は」
「アクミーは証明書ちょうだいって言ってもらうまでの一連の流れ」
「あ、そう、はい」
「のプロトコル?」
「そうです」
「ああ、そういうことか」
「はい」

「えーっと、じゃあちょっとアフタートークなんですけど、のりさんめっちゃカメレオンっていうゲーム知ってます?」
「ああ、ちょっとXで話題になってるの見ましたよ」
「見ました?」
「うん、あのアーキテクチャが」
「あ、そうそうそう」
「アーキテクチャのところに関する話題を見ました」
「そうそうそう、ちょうどその話しようと思って」
「はいはいはい」

「あの、まあめっちゃカメレオンっていう、えー、あれはなんだろうな、なんか、まあ白い棒人間みたいなキャラクターを使って、えーっと、まあ隠れる側と見つける側に分かれて、えーっと、箱庭の中で片方が隠れて片方が見つけて、えー、射殺する」
「射殺するんだ、あれ。ちょっとね、ゲーム自体あんまやってないんだよな。やってないけど、全くやってない」
「射殺するゲーム。で、えーっと、隠れる側は、まあ基本的に動けないのか、動けるか、動けるけど、主な遊び方としては、まあ壁の、壁にくっついて隠れて、えー、で、その壁に擬態するように、えー、絵を自分のキャラクターに描く」
「はいはいはい」
「まあ、みたいなゲームで」
「なんかちょっとね」
「めっちゃバズってて」
「古き良きさ、ゲームの感じするよな、なんかそれ」

「まあどシンプルっすね」
「俺らがちょうど高校生ぐらいのときのさ」
「ああ、そうっすね」
「大学生とか、なんかそんぐらいのときのブラザーゲームを彷彿とさせる内容だなっていう感じするわ」
「確かに。これ2人で作って開発期間2か月らしいんすけど、で、売上が1500万本」
「万本?えーっと、いくらですか」
「780円」
「ってことは120億円以上」

「え、ああ、120億円以上?」
「はい」
「2人で?」
「はい」
「一気に億万長者じゃん」
「同時接続ピーク時20万人」
「20万人?俺の地元の人口より多いじゃん」
「いやでもそうっすよね。ほんとに。で、ね、まあこれはそのめっちゃカメレオンのサーバー代0円ってマジ?っていう聞いたの記事で、この記事でも別にあの正確なアーキテクチャを言ってるわけではなく、え、作者の人たちのインタビューをもとに、え、アーキテクチャこうなってんじゃねって勝手に想像したっていう記事なんですよ」

「ああ、そういう記事なのか、あれ」
「はい、ただのそういう記事なんですけど。とはいえね、そういう、なんて言うんだろうな、このマッチングをさせて箱庭で戦わせる、だからもうスプラトゥーンとかと一緒っすよね。なんか考えてみれば、スプラトゥーンとかフォートナイトとか、あとなんだ、えー、まあ各種FPS、シューティング系の対戦ゲームは全部そうだと思うんですけど、そういうネットゲームってね、サーバー代かかるイメージあるんですけど、これ0円でやってんじゃねって話をしてて、じゃあどうやってやってんのっていうと、まずマッチングは、なんかフォートナイトっていうそのゲームを作った会社が無料でマッチングプラットフォーム解放してるらしいんで、そのマッチングプラットフォームを使って、で、じゃあその、いざ隠れるとか戦うみたいなところはどうしてるのかっていうと、B2Bでやってるんじゃないかっていう話で、それゆえサーバー代かかってないみたいな」
「うんうんうんうん」
「素晴らしいなと思って」
「すごいよね。ほぼ純利益取るでしょ」
「そうですね」
「売上、まあストア代ぐらい。手数料とかかかんのかな」
「手数料とか、でも手数料もね、売上がないと発生しないコストだから」

「そっか」
「わかんにはならないのか」
「ダウンロードのときのは別に何パーとか持ってかれないのかな」
「いや、ダウンロードは何パーか持ってかれると思うんすけど、ただダウンロードしたときには売上あるんで」
「うんうん」
「うん。ほんとに赤には絶対にならない」
「まあそうだね」
「うん。なんかもうすごすぎますよね」

「やばいね。山分けして60億でしょ」
「まあ100パー入ってたらね」
「ああ」
「すごいよな。まあっていうので、なんかその、ここで思ったのは、やっぱなんかミニマムで作るのはやっぱすごく大事ですよね」
「うーん」
「まあさすがにね、多分このインフラで作れるゲームにしよう、あ、まあどっちなんすかね、このインフラで作れるゲームにしようっていう出発点もあったかもしんないですけど、手作り感すごいじゃないですか」
「確かにね」
「ね」

「でもね、これでもね、えー、1500万ダウンロードでしたっけ。そんなね、特大サービス作れたわけですから」
「いやー、なんかチャリソー以来じゃないですか」
「チャリソーよりもやばいんじゃないですか」
「よりやばいんだ」
「チャリソーってだって無料っすよね、基本ね」
「あ、そうだっけ」
「はい、あの元々は。後から有料はありましたけど」
「はいはいはい」

「えー、しかもチャリソーオンラインゲームじゃないですしね」
「まああれは」
「ランキングとかはあったけど。チャリソーでもランキングあったからサーバー代かかってんじゃない?」
「ランキングあったんだ」
「え、ありませんでしたっけ」
「もう全然覚えてないわ」
「ないか。え、ないかもしんない」
「いや、なんかあの当時のゲームってなんかこうもうみんな各々がやって、各々が自分の数字把握してて、そこでもうランキング化するみたいな、なんかセルフランキング感あったからな」

「確かに。まあガラケー時代ですよね、ほんとに」
「うん」
「20年前」
「チャリソーもね、だって計算リソースは全部端末で完結するからね」
「まあそうですね」
「ほぼ」
「まあまあネイティブというか、なんかローカルで動くゲームとかならまあわかるっすけどね。シューティングゲームですから、まあかくれんぼだけど、オンライン対戦オンリーのゲーム性でインフラコストかけないのはね、目からうろこでした」
「でも確かにリアルタイム性とかがそんなにいらなくて」

「いや、どうなんだろうね。とはいえ動けるシューティングゲームなんでそこそこいるとは思うんすけどね。ただ動くゲーム」
「リアルタイムで書き換えるのあれ?」
「あ、はい、そうなってると思いますよ」
「あ、そうなんだ。あ、なんかちょっとね、ゲームルールあんま把握してなくて、なんかてっきり最初にどこ隠れるのも、かくれんぼみたいなもんかと思ってたけど、そういうわけじゃないんだ」
「はい、あの、かくれんぼなんですけど、動けます」
「あ、そうなんだ」
「はい」
「じゃあリアルタイムに書きながら移動してくみたいなこと?」

「えっと、できます。でも基本的には隠れてから書かないと、あの、背景に溶け込めないんで」
「そうだよね」
「はい。白い状態で多分ペタってくっついて、後ろに合わせて書くのが、まあセオリーだとは思うんですけど。まあっていうので、ちょっとリッチすぎない構成を、だけど、えー、それに耐えられるサービスデザイン提案できるような人間になりたいなと思ったので、ちょっと紹介しました」
「うーん。いや、これいつかなんか公式の発表内ならちょっとそこもなんか出てきてほしいっすよね」
「ねー、ほんとに。はい、じゃあ締めます」
「はい」
「ハッシュタグひまじんプログラマーでSNSネックスフィードバック募集してますので、本日のエピソードの感想、えー、あとは」
「めっちゃカメレオンの感想」

「はい、そうっすね」
「やってますって言ったら」
「そうっすね。だいぶいるんじゃないですか」
「そうなんだ」
「1500万本も売れてれば」
「まあそうか、確かに」
「はい。ちょっと私はやってないですけど、えー、感想お願いします」
「お願いします」

「はい。えー、あとはエピソードの説明欄からGoogleフォームで番組の要望感想質問お待ちしてます。え、こちらでもめっちゃカメレオンの感想お待ちしてます」
「あの、そうね、他の人に見られたくない人は、僕らにだけ知られたい人は」
「そうですね」
「はい」
「えー、あとは、えー、エピソードではなくチャンネル説明欄からSlackオンラインコミュニティ、ひまプロ談話室の参加申し込みフォームございますので、えー、こちらのSlackではですね、えーっと、めっちゃカメレオンのチャンネルはございません」
「作ってもいいですよ」
「はい、作ってもいいですよ」
「うん」

「はい。えー、最後に各種ポッドキャストプラットフォームのフォロー、高評価もお願いします」
「こういうのが励みになるんで、ぜひともお願いします」
「はい、それではまた次回」
「バイバイ」
「日本のエンジニアは使うアプリが多すぎる。事実、ひまプロの使用アプリ平均数38.6個。レイキャストならアプリの即起動、過去のコピー履歴を引き出せる。ウィンドウのリサイズなど、これ1つで作業効率アップ。しかも料金無料。今すぐレイキャストで検索」