Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何生成用于签名JWT的正确RSA密钥?_Go_Openssl_Jwt_Asn.1 - Fatal编程技术网

Go 如何生成用于签名JWT的正确RSA密钥?

Go 如何生成用于签名JWT的正确RSA密钥?,go,openssl,jwt,asn.1,Go,Openssl,Jwt,Asn.1,我正在使用,但它有点过时。因此,例如,在RS256签名方法的情况下,SignedString(key)接收的是*rsa.PublicKey,而不是[]字节。我使用 openssl genrsa -out key.rsa 1024 现在尝试解析它: package main import ( "fmt" "github.com/dgrijalva/jwt-go" ) func main() { pem := []byte(`-----BEGIN RSA PRIVATE

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

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不匹配(16 vs{class:0 tag:2 length:1 isCompound:false}{optional:false explicit:false application:false defaultValue:tag:stringType:0 timeType:0 set:false省略空:false}tbsCertificate@2
作为响应


我的密钥生成命令是否有误?我应该读什么才能调试它?asn1和它有什么关系?密钥有一些特殊的语法?

您正在传递一个
RSA私钥
,但调用
jwt.ParseRSAPublicKeyFromPEM
。您应该调用
jwt.ParseRSAPrivateKeyFromPEM

非常感谢!天哪,我错过了这么明显的事情!