如何生成CA证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何生成CA证书相关的知识,希望对你有一定的参考价值。

参考技术A

    创建根证书密钥文件(自己做CA)root.key:

    创建根证书的申请文件root.csr:

    创建一个自当前日期起为期十年的根证书root.crt:

    创建服务器证书密钥server.key:

    创建服务器证书的申请文件server.csr

    创建自当前日期起有效期为期两年的服务器证书server.crt

    创建客户端证书密钥文件client.key

    创建客户端证书的申请文件client.csr

    创建一个自当前日期起有效期为两年的客户端证书client.crt

    将客户端证书文件client.crt和客户端证书密钥文件client.key合并成客户端证书安装包client.pfx

    保存生成的文件备用,其中server.crt和server.key是配置单向SSL时需要使用的证书文件,client.crt是配置双向SSL时需要使用的证书文件,client.pfx是配置双向SSL时需要客户端安装的证书文件 .crt文件和.key可以合到一个文件里面,把2个文件合成了一个.pem文件(直接拷贝过去就行了)

x509证书一般会用到三类文,key,csr,crt。

Key是私用密钥openssl格,通常是rsa算法。

Csr是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。

crt是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。 

1.key的生成 

opensslgenrsa -des3 -out server.key 2048 

这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:

opensslrsa -in server.key -out server.key 

server.key就是没有密码的版本了。 

2.生成CA的crt

opensslreq -new -x509 -key server.key -out ca.crt -days3650 

生成的ca.crt文件是用来签署下面的server.csr文件。 

3.csr的生成方法

opensslreq -new -key server.key -outserver.csr 

需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。 

4.crt生成方法

CSR文件必须有CA的签名才可形成证书,可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢。

opensslx509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key-CAcreateserial -out server.crt

输入key的密钥后,完成证书生成。-CA选项指明用于被签名的csr证书,-CAkey选项指明用于签名的密钥,-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成。

最后生成了私用密钥:server.key和自己认证的SSL证书:server.crt

证书合并:

catserver.key server.crt > server.pem

通过Go语言创建CA与签发证书

参考技术A

本篇文章中,将描述如何使用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

以上是关于如何生成CA证书的主要内容,如果未能解决你的问题,请参考以下文章

通过Go语言创建CA与签发证书

如何生成自签名双向认证证书 ssl

如何使用CA证书进行https连接

如何创建一个自签名的SSL证书(X509)

使用 OpenSSL 创建私有 CA:3 用户证书

数字证书生成时提交的信息是如何保密传送的