本篇文章中,将描述如何使用go创建CA,并使用CA签署证书。在使用openssl创建证书时,遵循的步骤是 创建秘钥 >创建CA >生成要颁发证书的秘钥 >使用CA签发证书。这种步骤,那么我们现在就来尝试下。
首先,会从将从创建CA开始。 CA会被用来签署其他证书
接下来需要对证书生成公钥和私钥
然后生成证书:
我们看到的证书内容是PEM编码后的,现在 caBytes 我们有了生成的证书,我们将其进行 PEM 编码以供以后使用:
证书的 x509.Certificate 与CA的 x509.Certificate 属性有稍微不同,需要进行一些修改
为该证书创建私钥和公钥:
有了上述的内容后,可以创建证书并用CA进行签名
要保存成证书格式需要做PEM编码
创建一个 ca.go 里面是创建ca和颁发证书的逻辑
如果需要使用的话,可以引用这些函数
panic: x509: unsupported public key type: rsa.PublicKey
这里是因为 x509.CreateCertificate 的参数 privatekey 需要传入引用变量,而传入的是一个普通变量
extendedKeyUsage :增强型密钥用法(参见"new_oids"字段):服务器身份验证、客户端身份验证、时间戳。
keyUsage : 密钥用法,防否认(nonRepudiation)、数字签名(digitalSignature)、密钥加密(keyEncipherment)。
文章来自https://www.cnblogs.com/Cylon/p/16436126.html
jks转为p12,然后再将p12转为pem AndroidStudio使用keystore文件对APK进行签名,但快应用中要求使用PEM文件对RPK进行签名。 现有demo.jks,证书密码为demopwd,转换成pem之后依然使用demopwd作为密码。 提取公钥: 切换到jks证书的存储路径,执行如下命令:keytool -list -rfc -keystore demo.jks -storepass demopwd 如果出现下图的错误提示: 那么请把demo.jks文件拷贝到与keytool.exe文件同目录下,keytool在jdk的bin目录下,拷贝之后cmd切换到bin目录重新执行刚才的命令 然后就能在命令行中看到打印的公钥内容(也即Certificate),如下图 提取私钥: jks文件中的私钥不能直接得到,需要通过openssl将jks文件转换成pkcs12格式后再进行提取。 执行如下命令将demo.jks文件转换成demo.pfx文件: keytool -v -importkeystore -srckeystore demo.jks -srcstoretype jks -srcstorepass demopwd -destkeystore demo.pfx -deststoretype pkcs12 -deststorepass demopwd -destkeypass demopwd 命令执行完成后目录下就会多了一个demo.pfx文件。 然后,执行如下命令便可以将demo.pfx的私钥导出: openssl pkcs12 -in demo.pfx -nocerts -nodes -out demo.key 输入密码后会生成一个demo.key文件,打开查看内容