OpenSSL Cookbook 3——证书注册请求(CSR)

英文版地址:https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html

创建CSR
    一旦有了私钥,就可以继续创建证书注册请求(CSR)。这是要求CA签署证书的正式请求,它包含请求证书实体的公钥和有关实体的一些信息,这些数据都将是证书的一部分。CSR总是用它所携带的公钥对应的私钥签名。

    CSR创建通常是一个交互过程,在这一过程中,你将提供证书所需的一些信息。仔细阅读由OpenSSL工具给出的说明;如果你想一个字段是空的,你必须输入一个点而不是仅仅按下回车。因为回车代表使用CSR领域的默认值。

下面是生成CSR的例子:

$ openssl req -new -key fd.key -out fd.csr
Enter pass phrase for fd.key: ******
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
———
Country Name (2 letter code) [AU]:GB
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:London
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Feisty Duck Ltd
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:www.feistyduck.com
Email Address []:[email protected]
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

CSR生成之后,你可以自己签署证书或发送到公共CA并要求他们签署证书。这两种方法将会在后续部分详细讲解。但是在签署证书之前我们通常会用下面的方法查看并仔细检查CSR是否正确。

$ openssl req -text -in fd.csr -noout
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=GB, L=London, O=Feisty Duck Ltd, CN=www.feistyduck.com↩
/[email protected]
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:b7:fc:ca:1c:a6:c8:56:bb:a3:26:d1:df:e4:e3:
[16 more lines…]
d1:57
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha1WithRSAEncryption
a7:43:56:b2:cf:ed:c7:24:3e:36:0f:6b:88:e9:49:03:a6:91:
[13 more lines…]
47:8b:e3:28

通过已有证书创建CSR

除了上面这种CSR的生成方法,我们也可以从已有的证书中生产新的CSR。如果你的目的仅仅是更新证书,并且不想对提交的信息进行任何更改,那么你可以使用以下命令创建一个全新的CSR:

$ openssl x509 -x509toreq -in fd.crt -out fd.csr -signkey fd.key

无人值守生成CSR
如果你不想手动输入任何信息或者说想全自动完成CSR的生成工作,那么你可以使用无人值守的CSR生成方式。例如,假设我们要为www.feistyduck.com自动生成一个CSR,首先我们得创建配置文件fd.cnf,内容如下:

[req]
prompt = no
distinguished_name = dn
req_extensions = ext
input_password = PASSPHRASE
[dn]
CN = www.feistyduck.com
emailAddress = [email protected]
O = Feisty Duck Ltd
L = London
C = GB
[ext]
subjectAltName = DNS:www.feistyduck.com,DNS:feistyduck.com

有了这个配置文件后我们就可以通过下面这个命令自动生成CSR了

$ openssl req -new -config fd.cnf -key fd.key -out fd.csr

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章