LOADING

正在加载

OpenSSL子命令详解

壹 前言

OpenSSL是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。OpenSSL有四个主要的子命令:genrsa、rsa、req、x509子命令,用于RSA密钥的生成和处理,以及证书的申请和制作。

贰 genrsa子命令

  • 用途:genrsa子命令主要用于生成RSA私钥。
  • 格式:openssl genrsa [args] [numbits]
  • 选项:
    -des 		使用des cbc模式对私钥文件进行加密
    -des3 		使用des3 cbc模式对私钥文件进行加密
    -idea 		使用idea cbc模式对私钥文件进行加密
    -aes128, -aes192, -aes256 		使用aes cbc模式对私钥文件进行加密
    -out file 		指定输出私钥文件名
    -f4				指定F4做为E值,默认
    -3 				指定3做为E值
    -seed arg 		指定cbc的随机种子
    -rand file:file 	指定随机数种子文件
    
  • 举例
    # 创建不加密的RSA私钥。
    openssl genrsa -out test.key 1024
    # 创建加密的RSA私钥。
    openssl genrsa -des3 -out test.key 1024
    # 指定随机数创建RSA私钥。
    openssl genrsa -des3 -out test.key 1024 -seed abc
    openssl genrsa -des3 -out test.key 1024 -rand file:hello.txt
    

叁 rsa子命令

  • 用途:rsa子命令主要用于处理RSA公私钥文件。
  • 命令行格式:openssl rsa [options] <infile> outfile
  • 选项:
    -inform arg			指定输入文件格式,可以为DER或PEM,默认为PEM
    -outform arg		指定输出文件格式,可以为DER或PEM,默认为PEM
    -in arg				指定输入文件
    -out arg 			指定输出文件
    -pubin 				指定输入文件为公钥,默认为私钥
    -pubout 			指定输出文件为公钥,默认为私钥
    -passin arg 		指定输入文件的口令保护来源
    -passout arg 		指定输出文件的口令保护来源
    -des 				使用des cbc模式对输出文件进行加密
    -des3 				使用des3 cbc模式对输出文件进行加密
    -idea 				使用idea cbc模式对输出文件进行加密
    -aes128, -aes192, -aes256 		使用aes cbc模式对输出文件进行加密
    -text 				打印密钥信息
    -noout 				不向控制台打印密钥信息
    -modulus 			打印RSA的模数信息
    -check 				检查RSA私钥的有效性
    
  • 举例
    # 从私钥中提取公钥
    openssl rsa -in test.key -out test.pub -pubout
    # 转换密钥文件的格式:
    openssl rsa -in test.key -out test.key.der -outform DER
    # 消除私钥的口令
    openssl rsa -in test.key -out test.key.nopass
    # 提取私钥后,改变加密算法
    openssl rsa -in test.key -out test.key.aes128 -aes128
    # 指定输入私钥的口令来源,显示私钥信息
    openssl rsa -in test.key -text -check -passin file:pass.txt
    # 对私钥有效性进行检查
    openssl rsa -in test.key -check
    

