openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。

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 	指定随机数种子文件。
  • 举例
  1. 创建不加密的RSA私钥。
    openssl genrsa -out test.key 1024
  2. 创建加密的RSA私钥。
    openssl genrsa -des3 -out test.key 1024
  3. 指定随机数创建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私钥的有效性。
  • 用法举例:
  1. 从私钥中提取公钥:
    openssl rsa -in test.key -out test.pub -pubout
  2. 转换密钥文件的格式:
    openssl rsa -in test.key -out test.key.der -outform DER
  3. 消除私钥的口令:
    openssl rsa -in test.key -out test.key.nopass
  4. 提取私钥后,改变加密算法:
    openssl rsa -in test.key -out test.key.aes128 -aes128
  5. 指定输入私钥的口令来源,显示私钥信息:
    openssl rsa -in test.key -text -check -passin file:pass.txt
  6. 对私钥有效性进行检查:
    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 			提取证书请求文件中的公钥。
  • 用法举例:
  1. 使用交互式方式创建证书请求文件。
    openssl genrsa -out test.key 1024
    openssl req -new -key test.key -out test.csr
  2. 使用非交互式方式创建证书请求文件。
    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"
  3. 打印证书请求文件。
    openssl req -in test.csr -text
    openssl req -in test.csr -subject
  4. 修改证书请求文件。
    openssl req -in test.csr -subj /C=cn/ST=hunan/L=changsha/O=Default -out test.csr
  5. 校验证书请求文件的合法性。
    openssl req -in test.csr -verify
  6. 提取证书请求文件中的公钥。
    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。
  • 用法举例:
  1. 根据证书请求生成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

  2. 打印证书信息。
    openssl x509 -in test.crt -text

  3. 转换证书格式。
    openssl x509 -in test.crt -out test.crt.der -outform der

  4. 根据证书重新创建证书申请。
    openssl x509 -x509toreq -in test.crt -out test.crt.req -signkey test.key

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