https://blog.csdn.net/abccheng/article/details/82622899
#设置证书名称,下面的命令中用该变量值替换 name=party_id # change to Pi or Ci #生成证书 openssl req -x509 -days 3650 -nodes -newkey rsa -keyout ./$name.key -out ./$name.pem -subj "/CN=$name" #生成示例 openssl req -x509 -days 3650 -nodes -newkey rsa -keyout ./party1.key -out ./party1.pem -subj "/CN=party1"
openssl req命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书。
linux: https://www.openssl.org/source/
windows: http://slproweb.com/products/Win32OpenSSL.html
-x509 : 说明生成自签名证书,自签名证书又称为根证书,是自己颁发给自己的证书,即证书中的颁发者和主体名相同。
-days n : 指定自签名证书的有效期限,默认30天,需要和"-x509"一起使用。
-nodes : 如果指定-newkey自动生成秘钥,那么-nodes选项说明生成的秘钥不需要加密,即不需要输入passphase.
-newkey : -newkey是指在生成证书请求或者自签名证书的时候自动生成密钥,然后生成的密钥名称由-keyout参数指定。当指定newkey选项时,后面指定rsa:bits说明产生rsa密钥,位数由bits指定。 如果没有指定选项-key和-newkey,默认自动生成秘钥。
-keyout : 指明创建的新的私有密钥文件的文件名
-out : -out 指定生成的证书请求或者自签名证书名称
-config : 默认参数在ubuntu上为 /etc/ssl/openssl.cnf, 可以使用-config指定特殊路径的配置文件
-batch : 指定非交互模式,直接读取config文件配置参数,或者使用默认参数值
-verbose : 显示操作执行的详细信息
-subj args :替换或自定义证书请求时需要输入的信息,并输出修改后的请求信息。args的格式为"/type0=value0/type1=value1...",如果value为空,则表示使用配置文件中指定的默认值,如果value值为".",则表示该项留空。
其中可识别type有:
C是Country、ST是state、L是localcity、O是Organization、OU是Organization Unit、CN是common name等
openssl命令目录:
https://www.cnblogs.com/aixiaoxiaoyu/p/8650180.html
用途:
生成证书请求文件、验证证书请求文件和创建根CA。
语法:
openssl req
[-new] [-newkey rsa:bits] [-verify] [-x509] [-in filename] [-out filename]
[-key filename] [-passin arg] [-passout arg] [-keyout filename] [-pubkey]
[-nodes] [-[dgst]] [-config filename] [-subj arg] [-days n] [-set_serial n]
[-extensions section] [-reqexts section] [-utf8] [-nameopt] [-reqopt] [-subject]
[-subj arg] [-text] [-noout] [-batch] [-verbose]
参数说明:
-new :创建一个证书请求文件,会交互式提醒输入一些信息,这些交互选项以及交互选项信息的长度值以及其他一些扩展属性在配置文件(默认为
:openssl.cnf,还有些辅助配置文件)中指定了默认值。如果没有指定"-key"选项,则会自动生成一个RSA私钥,该私钥的生成位置
:也在openssl.cnf中指定了。如果指定了-x509选项,则表示创建的是自签署证书文件,而非证书请求文件
-newkey args :类似于"-new"选项,创建一个新的证书请求,并创建私钥。args的格式是"rsa:bits"(其他加密算法请查看man),其中bits
:是rsa密钥的长度,如果bits省略了(即-newkey rsa),则长度根据配置文件中default_bits指令的值作为默认长度,默认该值为2048
:如果指定了-x509选项,则表示创建的是自签署证书文件,而非证书请求文件
-nodes :默认情况下,openssl req自动创建私钥时都要求加密并提示输入加密密码,指定该选项后则禁止对私钥文件加密
-key filename :指定私钥的输入文件,创建证书请求时需要
-keyout filename :指定自动创建私钥时私钥的存放位置,若未指定该选项,则使用配置文件中default_keyfile指定的值,默认该值为privkey.pem
-[dgst] :指定对创建请求时提供的申请者信息进行数字签名时的单向加密算法,如-md5/-sha1/-sha512等,
:若未指定则默认使用配置文件中default_md指定的值 -verify :对证书请求文件进行数字签名验证
-x509 :指定该选项时,将生成一个自签署证书,而不是创建证书请求。一般用于测试或者为根CA创建自签名证书
-days n :指定自签名证书的有效期限,默认30天,需要和"-x509"一起使用。
:注意是自签名证书期限,而非请求的证书期限,因为证书的有效期是颁发者指定的,证书请求者指定有效期是没有意义的,
:配置文件中的default_days指定了请求证书的有效期限,默认365天
-set_serial n :指定生成自签名证书时的证书序列号,该序列号将写入配置文件中serial指定的文件中,这样就不需要手动更新该序列号文件
:支持数值和16进制值(0x开头),虽然也支持负数,但不建议 -in filename :指定证书请求文件filename。注意,创建证书请求文件时是不需要指定该选项的
-out filename :证书请求或自签署证书的输出文件,也可以是其他内容的输出文件,不指定时默认stdout
-subj args :替换或自定义证书请求时需要输入的信息,并输出修改后的请求信息。args的格式为"/type0=value0/type1=value1...",
:如果value为空,则表示使用配置文件中指定的默认值,如果value值为".",则表示该项留空。其中可识别type(man req)有:
:C是Country、ST是state、L是localcity、O是Organization、OU是Organization Unit、CN是common name等 【输出内容选项:】
-text :以文本格式打印证书请求
-noout :不输出部分信息 -subject :输出证书请求文件中的subject(如果指定了x509,则打印证书中的subject)
-pubkey :输出证书请求文件中的公钥 【配置文件项和杂项:】
-passin arg :传递解密密码
-passout arg :指定加密输出文件时的密码
-config filename :指定req的配置文件,指定后将忽略所有的其他配置文件。如果不指定则默认使用/etc/pki/tls/openssl.cnf中req段落的值
-batch :非交互模式,直接从配置文件(默认/etc/pki/tls/openssl.cnf)中读取证书请求所需字段信息。但若不指定"-key"时,仍会询问key
-verbose :显示操作执行的详细信息
input_password :密码输入文件,和命令行的"-passin"选项对应,
output_password :密码的输出文件,与命令行的"-passout"选项对应,
default_bits :openssl req自动生成RSA私钥时的长度,不写时默认是512,命令行的"-new"和"-newkey"可能会用到它
default_keyfile:默认的私钥输出文件,与命令行的"-keyout"选项对应
encrypt_key :当设置为no时,自动创建私钥时不会加密该私钥。设置为no时与命令行的"-nodes"等价。还有等价的兼容性写法:encry_rsa_key
default_md :指定创建证书请求时对申请者信息进行数字签名的单向加密算法,与命令行的"-[dgst]"对应
prompt :当指定为no时,则不提示输入证书请求的字段信息,而是直接从openssl.cnf中读取 :请小心设置该选项,很可能请求文件创建失败就是因为该选项设置为no
distinguished_name:(DN)是一个扩展属性段落,用于指定证书请求时可被识别的字段名称。
示例:
a.根据私钥pri_key.pem生成一个新的证书请求文件。其中"-new"表示新生成一个新的证书请求文件,
"-key"指定私钥文件,"-out"指定输出文件,此处输出文件即为证书请求文件。
openssl genrsa -out pri_key.pem
openssl req -new -key pri_key.pem -out req1.csr
b.查看证书请求文件内容。
openssl req -in req1.csr或cat req1.csr或openssl req -in req1.csr -text
c.指定证书请求文件中的签名算法。
openssl req -new -key pri_key.pem -out req2.csr -md5
d.验证请求文件的数字签名,这样可以验证出证书请求文件是否被篡改过。
openssl req -verify -in req2.csr
e.自签署证书,可用于自建根CA时。
openssl req -x509 -key pri_key.pem -in req1.csr -out CA1.crt -days 365
f.让openssl req自动创建所需的私钥文件。
openssl req -new -out req3.csr 或
openssl req -new -out req3.csr -nodes -keyout myprivkey.pem
g.使用"-newkey"选项。
openssl req -newkey rsa:2048 -out req3.csr -nodes -keyout myprivkey.pem