【问题标题】:Parsing DSA key with golang into tls config object使用 golang 将 DSA 密钥解析为 tls 配置对象
【发布时间】:2020-08-02 03:43:43
【问题描述】:

我有一组 DSA 客户端私钥、客户端和 CA 证书文件,我想将其与 kafka-go 库一起使用。我一直在尝试解析文件,但没有成功。上述密钥和证书文件是正确的,因为它们正在其他地方使用,但用 Javascript 编写。我一直在尝试以以下方式解析它们:

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

字符串输入是正确的文件路径。此时我收到以下错误:

tls: 解析私钥失败

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

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

keyDERBlock 对象已填充,它具有正确的类型和字节。可能是什么问题?谢谢!

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

【问题讨论】:

  • 我们无法轻松调试不完整的 sn-ps。提供一个完整的可验证示例。
  • 该函数需要文件路径作为输入,例如不确定如何使用 go playground 重现它。我可以创建一个简单的 git repo 来说明问题:)
  • 一个好主意。最好在此处包含代码。我认为当您尝试将错误的最小再现放在一起时,您很有可能会发现解决方案 - 我通常会这样做。
  • 是的,公平点。我在这里创建了一个小仓库:github.com/donfrigo/dsa-error。提前谢谢!
  • 嗨,有人找到解决方案了吗? Go TLS 是否不支持 DSA?谢谢!

标签: go ssl apache-kafka private-key dsa


【解决方案1】:

已通过使用 RSA 密钥而不是 DSA 解决了该问题。

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2021-09-16
    • 2013-12-02
    • 2013-05-07
    • 2015-11-12
    • 2019-05-03
    • 2013-09-20
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多