最近做一个项目,需要用到自签名数字证书链。于是就研究了一下自签名数字证书链实现,把相关的OpenSSL命令放在下面供大家查询。这篇文章中证书采用的是ECDSA算法,如果要使用其它算法,如RSA算法,只需要将-newkey后面的参数ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-256)替换成rsa:2048或rsa:4096即可。 -extfile指定配置文件路径,/etc/ssl/openssl.cnf为openssl自带的默认配置文件,可以根据自己系统情况调整路径,可以使用find命令进行查找。
创建root ca并自签名
openssl req -x509 -newkey rsa:2048 -nodes -keyout rca.key -out rca.crt -days 3650 -subj “/C=CN/ST=HuBei/L=WuHan/O=dev/OU=OpenHarmony/CN=RCA”
创建vendor ca的证书签名请求
openssl req -new -newkey rsa:2048 -nodes -keyout vca.key -out vca.csr -subj “/C=CN/ST=HuBei/L=WuHan/O=dev/OU=OpenHarmony/CN=VCA”
使用root ca签发vendor ca的证书签名请求
openssl x509 -req -in vca.csr -CA rca.crt -CAkey rca.key -CAcreateserial -out vca.crt -days 3650 -extfile /etc/ssl/openssl.cnf -extensions v3_req
创建product ca的证书签名请求
openssl req -new -newkey rsa:2048 -nodes -keyout pca.key -out pca.csr -subj “/C=CN/ST=HuBei/L=WuHan/O=dev/OU=OpenHarmony/CN=PCA”
使用vendor ca签发product ca的证书签名请求
openssl x509 -req -in pca.csr -CA vca.crt -CAkey vca.key -CAcreateserial -out pca.crt -days 3650 -extfile /etc/ssl/openssl.cnf -extensions v3_req
创建device certificate的证书签名请求
openssl req -new -newkey rsa:2048 -nodes -keyout dac.key -out dac.csr -subj “/C=CN/ST=HuBei/L=WuHan/O=dev/OU=OpenHarmony/CN=DAC”
用product ca签发device certificate的证书签名请求
openssl x509 -req -in dac.csr -CA pca.crt -CAkey pca.key -CAcreateserial -out dac.crt -days 3650 -extfile /etc/ssl/openssl.cnf -extensions v3_req
-extfile 指定配置文件路径,/etc/ssl/openssl.cnf
-extensions指定配置文件中v3_req部分
v3_req对应/etc/ssl/openssl.cnf下面部分,此部分为V3证书的扩展字段,可以自己调整比如:
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer