【发布时间】:2021-09-16 18:56:15
【问题描述】:
我正在尝试使用 golang (https://pkg.go.dev/golang.org/x/crypto/ssh#ParseRawPrivateKey) 的 ssh 包中的 ParseRawPrivateKey()。文档声明它同时支持 PKCS1 和 PKCS8 类型。我有两种类型的键:
- 私钥 (PKCS8)
- RSA 私钥 (PKCS1)
但是我收到以下 PKCS8 类型的错误。它适用于“RSA PRIVATE KEY”类型:
ssh: unsupported key type "PRIVATE KEY"
请告诉我为什么这不起作用,并帮助我解析这两种键的类型。我使用的 Go 版本是 1.11.13。
我试图解析密钥文件的部分代码如下。以下代码中的错误是我看到上述错误的地方:
buf, _ := ioutil.ReadFile(<keyfile>)
key, err := ssh.ParseRawPrivateKey(buf)
signer, _ := ssh.NewSignerFromKey(key)
以下是关键文件:
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
和
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
【问题讨论】:
-
您应该发布您的 Go 代码和导致问题的 PKCS#8 测试密钥。
-
感谢您的宝贵时间。这是因为go版本吗?我正在使用 go1.11.13。这个游乐场使用 go1.16.5
-
Go 1.11 已经相当老了,这一点,它不再受支持。我建议您尝试使用更新的版本。查看pkg.go.dev/golang.org/dl@v0.0.0-20210610154546-0cc6883720ee/…。
-
我不能肯定。但是如果链接的代码没有在你的环境中运行,那将是一个合理的结论。
标签: go rsa ssh-keys pkcs#8 pkcs#1