我正在尝试使用Go-in-one实用程序创建可创建csr的文件,然后发送它,然后(由安全人员批准后)获得签名证书,最后创建证书+私有证书以将其添加到浏览器或系统中。
现在,我可以做所有事情直到最终完成:在签名证书中添加私有证书。使用openssl我可以通过以下方式做到这一点:
openssl pkcs12 -export -out sergo.kurbanov.p12 -in sergo.kurbanov.crt -inkey sergo.kurbanov.key -name "Sergo Kurbanov"
有人可以在Go中建议如何做吗?
P.S。我正在使用Dogtag证书系统
答案 0 :(得分:0)
我找到了决定:不幸的是,标准的Go pkcs12库没有包含所需的功能,但是有HashiCorp的版本“ github.com/hashicorp/packer/builder/azure/pkcs12” 程序包功能:
// Read our key created by openssl genrsa -out... or by Go
// rsa.GenerateKey/EncryptPEMBlock...
pemKey,_ := ioutil.ReadFile("private.key")
// Convert pem to rsa key because it required for pkcs12.Encode
var rsaKey *rsa.PrivateKey
rsaKey,_ = dogtag.PemToRSA(pemKey,"our_private_secret")
// Get signed cert from dogtag CMS
var cert *x509.Certificate
cert,_ = dogtag.GetCert("0xF0F05A8")
// Create combined certificate
pfx,_ := pkcs12.Encode(cert.Raw, pemKey, "somesecret")
outFile,_ := os.Create("priv_plus_cert.p12")
defer outFile.Close()
outFile.Write(pfx)
最后,我们获得了适合添加到钥匙串或浏览器的证书。