同样的X.509证书,可能有不同的编码格式,目前有以下两种编码格式.
PEM - Privacy Enhanced Mail,打开看文本格式,以"—–BEGIN…“开头, “—–END…“结尾,内容是BASE64编码. 查看PEM格式证书的信息:openssl x509 -in certificate.pem -text -noout Apache和*NIX服务器偏向于使用这种编码格式.
DER - Distinguished Encoding Rules,打开看是二进制格式,不可读. 查看DER格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout Java和Windows服务器偏向于使用这种编码格式.
PEM转为DER openssl x509 -in cert.crt -outform der -out cert.der
DER转为PEM openssl x509 -in cert.crt -inform der -outform pem -out cert.pem (提示:要转换KEY文件也类似,只不过把x509换成rsa,要转CSR的话,把x509换成req…)
显示摘要信息
单向加密
openssl dgst -md5[-sha1...] /file
加密字符串
对称加密,使用base64编码(进行文本编码,加密完有可能是二进制格式),默认从标准输入读
echo 'xxx' | openssl enc -base64 -加密算法 [-e]
解密字符串
对称加密,使用base64编码(进行文本编码,加密完有可能是二进制格式),默认到标准输出
echo 'xxx' | openssl enc -base64 -加密算法 -d
生成num字节随机数
openssl rand -hex[-base64] num
num:字节数。-hex时,每个字符4bit,出现字符数num*2
生成私钥
openssl genrsa -out /file
(umask077;openssl genrsa -out xxx ) 在子shell设置umask并执行命令,生成密匙对。
从私钥提取公钥
openssl rsa -in /file -pubout
ssh-keygen -y -f key
openssl生成RSA私钥和ssh-keygen的RSA私钥又相同的格式,但是公钥格式却不相同
使用ssh-keygen将公钥转换成ssh格式
ssh-keygen -f openssl.pub -i -mPKCS8
根据私钥生成证书请求文件csr
openssl req -new -key pri_key.pem -out req1.csr
其中”-new"表示新生成一个新的证书请求文件,"-key"指定私钥文件,"-out"指定输出文件,此处输出文件即为证书请求文件
根据证书请求文件csr提取公钥
openssl req -in req.csr -pubkey -noout -out pub_key.pem
openssl req -in req.csr -pubkey -out pub_key.pem
自签署证书,可用于自建根CA
openssl req -x509 -new -key -pri_key.pem -out ca.crt -days 365
openssl req -x509 -new -key -pri_key.pem -in req1.csr -out ca.crt -days 365
创建csr/crt时自动创建所需私钥并保存,-nodes选项不加密私钥
openssl req -new -out req.csr -keyout test.pem -nodes
openssl req -new -x509 -out ca.crt -days 365 -keyout test1.pem -nodes
查看证书请求文件csr,并打印内容
openssl req -in req.csr -text
查看证书文件crt,并打印内容
openssl x509 -in ca.crt -text