我正在使用x/crypto/pkcs12加载DER格式的* .p12文件。有一个an example in the documentation,它使用tls.X509KeyPair生成可以用于HTTP客户端的tls.Certificate

那是完美的,并且工作正常。但是然后,我还想验证证书尚未过期。 pkcs12库也有一个Decode function,它返回一个x509证书,然后我可以在其上使用Verify方法。这也很好。

对我来说两次解码DER似乎让我感到奇怪。一次用于x509.Certificate进行验证,然后再次获得tls.Certificate。我不知道这两个证书结构之间的关系,但是看到tls包具有一个名为tls.X509KeyPair的函数,该函数占用一些字节,因此不应该有一种明显的方法来从x509获取tls.Certificate。证书还是签证?我想念什么?

最佳答案

tls.Certificate通常存储一个证书链-换句话说,> 1个证书。注意,其Certificate字段的类型为[][]byte,其中每个证书都是[]byte

tls包会导入x509包,因此x509中没有获取tls.Certificate的函数;这将导致导入周期。但是,如果您有一个x509.Certificate,那么您已经有一个tls.Certificate;只需将x509.Certificate的Raw字节放入tls.Certificate的Certificate slice 中即可。

关于go - 如何在Go中将x509.Certificate转换为tls.Certificate?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34192230/

10-10 10:35