2 回答
TA贡献1911条经验 获得超7个赞
TA贡献1886条经验 获得超2个赞
为遇到相同问题的任何人提供更长的解释。
什么会起作用
你的第一个命令
openssl genrsa -out file.pem -passout pass:file -aes256 1024
生成一个 PKCS#1 私钥文件(file.pem):
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,1DA219DB746F88C6DDA0D852A0FD3232
AEf09rGkgGEJ79GgO4dEVsArwv4IbbODlxy95uHhfkdGYmuk6OlTpiCUE0GT68wn
KFJfBcHr8Z3VqiHGsXxM5QlKhgnfptxfbrdKErgBD5LQcrvnqmf43KeD4lGQcpiy
...
...
mAKMCwiU/GKZz8ZwQ4qGkBlVVCOFfgwmfbqguJF2l8yzM8lYI9MZ9NEwKkvEbc
-----END RSA PRIVATE KEY-----
这个私钥文件可以被x509.DecryptPEMBlock()解析和解密。
什么行不通,为什么
你的第二个命令
openssl pkcs8 -topk8 -inform pem -in file.pem -outform pem -out filePKCS8.pem
将该文件转换为 PKCS#8 格式 (filePKCS8.pem)。
子命令genpkey将直接产生类似的结果:
openssl genpkey -algorithm RSA -aes256 \
-pkeyopt rsa_keygen_bits:1024 -out filePKCS8.pem
生成的 filePKCS8.pem(无论哪种方式)都类似于:
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIISrTBXBgkqhkiG9w0BBQ0wSjKpBgkqhkiG9w0BBQwwHAQIKL+ordsVfqsCAggB
MAwGCCqGSIb3DQIJCQAwHQYJYIZIWAUDBAEqBBCipOAAxWkC0/zkNLNYTSMgBIIS
...
...
zfdxjZ0XmPiwED2azsLMnRrWnRj2UqMtnv9zO/ucik9za
-----END ENCRYPTED PRIVATE KEY-----
x509.DecryptPEMBlock()不支持这种格式。正如#8860所指定的,Go 的核心库在不久的将来没有真正支持 pkcs#8 的计划。
正如Gregory所提到的,如果您想使用它,那么使用github.com/youmark/pkcs8(文档)等 3rd 方库会更好。
- 2 回答
- 0 关注
- 633 浏览
添加回答
举报