2016-10-17 10 views
0

私はssldumpを使って通信の証明書を抽出しています。証明書の文字列を解析する

私はX509証明書にそれを解析することができますどのように
var string certStr 
certStr = "30 82 06 9f...." 

:私は結果を解析すると、私は以下のように定義、外出先での文字列を取得しますか?

は、私が直接それを解析しようとしてい

を更新:

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} 

私は変換の別の種類を行うべきでしょうか?多分文字列が不完全であるか間違ったタイプの証明書を持っていますか?

+0

多分このパッケージを見て:https://golang.org/pkg/crypto/x509/ 希望に役立ちます。 – Depado

+0

はい、私はすでにクラスを見ましたが、私はParseCertificatesを使用するときにフォーマットエラーが発生しています。 問題は、文字列からバイトスライスを正しく生成できないことです。 – MrReboot

+0

詳細を教えてください。どのように文字列のバイトスライスを変換していますか?より多くのコードを提供し、あなたが試したもの/使用しなかったものを表示できますか? – Depado

答えて

1

エラーが見つかりました。問題はソースにありました。 私が説明していたように、私の証明書の文字列は "30 82 06 09 ..."でした。このソースは、次のようにデコードする必要があります。

hex.DecodeString(certStr) 

問題は、16進デコードがこの形式では機能しないことです。私が得たエラーだった:

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

ので、元の文字列に空白や改行を削除すると、それを動作させるためのソリューションです。

バイトスライスでデコードした後、問題なくX509証明書を作成できます。