golang解析pfx证书文件,获得证书私钥

JiBadBoy · · 1826 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

简介: 前一段时间,跟农商行对接支付接口,突然来了一个pfx格式的证书,我当时就懵逼了,因为网上针对于golang解析pfx的文章根本就没有用,只能自己研究了,如果对你有帮助的话,请点个赞吧


package main

func main () {
    getPrivateKey("key/request_key/test.pfx","test")
}

func getPrivateKey(privateKeyName, privatePassword string) (*rsa.PrivateKey, error) {
    f, err := os.Open(privateKeyName)
    if err != nil {
        return nil, err
    }

    bytes, err := ioutil.ReadAll(f)
    if err != nil {
        return nil, err
    }
    // 因为pfx证书公钥和密钥是成对的,所以要先转成pem.Block
    blocks,  err := pkcs12.ToPEM(bytes, privatePassword)
    if err != nil {
        return nil, err
    }
    if len(blocks) != 2 {
        return nil, errors.New("解密错误")
    }
    // 拿到第一个block,用x509解析出私钥(当然公钥也是可以的)
    privateKey, err := x509.ParsePKCS1PrivateKey(blocks[0].Bytes)
    if err != nil {
        return nil, err
    }
    return privateKey, nil
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:JiBadBoy

查看原文:golang解析pfx证书文件,获得证书私钥

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1826 次点击  
加入收藏 微博
1 回复  |  直到 2021-03-29 16:39:49
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传