
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のソースコードも、だいぶ読めるようになってきました。何となく効率の悪い部分も見えてきました。
明日に続く
いいなと思ったら応援しよう!
