windows平台下,openssl的安装,我很早之前也是查资料去安装的,需要openssl源码和perl,以及VS开发工具(具体步骤,大家百度一下吧)。现在已经有现成的安装包了,安装完之后,配置bin目录的环境变量就可以了。
今天用到了一些转换命令,记录一下。
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
set OPENSSL_CONF=C:\openssl-1.0.1c\openssl-1.0.1c\apps\openssl.cnf
生成rsa2048密钥证书和key文件
req -newkey rsa:2048 -nodes -keyout 1.key -x509 -days 365 -out 1.cer
合成pfx
pkcs12 -export -in 1.cer -inkey 1.key -out 1.pfx
将pfx(pfx在openssl命令里只支持der)转为PEM格式(包含私钥和证书)
pkcs12 -in 1.pfx -out key2.pem
证书格式转换(DER--->PEM)
x509 -inform PEM -in 1.cer -outform DER -out 2.cer
生成RSA2048密钥对
genrsa -out rsa.pri 2048
生成SM2密钥对
sm2 genkey -out sm2.pri
从私钥中提取公钥打印或者输出到文件
rsa -in rsa.pri -pubout
rsa -in rsa.pri -pubout -out rsa.pub
生成rsa pkcs10请求
req -new -key rsa.pri
req -new -key sm2.pri
从证书(cer)中获取公钥
x509 -in rsa.cer -pubkey -out rsa.pub
从pkcs10(csr)中获取公钥
x509 -req -in rsa.csr -signkey rsa.pri -pubkey -out rsa.pub
x509 -req -in sm2.csr -signkey sm2.pri -pubkey -out sm2.pub
从pkcs10(csr)生成证书
x509 -req -in rsa.csr -signkey rsa.pri -out rsa.cer
x509 -req -in sm2.csr -signkey sm2.pri -out sm2.cer
SM2证书和RSA证书签发流程:
生成根证书私钥(pem文件)
gmssl ecparam -genkey -name sm2p256v1 -text -out cakey.pem
gmssl genrsa -out cakey.pem 2048
生成根证书签发申请文件(csr文件)
gmssl req -new -key cakey.pem -out ca.csr
自签发根证书(pem文件)
gmssl x509 -req -days 3650 -sm3 -in ca.csr -signkey cakey.pem -out cacert.pem
gmssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey cakey.pem -in ca.csr -out cacert.pem
使用根证书签发服务端证书
gmssl x509 -req -sm3 -days 3650 -CA cacert.pem -CAkey cakey.pem -CAcreateserial -in server.csr -out servercert.pem
gmssl x509 -req -days 3650 -sha1 -extensions v3_req -CA cacert.pem -CAkey cakey.pem -CAserial ca.srl -CAcreateserial -in server.csr -out servercert.pem
使用CA证书验证server端证书,显示“OK”则成功
gmssl verify -CAfile cacert.pem servercert.pem