
シン・TWSNMP(TWSNMP FK)にPKI機能をつけるためにGo言語で練習しています
今朝は4時12分に自力で起きました。助手の猫さんは1階のベッドで寝てました。私がコーヒーを淹れていると迷惑そうに起きてきました。開発を始めてすぐの5時ぐらいに休憩と言いにきたので、すこしお世話したら、かみさんの布団に行って寝たようです。
今朝は
を作っていた時に思いついたアイデアを実現するための練習です。
gRPCをTLSやmTLS対応にするためには、秘密鍵と証明書が必要です。テストで使うなら自己署名の証明書でもよいのですが、もう少しちゃんとした証明書を作成する機能を作りたくなりました。
最初は
を利用しようと思っていましたが、ソースコードを読んで実際に動かしてみると多機能すぎるので私の頭では全体を把握できない感じでした。
というのも見つけたのですが、こっちは独自仕様で機能も少ないので使えません。
そこでPKIの仕組みをGo言語で作ってみることにしました。年寄りの脳トレとしては、かなり難しい感じです。基本からと思って調べていたら、
を見つけました。この記事のシリーズを参考にして、最新の技術もいれて練習することにしました。
とりあえず、

までできました。出力したサーバー証明書は
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 3 (0x3)
Signature Algorithm: ecdsa-with-SHA256
Issuer: O=Example Org, CN=intca.example.com
Validity
Not Before: Feb 20 20:57:01 2025 GMT
Not After : Feb 20 20:57:01 2026 GMT
Subject: C=JP, O=Example Org, OU=Example Org Unit, CN=www.example.org
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:91:be:88:90:9a:48:06:8b:90:eb:9a:88:27:77:
bb:d9:04:0d:81:a0:a8:1d:e2:5d:78:ce:5f:51:a4:
b7:b8:0c:75:b3:8b:80:7f:00:6d:98:6e:95:ae:66:
8e:fa:42:c6:a6:3e:2b:aa:4c:8f:ad:36:93:95:80:
7d:b1:36:4a:6f
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Extended Key Usage:
TLS Web Client Authentication, TLS Web Server Authentication
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Authority Key Identifier:
84:AE:8B:94:C3:42:04:32:91:9A:5F:E3:F5:36:9D:C0:D7:D2:0C:57
X509v3 Subject Alternative Name:
DNS:www.example.com, DNS:www.example.co.jp, email:test@examle.com, IP Address:192.168.1.1
X509v3 Key Usage:
Digital Signature, Certificate Sign, CRL Sign
Signature Algorithm: ecdsa-with-SHA256
Signature Value:
30:46:02:21:00:85:d9:ad:f6:12:ec:ca:47:a8:c2:f2:37:0b:
54:ff:2c:9b:61:8d:a2:a5:45:01:5f:0f:06:11:f6:d1:e1:3f:
f6:02:21:00:fa:5e:08:e0:3b:11:8d:d3:ca:e0:ae:2e:e9:8a:
f8:28:ff:0a:65:dc:7d:b5:a9:f6:7a:d2:37:56:58:ea:cf:a5
のような感じです。
かなり、楽しくなってきました。
CRL、OCSP、ACMEとかできたらQiitaの記事の詳しく書こうと思います。
今朝は時間切れです。
明日に続く
いいなと思ったら応援しよう!
