2017-12-07 9 views
1

私はthis exampleを使用していますが、少し古いです。だから、例えばSignedString(key)の場合、RS256署名方法の場合は[]byteの代わりに*rsa.PublicKeyを受け取ります。私はJWTに署名するための正しいRSA鍵を生成するには?

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とは何が関係していますか?キーには特定の構文がありますか?

答えて

1

RSA PRIVATE KEYを渡していますが、jwt.ParseRSAPublicKeyFromPEMを呼び出しています。代わりにjwt.ParseRSAPrivateKeyFromPEMに電話する必要があります。

+0

ありがとうございました! OMG、どうやって私はこれほど明白な何かを逃した! – Bunyk

関連する問題