go - 如何在 go 中从 jwk 生成 pem

标签 go pem jwk

<分区>

我正在尝试使用 github.com/lestrrat-go/jwx/jwk 生成 pem 字符串.

但到目前为止我还不能,我猜这是因为我是新手,有些事情我不明白。 我经历了the relevant examples of this library .

我的代码从服务器获取一个 JWK,一旦我拥有它,我就尝试在此处生成一个 pem 字符串:

// validationCrt contains my []byte from the server
set, err := jwk.Parse(validationCrt)
if err != nil {
    println(err)
}

// I suspect this piece of code is actually a mess
// but I just can't understand what I'm doing wrong
key, err := jwk.GetPublicKey(set)
if err != nil {
    log.Printf("failed to create public key: %s", err)
}

我真的迷路了我尝试了多种方法(有和没有这个库),似乎我找不到任何例子(他们通常解释如何生成 key ,或者从 pem 到 jwt,但是我的 Go应用程序是一个客户端。)

最佳答案

授权服务器通常会提供一个端点来获取 JSON Web Keyset (JWKS)。所以我认为 validationCrt 确实是一个 JSON Web Keyset。不过,您可以json.Unmarshal() 到JWK/JWKS ( square/go-jose ) 并通过.Key 获取公钥的引用。

获取 PEM 格式非常简单

...
pubData, err := x509.MarshalPKIXPublicKey(pubKey)
if err != nil {
    return err
}
if err := pem.Encode(os.Stdout, &pem.Block{
    Type:  "PUBLIC KEY",
    Bytes: pubData,
}); err != nil {
    return err
}
...

关于go - 如何在 go 中从 jwk 生成 pem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55586188/

相关文章:

c# - 如何在 C# 中正确使用 OpenID Connect jwks_uri 元数据?

go - Golang 中的 "instanceof"等效项

go - 使用 cgo 将字符串传递给 win32 函数

html - 如何转换HTML标签中的转义字符?

java - 无法加载 .pem 私钥

go - 我已经设置了我的 $GOPATH,但它不起作用

c# - 如何使用.net core c#保存pfx文件

C++ OpenSSL 导出私钥

jwk - 任何人都可以解释生成 key 时 jwk 的字典中有哪些 key