同样的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