【问题标题】:How to generate correct RSA key for signing JWT?如何生成正确的 RSA 密钥来签署 JWT?
【发布时间】:2017-12-07 10:51:22
【问题描述】:

我正在使用this example,但是它有点过时了。因此,例如 SignedString(key),我猜,在 RS256 签名方法的情况下,接收 *rsa.PublicKey 而不是 []byte。我使用

生成了我的私钥
openssl genrsa -out key.rsa 1024

现在尝试解析它:

package main

import (
    "fmt"
    "github.com/dgrijalva/jwt-go"
)

func main() {
    pem := []byte(`-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCycI9LZT8qM/zCGH0CNxAi7gy7w1YjqZN1N8yFfbmv9toVC82S
bZDv8NVYVlFNhUbtUFg77TYhHmyPpr4hKqvPrVc0rqVFe4ggQYdXovDgLZhO1MxB
i4vw9tLRlAK8TYNFqaFiX6lFgRp8trd01GFhkBJMzZCMmBQFkcEgWqT6MQIDAQAB
AoGBAKSru5GYnfIUh+2XK8YfioSxqo6cdaHznGFQXS3UGMiKxjcl7VB0TI0hc8FR
5zXjCNF4k/S5tHpb2VO4TT3OYz55/JEOGAXvIMW2UYtL4TwR3+46TRJ95KKowq+c
3JndjmGjUbvWawtbNklkmgoEkLI8wYu9yss9293GBnff14ABAkEA1scxu0svrIZ1
R5YmpXOfrtGwsjbdowGNxZTedWlbJukBSNPSIpuUvkzF2PXlPBS80p5yxbYlp1gg
UhsfXWJwIQJBANSv7lEuHV0QnVVoYVtNijwEHIi7iG7xu7hDQ7bK/kwWV6wqnvfP
PZopZPDXCRlnxbubo0/RJz4LsaJflDJKiBECQC/3FFgrll4FOTPfiInypHq6QafL
MPwyYKL7eCLogH7UEoFdLNSlwjYtlxG4+JTOXMz8rc0RvJ7+w1kSzZJhZYECQHMU
DhqWnQSx7K89nw/L0LPQda/16Eg/O5bjrkvFYfrBTAa3uPPUijxTkW5Oq3m3kGGG
QML7JASKRz7YAFOFyEECQQCUBNONRYMMzzr4llGOcKISXJtewlOPTHGP++OiHWMB
rPzZDyi5ONNgySF8t/QnJMTRpRQ5axi0UhojL/OzUt/w
-----END RSA PRIVATE KEY-----`)

    key, err := jwt.ParseRSAPublicKeyFromPEM(pem)
    fmt.Println(key, err)
}

但我得到了asn1: structure error: tags don't match (16 vs {class:0 tag:2 length:1 isCompound:false}) {optional:false explicit:false application:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false} tbsCertificate @2 的回应。

我的密钥生成命令是否有问题?我应该阅读什么才能调试这个? asn1与它有什么关系? Key 有什么特殊的语法吗?

【问题讨论】:

    标签: go openssl jwt asn.1


    【解决方案1】:

    您传递的是RSA PRIVATE KEY,但调用的是jwt.ParseRSAPublicKeyFromPEM。你应该打电话给jwt.ParseRSAPrivateKeyFromPEM

    【讨论】:

    • 非常感谢!天哪,我怎么错过了这么明显的事情!
    猜你喜欢
    • 2017-11-05
    • 2018-03-27
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2015-05-13
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多