肆 req子命令

  • 用途
    req子命令主要用于创建证书请求文件。

  • 命令行格式:
    openssl req [options] <infile> outfile

  • 选项:

    -inform arg 		指定输入文件格式,可以为DER或PEM,默认为PEM
    -outform arg 		指定输出文件格式,可以为DER或PEM,默认为PEM
    -in arg 			指定输入文件
    -out arg 			指定输出文件
    -new 				创建新的证书请求文件
    -key file 			指定创建证书请求的私钥文件
    -keyform arg 		指定创建证书请求的私钥文件的格式,可以为DER或PEM,默认为PEM
    -passin arg 		指定私钥文件的口令保护来源
    -verify 			校验证书请求文件的主体签名是否有效
    -noout 				不打印证书请求信息
    -text 				文本打印证书请求文件
    -modulus 			输出证书请求的模数信息
    -subject 			输出证书请求主体信息
    -subj arg 			设置或修改证书请求的主体信息
    -multivalue-rdn 	设置或修改证书请求的主体信息时,允许多RDN格式
    -utf8 				输入字符为utf8编码,默认输入为ASCII编码
    -[digest] 			指定创建证书请求的摘要算法
    -pubkey 			提取证书请求文件中的公钥
    
  • 举例

    # 使用交互式方式创建证书请求文件
    openssl genrsa -out test.key 1024
    openssl req -new -key test.key -out test.csr
    # 使用非交互式方式创建证书请求文件
    openssl req -new -key test.key -out test.csr -subj /C=cn/ST=hunan/L=changsha/O=Default
    openssl req -new -key test.key -out test.csr -subj "/C=cn/ST=hunan/L=changsha/O=Default Company Ltd/CN=test"
    # 打印证书请求文件
    openssl req -in test.csr -text
    openssl req -in test.csr -subject
    # 修改证书请求文件
    openssl req -in test.csr -subj /C=cn/ST=hunan/L=changsha/O=Default -out test.csr
    # 校验证书请求文件的合法性
    openssl req -in test.csr -verify
    # 提取证书请求文件中的公钥
    openssl req -in test.csr -pubkey -out test.csr.pub
    

    伍 x509子命令

  • 用途:x509命令主要用于创建、修改x509证书。

  • 格式:openssl x509 [options] <infile> outfile

  • 选项:

    -inform arg 		指定输入文件格式,可以为DER或PEM,默认为PEM
    -outform arg 		指定输出文件格式,可以为DER或PEM,默认为PEM
    -keyform arg 		指定私钥文件格式,可以为DER或PEM,默认为PEM
    -CAform arg 		指定CA文件格式,可以为DER或PEM,默认为PEM
    -CAkeyform arg 		指定CA私钥文件格式,可以为DER或PEM,默认为PEM
    -in arg 			指定输入文件,默认为标准输入
    -out arg 			指定输出文件,默认为标准输出
    -passin arg 		指定私钥文件的口令保护来源
    -pubkey 			提取持有者公钥
    -trustout 			提取可信任证书
    -noout 				不向控制台输出证书信息
    -text 				打印证书信息
    -C 					以C证言格式打印证书信息
    -serial 			打印证书的序列号
    -subject_hash 		打印持有者的摘要
    -issuer_hash 		打印颁发者的摘要
    -hash 				等同于-subject_hash
    -subject 			打印持有者的DN信息
    -issuer 			打印颁发者的DN信息
    -email 				打印email地址
    -startdate 			打印证书的生效时间
    -enddate 			打印证书的失效时间
    -dates 				打印证书的有效期
    -purpose 			打印证书用途
    -modulus 			打印证书中的RSA模数
    -fingerprint 		打印证书微缩图
    -alias 				打印证书别名
    -ocspid 			打印持有者和公钥的OCSP摘要值
    -clrtrust 			清除证书附加项里所有有关用途允许的内容
    -clrreject 			清除证书附加项里所有有关用途禁止的内容
    -addtrust arg 		添加证书附加项里所有有关用途允许的内容
    -addreject arg 		添加证书附加项里所有有关用途禁止的内容
    -setalias arg 		设置证书别名
    -days arg 			设置证书有效期,默认30天
    -checkend arg 		检查证书在给定的arg秒后是否还有效
    -signkey arg 		指定自签名私钥文件
    -x509toreq 			根据证书来生成证书请求,需要指定签名私钥
    -req 				输入文件为证书请求
    -CA arg 			设置CA文件,必须为PEM格式
    -CAkey arg 			设置CA私钥文件,必须为PEM格式
    -CAcreateserial 	创建序列号文件
    -CAserial arg 		指定序列号文件
    -set_serial 		设置证书序列号
    -<dgst> 			指定使用的摘要算法,缺省为MD5
    
  • 举例

    # 根据证书请求生成CA证书
    openssl genrsa -out test.key 1024 openssl req -new -key test.key -out test.csr openssl x509 -in test.csr -req -out test.crt -days 365 -signkey test.key
    # 打印证书信息
    openssl x509 -in test.crt -text
    # 转换证书格式
    openssl x509 -in test.crt -out test.crt.der -outform der
    # 根据证书重新创建证书申请
    openssl x509 -x509toreq -in test.crt -out test.crt.req -signkey test.key
    
avatar
小C&天天

修学储能 先博后渊


今日诗句