見出し画像

Go言語でPKI入門 5日目:ACMEサーバーを作っています

今朝も3時台に起きました。助手の猫さんは、夜中にやってきて、かみさんの布団で寝ていました。4時過ぎに休憩と言って騒いでいたので、少しお世話したら、また、布団に戻って寝ました。
この3日間、かみさんに

を貸しています。かみさんの睡眠スコアは90点台です。昨日ワインを飲んで寝たら58点になっていました。私がビールを我慢して記録した70点台です。ビール+焼酎を飲んで寝たら30点でした。ちなみにノンアルのび~るでも40点台でした。かみさんと猫さんは毎日熟睡しているかと思うと、悔しい気がします。

昨日までに学習したACMEのテストサーバーを作り始めました。暗号技術を使ったプログラムは、かなりの脳トレになります。
主に、step caのソースコード

を参考にしていますが、Let`s EncryptのACMEサーバー

のソースコードも参考にしています。

クライアントは

のソースコードからテストプログラムを作っています。
作るサーバーのおさらいですが、

です。
ここで、さっぱりわからなかったのが、

メッセージはJSON Web Signature(JWS)

のところです。JWSで探してもあんまり見つかりません。先ほどのACMEのサーバーとクライアントのソースコードを真面目に読んでみると、どうやら
両方ともgo-jose

というパッケージを使っていることがわかりました。

JSON Web Encryption(JWE), JSON Web Signature(JWS),  JSON Web Token (JWT)の3つの標準に対応したパッケージです。暗号、署名、トークンの3つを含んでいます。
step caのソースコードを真似して処理を作ってメッセージが取り出せませした。

これがわかると、あとはHTTPSのリクエストを処理してけば、何となく動作するACMEサーバーになっていきます。
とりあえず、今朝の時点で

の赤枠までリクエストの処理ができました。クライアントにHTTPのリクエストを送って検証する処理と証明書の発行は、まだですが、かなりACMEサーバーの中身が理解できたような気がします。

何だか、悪い人が諦めるように通信の仕様を、どんどん複雑にしているような気がします。
step caのソースコードも、だいぶ読めるようになってきました。何となく効率の悪い部分も見えてきました。

明日に続く

いいなと思ったら応援しよう!

twsnmp
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。