用golang将DSA密钥解析为tls配置对象。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用golang将DSA密钥解析为tls配置对象。相关的知识,希望对你有一定的参考价值。

我有一套DSA客户端私钥、客户端和CA证书文件,我想将其用于kafka-go库。我一直在尝试解析这些文件,但一直没有成功。上述的密钥和证书文件是正确的,因为它们被用在其他地方,虽然是用javascript写的。我一直在尝试用以下方式解析它们。

func NewTLSConfig(clientCertFile, clientKeyFile, caCertFile string) (*tls.Config, error) {
    tlsConfig := tls.Config{}
    cert, err := tls.LoadX509KeyPair(clientCertFile, clientKeyFile
    ...

输入的字符串都是正确的文件路径。这时我得到以下错误。

tls: failed to parse private key

其来自 parsePrivateKey 的函数。检查函数的输入时,似乎没有问题。

cert.PrivateKey, err = parsePrivateKey(keyDERBlock.Bytes)

在检查该函数的输入时,似乎没有问题。键DERBlock 对象被填充,它有一个正确的类型和字节。可能是什么问题?谢谢你!我已经创建了一个小程序,它的类型和字节数都是正确的。

我已经创建了一个小的 Github repo 来说明这个问题。

答案

通过使用RSA密钥而不是DSA来解决这个问题。

以上是关于用golang将DSA密钥解析为tls配置对象。的主要内容,如果未能解决你的问题,请参考以下文章

openssl命令

读取 X.509 密钥或证书文件时出错:解析时出错

OpenSSH的RSA/DSA密钥认证系统

RSA/DSA 密钥的工作原理

如何在 golang 中做代理和 TLS

HTTPS流量解密