一、标准命令
在终端输入命令:openssl list-standard-commands
,结果如下:
- asn1parse,一种用来诊断ASN.1结构的工具,也能用于从ASN1.1数据中提取数据。
- ca
- ciphers
- cms
- crl
- crl2pkcs7
- dgst
- dh
- dhparam
- dsa
- dsaparam
- ec
- ecparam
- enc
- engine
- errstr
- gendh
- gendsa
- genpkey
- genrsa,用于生成RSA私钥,不会生成公钥,因为公钥提取自私钥。
`用法`:
openssl genrsa [-des|-des3|-aes128|-aes192|-aes256] [-passout arg] [-out filename] [numbits]
`选项说明`:
-[des|des3|aes128|aes192|aes256]: 私钥加密算法(对称加密)。
-passout arg:加密私钥文件时,传递密码的格式,如果要加密私钥文件时单未指定该项,则提示输入密码。arg的格式如下:
pass:password:password表示传递的明文密码。
env:var:从环境变量var获取密码值。
file:filename:filename文件中的第一行为要传递的密码。若filename同时传递给"-passin"和"-passout"选项,则filename的第一行为"-passin"的值,第二行为"-passout"的值。
stdin:从标准输入中获取要传递的密码。
-out filename:将生成的私钥保存至filename文件,若未指定输出文件,则为标准输出。
-numbits:指定要生成的私钥的长度,默认为1024。该项必须为命令行的最后一项参数。
`示例`:
(1)生成一个1024位的RSA私钥,加密算法选择des3,密码为1111,保存为server.key文件。
openssl genrsa -des3 -passout pass:1111 -out server.key 1024
- nseq
- ocsp
- passwd
- pkcs12
- pkcs7
- pkcs8
- pkey
- pkeyparam
- pkeyutl
- prime
- rand
- req,主要功能有:生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书。
`用法`:
openssl req [-new -key filename|-newkey arg] [options] [-out filename]
`选项说明`:
-new: 表示要生成证书请求文件。
-key filename: 指定私钥文件,生成证书请求时需要,只与生成证书请求选项"-new"配合。
-newkey arg: 类似于"-new"选项加上"-key"选项,用于生成一个新的证书,并创建私钥,私钥文件名称由"-keyout"参数指定。arg的格式如下:
rsa:bits: 生成RSA私钥,bits指定私钥长度。
-nodes: 如果指定"-newkey"自动生成私钥,那么该选项说明生成的私钥不需要加密。
-config filename: 指定特殊路径的配置文件,ubuntu上默认参数为:/etc/ssl/openssl.cnf。
-batch: 指定非交互模式,直接读取"-config"文件配置参数,或者使用默认参数值。
-keyout: 指定新创建私钥文件名,配合"-newkey"使用。
-x509:表示要生成一个自签名证书,而不是生成证书请求文件,一般用于测试或者为根CA创建自签名证书。
-days n:指定自签名证书的有效期限,默认30天,需要和"-x509"一起使用。
-out filename: 指定生成的证书请求文件,或者自签名证书。
-noout: 不输出REQ数据。
-text:以文本形式打印证书请求。
-pubkey:输出证书请求文件中的公钥。
-subject: 查看证书请求文件中的个人信息部分。
-subj arg:替换或自定义证书请求时需要输入的信息,并输出修改后的请求信息。arg的格式为:"/type0=value0/type1=value1...",
如果value为空,则表示使用配置文件中指定的默认值,如果value值为".",则表示该项留空。
其中可识别type有:"C"是国家,"ST"是州/省,"L"是位置,"O"是组织(一般写公司名),"OU"是单位(可以写公司的部门名),"CN"是常用名(一般写域名或者主机地址),"emailAddress"是电子邮箱地址。
`示例`:
(1)查看证书请求文件CSR的细节
openssl req -in server.csr -noout -text
(2)查看证书请求文件的公钥,这个公钥就是从server.key私钥文件导出的公钥。
openssl req -in server.csr -noout -pubkey
(3)查看证书请求文件的个人信息部分。
openssl req -in server.csr -noout -subject
(4)验证请求文件的数字签名,这样可以验证出证书请求文件是否被篡改过。
openssl req -in server.csr -verify
(5)利用CA的RSA密钥生成证书请求文件CSR(这个CSR用于提交至CA中心等待签发)
openssl req -new -key server.key -out server.csr
openssl req -new -key server.key -passin pass:1111 -out server.csr -subj "/C=CN/ST=FJ/L=XM/O=company/OU=IT/CN=company.com/emailAddress=dev@company.com"
(6)利用CA的RSA私钥生成一个自签名证书(X.509结构),有效期指定为1年
openssl req -new -key server.key -x509 -days 365 -out ca.crt
openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt
openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt -subj "/C=CN/ST=FJ/L=XM/O=company/OU=IT/CN=company.com/emailAddress=dev@company.com"
- rsa,用于RSA数据管理。
`用法`:
openssl rsa [-in filename] [options]
`选项说明`:
-inform arg: 输入私钥文件格式,值为:[DER|NET|PEM]。
-outform arg: 输出私钥文件格式,值为:[DER|NET|PEM]。
-in filename: 待处理私钥文件。
-passin arg: 输入这个私钥文件的解密密码(如果在生成这个私钥文件的时,选择了加密算法了的话)。arg的格式如下:
pass:password:password表示传递的明文密码。
env:var:从环境变量var获取密码值。
file:filename:filename文件中的第一行为要传递的密码。若filename同时传递给"-passin"和"-passout"选项,则filename的第一行为"-passin"的值,第二行为"-passout"的值。
stdin:从标准输入中获取要传递的密码。
-[des|des3|aes128|aes192|aes256]: 待输出私钥加密算法(对称加密)。
-passout arg:如果希望输出的私钥文件继续使用加密算法的话则指定密码。arg的格式如下:
pass:password:password表示传递的明文密码。
env:var:从环境变量var获取密码值。
file:filename:filename文件中的第一行为要传递的密码。若filename同时传递给"-passin"和"-passout"选项,则filename的第一行为"-passin"的值,第二行为"-passout"的值。
stdin:从标准输入中获取要传递的密码。
-out filename:待输出私钥文件,若未指定输出文件,则为标准输出。
-noout: 不打印私钥key数据。
-text: 以文本形式打印私钥key数据。
-pubin: 检查待处理文件是否为公钥文件。
-pubout: 输出公钥文件。
`示例`:
(1)查看私钥文件明细。
openssl rsa -in server.key -noout -text
(2)对加密的私钥文件转非加密。
openssl rsa -in server_pass.key -passin pass:1111 -out server_nopass.key
(3)对非加密的私钥文件转加密,加密算法选择aes256。
openssl rsa -in server_nopass.key -aes256 -passout pass:1111 -out server_pass.key
(4)对加密的私钥文件进行解密。
openssl rsa -in server_pass.key -passin pass:1111 -out server_nopass.key
(5)对非加密的私钥文件生成对应的公钥文件。
openssl rsa -in server_pass.key -pubout -out server_public.key
(6)对加密的私钥文件生成对应的公钥文件。
openssl rsa -in server_pass.key -passin pass:1111 -pubout -out server_public.key
(7)私钥PEM转DER
openssl rsa -in server.key -outform DER -out server_der.key
- rsautl
- s_client
- s_server
- s_time
- sess_id
- smime
- speed
- spkac
- srp
- ts
- verify
- version
- x509,本指令是一个功能很丰富的证书处理工具。可以用来显示证书的内容,转换其格式,给CSR签名等X.509证书的管理工作。
`用法`:
openssl x509 [options]
`选项说明`:
-inform arg: 输入私钥文件格式,值为:[DER|NET|PEM]。
-outform arg: 输出私钥文件格式,值为:[DER|NET|PEM]。
-in filename: 指定证书输入文件,若同时指定了"-req"选项,则表示输入文件为证书请求文件。
-req: 指定该选项将使得"-in"的文件为证书请求文件。
-CA filename:指定签署时所使用的CA证书,该选项一般和"-req"选项一起使用,用于为证书请求文件签署。
-CAform arg: 根CA证书格式(默认是PEM)。
-CAkey filename:设置CA签署时使用的私钥文件,如果没有参数输入,那么缺省认为私有密钥在CA证书文件里有。
-CAkeyform arg: 指定根CA私钥证书文件格式(默认为PEM格式)。
-CAserial filename: 设置CA使用的序列号文件。当使用"-CA"选项来签名时,它将会使用某个文件中指定的序列号来唯一标识此次签名后的证书文件。
这个序列号文件的内容仅只有一行,这一行的值为16进制的数字。当某个序列号被使用后,该文件中的序列号将自动增加。
默认序列号文件以CA证书文件基名加".srl"为后缀命名。如CA证书为"server.key",则默认寻找的序列号文件为"server.srl"。
-CAcreateserial: 当使用该选项时,如果CA使用的序列号文件不存在将自动创建,该文件将包含序列号值"02"并且此次签名后证书文件序列号为1。一般如果使用了"-CA"选项而序列号文件不存在将会产生错误"找不到srl文件"。
-out: 指定证书输出文件。
`示例`:
(1)转换DER证书为PEM格式。
openssl x509 -inform DER -in server.cer -outform PEM -out server.key
(2)打印出证书的内容。
openssl x509 -in server.crt -noout -text
(3)使用根CA证书对证书请求文件进行签发,生成x509格式证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -out server.crt
二、消息摘要命令
在终端输入命令:openssl list-message-digest-commands
,结果如下:
- md4
- md5
- rmd160
- sha
- sha1
三、Cipher命令
在终端输入命令:openssl list-cipher-commands
,结果如下:
- aes-128-cbc
- aes-128-ecb
- aes-192-cbc
- aes-192-ecb
- aes-256-cbc
- aes-256-ecb
- base64
- bf
- bf-cbc
- bf-cfb
- bf-ecb
- bf-ofb
- camellia-128-cbc
- camellia-128-ecb
- camellia-192-cbc
- camellia-192-ecb
- camellia-256-cbc
- camellia-256-ecb
- cast
- cast-cbc
- cast5-cbc
- cast5-cfb
- cast5-ecb
- cast5-ofb
- des
- des-cbc
- des-cfb
- des-ecb
- des-ede
- des-ede-cbc
- des-ede-cfb
- des-ede-ofb
- des-ede3
- des-ede3-cbc
- des-ede3-cfb
- des-ede3-ofb
- des-ofb
- des3
- desx
- rc2
- rc2-40-cbc
- rc2-64-cbc
- rc2-cbc
- rc2-cfb
- rc2-ecb
- rc2-ofb
- rc4
- rc4-40
- seed
- seed-cbc
- seed-cfb
- seed-ecb
- seed-ofb