更新时间:2023-11-15 GMT+08:00
分享

生成证书

合作伙伴可以购买使用商业CA签发的证书,也可以使用OpenSSL工具生成的免费证书。对于使用OpenSSL工具生成证书的命令较多,这里给出推荐的生成证书的OpenSSL命令供参考。

  1. 生成CA的RSA公私钥对。

    命令:openssl genrsa [-out filename] [-aes256] [numbits]

    样例:openssl genrsa -out CAkey.pem -aes256 2048

    命令执行时会在OpenSSL界面上提示用户自己手动输入生成的私钥文件的保护口令。该口令会自动派生出加密密钥,对私钥文件做加密保护。

    表1 生成CA的RSA公私钥对参数说明

    参数

    说明

    [-out filename]

    输出的存放公私钥对的文件名及路径。

    [-aes256]

    表明私钥文件的加密算法是AES256-CBC。

    这里也可以选择-des、-des3、-aes128、-idea等加密算法,对称加密算法建议使用:AES(128位及以上),所以这里我们推荐使用-aes256加密算法。如果在生成公私钥对的命令中不指定加密算法,则生成的公私钥文件是没有口令保护的。

    [numbers]

    指生成的公私钥对的长度,非对称加密算法建议使用:RSA(2048位及以上),所以这里推荐的公私钥对长度为2048bit。

  2. 使用CA自己的私钥签发自签名CA根证书。

    命令:openssl req [-x509] [-new] [-key filename] [-out filename] [-md2|-md5|-sha1|-mdc2|-sha256] [-days n] [-config path of openssl.cnf]

    样例:openssl req -x509 -new -key CAkey.pem -sha256 -out CA.pem -days 3650 -config openssl.cnf

    样例中的“Cakey.pem”为1中生成的私钥文件。命令执行时会在OpenSSL界面上提示用户自己手动输入1生成的私钥文件的保护口令以及输入证书申请者的信息值。

    表2 使用CA自己的私钥签发自签名CA根证书参数说明

    参数

    说明

    [-x509]

    本参数将产生自签名的证书,即Root CA根证书,证书的扩展项在config文件里面指定。

    [-new]

    本参数产生一个新的证书请求文件CSR(Certificate Secure Request,如果该参数和-x509参数一起使用,则是生成一个自签名的根证书文件),它会要用户输入创建CSR的一些必须的信息。至于需要哪些信息,是在config文件里面定义好了的。

    [-key filename]

    指定证书私钥文件的来源。允许该文件的格式是PKCS#8。

    [-out filename]

    输出证书请求文件(如果前面有-x509参数,则表明此处输出的是自签名根证书文件),默认为标准输出。

    [-md2|-md5|-sha1|-mdc2|-sha256]

    指定证书的哈希算法,建议签名场景使用SHA256,另外因为在1中生成的是RSA的公私钥对,所以此处的签名算法为SHA256RSA。

    [-days n]

    指定被签名证书的有效期限。如果不指定该参数,则生成证书的有效期默认为30天。一般我们建议生成的证书有效期为10年,即n取值为3650。

    [-config path of openssl.cnf]

    指定openssl.cnf配置文件的绝对路径和文件名。

  3. 生成设备证书的公私钥对。

    生成设备证书公私钥对的命令,同生成CA证书公私钥对的命令。

    样例:openssl genrsa -out Devicekey.pem -aes256 2048

    这里的Devicekey.pem为存放设备证书公私钥的文件。命令执行时会在OpenSSL界面上提示用户自己手动输入生成的私钥文件的保护口令。该口令会自动派生出加密密钥,对私钥文件做加密保护。

  4. 生成设备证书的证书请求文件。

    命令:openssl req [-new] [-key filename] [-out filename] [-config path of openssl.cnf]

    样例:openssl req -new -key Devicekey.pem -out DeviceCert.csr -config openssl.cnf

    样例中的“Devicekey.pem”为3中生成的私钥文件。命令执行时会在OpenSSL界面上提示用户自己手动输入3生成的私钥文件的保护口令以及输入证书申请者的信息值。

    命令中的参数说明请参见表2

  5. 使用CA私钥签发设备证书。

    命令:openssl x509 [-req] [-in filename] [-out filename] [-CA filename] [-CAkey filename] [-md2|-md5|-sha1|-mdc2|-sha256] [-days arg] [-CAcreateserial] [-extfile filename] [-extensions v3_req]

    样例:openssl x509 -req -in DeviceCert.csr -out DeviceCert.pem -CA CA.pem -CAkey CAkey.pem -sha256 -days 3650 -CAcreateserial -extensions v3_req -extfile openssl.cnf

    命令执行时会在OpenSSL界面上提示用户自己手动输入1生成的根CA私钥文件的保护口令。

    表3 使用CA私钥签发设备证书参数说明

    参数

    说明

    [-req]

    在x509命令中,该参数说明输入文件(“-in”参数后面的文件)是证书请求文件CSR。

    [-in filename]

    指定输入文件名,这里我们输入的文件是4中生成的设备证书请求文件。

    [-out filename]

    指定输出文件名,这里指被签名后的设备证书文件。

    [-CA filename]

    指定签名用的CA的证书文件名,即2中生成的证书请求文件。

    [-CAkey filename]

    指定CA私有密钥文件,即1生成CA的RSA公私钥对。

    [-md2|-md5|-sha1|-mdc2|-sha256]

    指定证书的哈希算法,建议签名场景使用SHA256,另外因为在1中生成的是RSA的公私钥对,所以此处的签名算法为SHA256RSA。

    [-days n]

    指定被签名证书的有效期限。如果不指定该参数,则生成证书的有效期默认为30天。一般我们建议生成的证书有效期为10年,即n取值为3650。

    [-CAcreateserial]

    如果没有CA系列号文件(默认文件名为CA.srl),那么本option将生成一个,如果有默认的CA.srl文件,则直接使用该文件,且以后每签发一个证书,序列号增加1。

    [-extfile filename]

    指定包含证书扩展项的文件名,这里为openssl.cnf文件。如果没有该参数,那么生成的证书将没有任何扩展项,即生成的是x.509 v1版本的证书。

    [-extensions section]

    指定签发的证书文件中包含要增加的扩展项,如果不指定该参数,则默认为v3_ca,即CA根证书,这里要签发设备证书,所以此处的section取值为v3_req,代表生成的证书中证书的基本约束是“Subject Type=End Entity”,即该证书是终端实体证书。

  6. 5中生成的DeviceCert.pem文件正文去头尾即为IDP Metadata.xml示例(使用UTF-8编码保存)<ds:X509Certificate> </ds:X509Certificate>内的值

相关文档