概要
cscの作法、調べてみた。
練習問題やってみた。
構想編
練習問題
Let's Encryptでjwtを投げてニューアカウントを獲れ。
方針
- xml秘密鍵を準備する。
- json
{
"payload": "eyJyZXNvdXJjZSI6Im5ldy1jZ...",
"protected": "eyJhbGciOiJSUzI1NiIsImp3a...",
"signature": "Mo1ZVEkT_QjsH4Yy98tTm3JEp..."
}
を、https://acme-v02.api.letsencrypt.org/acme/new-acctに、postする。
- "payload": は、
{
"contact": ["mailto:hoge@gmail.com"],
"termsOfServiceAgreed": true
}
を、base64urlしたもの。
- "protected": は、
{
"nonce": "0002cpZ-shmzq4450HB5b_Ou4Ku0Is_RFpPeG2xOltYzJ3o",
"url": "https://acme-v02.api.letsencrypt.org/acme/new-acct",
"alg": "RS256",
"jwk": {
"e": "AQAB",
"kty": "RSA",
"n": "g37tF-kJOoi0zZ5FD8TRw2I3C8U7XAf4hcCNL8H16g8QY5TLtWvOPL18t36ArhcE2j8Bh-S358k17MWX2Vba5x8v38mNcfaAPWNOXOKZwHTISg4iRskgbBdAISpcj1aeNDxNSRCxO6rD_nfv-bs9rbj4U_MActFAYsVRPWNo9dA7j7woi3FseHP8YJyxpJGbD1j2DdCtslieXrycpMrjONlx7BNkb2p6W08ax8C1q3NaF6SnSnBdnIdYpTNdv2UM6GDUEINmKiCUyfHTiF9kkboVxKyP1o2UzHqvkg2RXP8-WFOpDDLw6a5ypgJOfY7XCYPgsCwkzNFnjtCg5lWOHQ"
}
}
を、base64urlしたもの。
-
"signature": は、protected + "." + payload を秘密鍵で署名してbase64urlしたもの。
-
nonceは、https://acme-v02.api.letsencrypt.org/acme/new-nonceのレスポンスヘッダー
Replay-Nonceから取得 -
jwkは、xml秘密鍵から生成する。
-
全て、base64urlエンコードする。
-
termsOfServiceAgreed, url, alg, e, ktyは、固定。
以上。