简介: 前一段时间,跟农商行对接领取接口,忽然来了一个pfx格局的证书,我过后就懵逼了,因为网上针对于golang解析pfx的文章基本就没有用,只能本人钻研了,如果对你有帮忙的话,请点个赞吧

package mainfunc 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}