在go中解析证书字符串

时间:2016-10-17 10:20:12

标签: go x509

我使用ssldump在通信中提取证书。当我解析结果时,我获得了一个定义为:

的字符串
var string certStr
certStr = "30 82 06 9f...."

如何将其解析为X509证书?

已更新

我试图直接解析它:

certSlc := []byte(certStr)
cert,err := x509.ParseCertificates(certSlc)

但结果是:

Error:asn1: structure error: tags don't match (16 vs {class:0 tag:19 length:48 isCompound:true}) {optional:false explicit:false application:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false}

我应该进行另一种转换吗?可能是字符串不完整还是错误的证书类型?

1 个答案:

答案 0 :(得分:2)

我发现了错误。问题出在源头。 正如我所解释的那样,我的证书字符串是&#34; 30 82 06 09 ...&#34;。必须使用以下内容解码此源:

hex.DecodeString(certStr)

问题是十六进制解码不适用于这种格式。我得到的错误是:

encoding/hex: invalid byte: U+0020 ' '

因此,删除原始字符串中的空格和回车符是使其工作的解决方案。

在字节切片中解码后,可以毫无问题地创建X509证书。