SSL协议、openSSL及创立私有CA

req命令选项较多,req和证书请求相关知识,申请者需要将自己的信息及其公钥放入证书请求中,若已熟悉openssl,由此便保证了数据来源的可靠性,保证其在网络传输过程中

金沙澳门官网7817网址 16

openssl种类小说:金沙澳门官网7817网址,http://www.cnblogs.com/f-ck-need-u/p/7048359.html**

openssl req(生成证书请求和自行建造CA),opensslreq

伪命令req大概有二个效益:生成证书请求文件、验证证书请求文件和创制根CA。由于openssl
req命令选项较多,所以先各举多少个例子,再聚焦给出openssl
req的抉择表明。若已熟习openssl
req和证书请求相关知识,可径直跳至后文查看openssl
req选项整理,若不熟悉,提议在此在此之前向后一步一步阅读。

第二表达下生成证书请求需求怎么着:申请者需求将团结的音信及其公钥放入证书请求中。但在实操进度中,所急需提供的是私钥而非公钥,因为它会自动从私钥中领取公钥。其它,还索要将提供的多少开始展览数字签名(使用单向加密),保障该证件请求文件的完整性和1致性,制止外人盗窃后开始展览曲解,比如黑客将为www.baidu.com所申请的证件请求文件中的集团名改成对方的集团名称,倘诺能够篡改成功,则签署该证件请求时,所发布的证件新闻少将成为外人音信。

就此率先步就是先创造出私钥pri_key.pem。其实私钥文件是非不可或缺的,因为openssl
req在需求它的时候会自动创建在一定的路线下,此处为了举个例子表达,所以制造它。

[[email protected] tmp]# openssl genrsa -out pri_key.pem

(壹).依据私钥pri_key.pem生成1个新的证件请求文件。在那之中”-new”表示新生成3个新的证书请求文件,”-key”钦命私钥文件,”-out”钦定输出文件,此处输出文件即为证书请求文件。

[[email protected] tmp]# openssl req -new -key pri_key.pem -out req1.csr
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) [XX]:CN
State or Province Name (full name) []:FJ
Locality Name (eg, city) [Default City]:XM
Organization Name (eg, company) [Default Company Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:www.youwant.com
Email Address []:

Please enter the following 'extra' attributes    # 下面两项几乎不用考虑,留空即可
to be sent with your certificate request
A challenge password []:.
An optional company name []:.

在敲下回车键后,暗中认可会进来相互形式让您提供您个人的消息,要求小心的是,假如某个音讯不想填可以选用选择暗许值,也能够挑选留空不填,直接回车将选取选拔暗中认可值,输入点”.”将象征该音讯项留空。但一些项是必填项,不然今后表明签署时将倒闭。如”Common
Name”,它表示的是为哪个域名、子域名或哪个主机申请证书,以往注明请求被签署后将只可以动用于”Common
Name”所钦定的地址。具体哪些必填项还索要看所使用的安插文件(默许的安顿文件为/etc/pki/tls/openssl.cnf)中的定义,此处临时不切磋配备相关内容,仅提供Common
Name就能够。

而外”-new”选项,使用”-newkey”选项也能制造证书请求文件,此处暂不比如表明”-newkey”的用法,后文种有示范。

(2).查看证书请求文件内容。

现今曾经变化了2个新的评释请求文件req一.csr。查看下该证件请求文件的始末。

[[email protected] tmp]# cat req1.csr
-----BEGIN CERTIFICATE REQUEST-----             # 证书请求的内容
MIIBgDCB6gIBADBBMQswCQYDVQQGEwJDTjELMAkGA1UECAwCRkoxCzAJBgNVBAcM
AlhNMRgwFgYDVQQDDA93d3cueW91d2FudC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAMbx9bfsC0GTn7DijfGFs56Fb8atX9ABRDE/wmE74jXjdfbH4ZOg
Te0Orlu5pA4jqXDgSLzlQvjD6QsyhToyvtyQbgGSfXSVOPcgfAohDNo9t6+mnvs/
5rFQJ1+uI6gsLMbwQBJidLGnM1pOvFo2671Vm2jewDLVweGP5wmIfDyLAgMBAAGg
ADANBgkqhkiG9w0BAQUFAAOBgQAqKYjNKKpNCvwDNeDeYynOx1XD/OYgAU43Sq03
aRUcKenqICkvkXkUE+H0lYMtXcDL/rgDyjlKvwartgZ/ngoKSwtXhd4UivII2hNN
jolE3gfe8KGjMpnX/8oxkJIoSTETqee+11ez8E2fya1DwoQnKpXjTt5qya8VWflt
DG8WmA==
-----END CERTIFICATE REQUEST-----

更具象的能够行使openssl
req命令查看。命令如下,在那之中”-in”选项钦定的是注解请求文件。

[[email protected] tmp]# openssl req -in req1.csr
-----BEGIN CERTIFICATE REQUEST-----             # 证书请求的内容
MIIBgDCB6gIBADBBMQswCQYDVQQGEwJDTjELMAkGA1UECAwCRkoxCzAJBgNVBAcM
AlhNMRgwFgYDVQQDDA93d3cueW91d2FudC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAMbx9bfsC0GTn7DijfGFs56Fb8atX9ABRDE/wmE74jXjdfbH4ZOg
Te0Orlu5pA4jqXDgSLzlQvjD6QsyhToyvtyQbgGSfXSVOPcgfAohDNo9t6+mnvs/
5rFQJ1+uI6gsLMbwQBJidLGnM1pOvFo2671Vm2jewDLVweGP5wmIfDyLAgMBAAGg
ADANBgkqhkiG9w0BAQUFAAOBgQAqKYjNKKpNCvwDNeDeYynOx1XD/OYgAU43Sq03
aRUcKenqICkvkXkUE+H0lYMtXcDL/rgDyjlKvwartgZ/ngoKSwtXhd4UivII2hNN
jolE3gfe8KGjMpnX/8oxkJIoSTETqee+11ez8E2fya1DwoQnKpXjTt5qya8VWflt
DG8WmA==
-----END CERTIFICATE REQUEST-----

翻开请求文件时,能够构成其余多少个挑选输出特定的内容。”-text”选项表示以文本格式输出证书请求文件的剧情。

[[email protected] tmp]# openssl req -in req1.csr -text
Certificate Request:                                            # 此为证书请求文件头
    Data:
        Version: 0 (0x0)
        Subject: C=CN, ST=FJ, L=XM, CN=www.youwant.com          # 此为提供的个人信息,注意左侧标头为"Subject",这是很重要的一项
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption                 # 使用的公钥算法
                Public-Key: (1024 bit)                          # 公钥的长度
                Modulus:
                    00:c6:f1:f5:b7:ec:0b:41:93:9f:b0:e2:8d:f1:85:
                    b3:9e:85:6f:c6:ad:5f:d0:01:44:31:3f:c2:61:3b:
                    e2:35:e3:75:f6:c7:e1:93:a0:4d:ed:0e:ae:5b:b9:
                    a4:0e:23:a9:70:e0:48:bc:e5:42:f8:c3:e9:0b:32:
                    85:3a:32:be:dc:90:6e:01:92:7d:74:95:38:f7:20:
                    7c:0a:21:0c:da:3d:b7:af:a6:9e:fb:3f:e6:b1:50:
                    27:5f:ae:23:a8:2c:2c:c6:f0:40:12:62:74:b1:a7:
                    33:5a:4e:bc:5a:36:eb:bd:55:9b:68:de:c0:32:d5:
                    c1:e1:8f:e7:09:88:7c:3c:8b
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha1WithRSAEncryption                  # 为请求文件数字签名时使用的算法
         2a:29:88:cd:28:aa:4d:0a:fc:03:35:e0:de:63:29:ce:c7:55:
         c3:fc:e6:20:01:4e:37:4a:ad:37:69:15:1c:29:e9:ea:20:29:
         2f:91:79:14:13:e1:f4:95:83:2d:5d:c0:cb:fe:b8:03:ca:39:
         4a:bf:06:ab:b6:06:7f:9e:0a:0a:4b:0b:57:85:de:14:8a:f2:
         08:da:13:4d:8e:89:44:de:07:de:f0:a1:a3:32:99:d7:ff:ca:
         31:90:92:28:49:31:13:a9:e7:be:d7:57:b3:f0:4d:9f:c9:ad:
         43:c2:84:27:2a:95:e3:4e:de:6a:c9:af:15:59:f9:6d:0c:6f:
         16:98
-----BEGIN CERTIFICATE REQUEST-----                    
MIIBgDCB6gIBADBBMQswCQYDVQQGEwJDTjELMAkGA1UECAwCRkoxCzAJBgNVBAcM
AlhNMRgwFgYDVQQDDA93d3cueW91d2FudC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAMbx9bfsC0GTn7DijfGFs56Fb8atX9ABRDE/wmE74jXjdfbH4ZOg
Te0Orlu5pA4jqXDgSLzlQvjD6QsyhToyvtyQbgGSfXSVOPcgfAohDNo9t6+mnvs/
5rFQJ1+uI6gsLMbwQBJidLGnM1pOvFo2671Vm2jewDLVweGP5wmIfDyLAgMBAAGg
ADANBgkqhkiG9w0BAQUFAAOBgQAqKYjNKKpNCvwDNeDeYynOx1XD/OYgAU43Sq03
aRUcKenqICkvkXkUE+H0lYMtXcDL/rgDyjlKvwartgZ/ngoKSwtXhd4UivII2hNN
jolE3gfe8KGjMpnX/8oxkJIoSTETqee+11ez8E2fya1DwoQnKpXjTt5qya8VWflt
DG8WmA==
-----END CERTIFICATE REQUEST-----

将”-text”和”-noout”结合使用,则只输出证书请求的文书底部分。

[[email protected] tmp]# openssl req -in req1.csr -noout -text
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=CN, ST=FJ, L=XM, CN=www.youwant.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:c6:f1:f5:b7:ec:0b:41:93:9f:b0:e2:8d:f1:85:
                    b3:9e:85:6f:c6:ad:5f:d0:01:44:31:3f:c2:61:3b:
                    e2:35:e3:75:f6:c7:e1:93:a0:4d:ed:0e:ae:5b:b9:
                    a4:0e:23:a9:70:e0:48:bc:e5:42:f8:c3:e9:0b:32:
                    85:3a:32:be:dc:90:6e:01:92:7d:74:95:38:f7:20:
                    7c:0a:21:0c:da:3d:b7:af:a6:9e:fb:3f:e6:b1:50:
                    27:5f:ae:23:a8:2c:2c:c6:f0:40:12:62:74:b1:a7:
                    33:5a:4e:bc:5a:36:eb:bd:55:9b:68:de:c0:32:d5:
                    c1:e1:8f:e7:09:88:7c:3c:8b
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha1WithRSAEncryption          # 为请求文件数字签名时使用的算法
         2a:29:88:cd:28:aa:4d:0a:fc:03:35:e0:de:63:29:ce:c7:55:
         c3:fc:e6:20:01:4e:37:4a:ad:37:69:15:1c:29:e9:ea:20:29:
         2f:91:79:14:13:e1:f4:95:83:2d:5d:c0:cb:fe:b8:03:ca:39:
         4a:bf:06:ab:b6:06:7f:9e:0a:0a:4b:0b:57:85:de:14:8a:f2:
         08:da:13:4d:8e:89:44:de:07:de:f0:a1:a3:32:99:d7:ff:ca:
         31:90:92:28:49:31:13:a9:e7:be:d7:57:b3:f0:4d:9f:c9:ad:
         43:c2:84:27:2a:95:e3:4e:de:6a:c9:af:15:59:f9:6d:0c:6f:
         16:98

还是能够只输出subject部分的始末。

[[email protected] tmp]# openssl req -in req2.csr -subject -noout
subject=/C=CN/ST=FJ/L=XM/CN=www.youwant.com

也足以使用”-pubkey”输出证书请求文件中的公钥内容。如若从报名证书请求时所提供的私钥中领到出公钥,那两段公钥的始末是完全1致的。

[[email protected] tmp]# openssl req -in req1.csr -pubkey -noout
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDG8fW37AtBk5+w4o3xhbOehW/G
rV/QAUQxP8JhO+I143X2x+GToE3tDq5buaQOI6lw4Ei85UL4w+kLMoU6Mr7ckG4B
kn10lTj3IHwKIQzaPbevpp77P+axUCdfriOoLCzG8EASYnSxpzNaTrxaNuu9VZto
3sAy1cHhj+cJiHw8iwIDAQAB
-----END PUBLIC KEY-----

[[email protected] tmp]# openssl rsa -in pri_key.pem -pubout
writing RSA key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDG8fW37AtBk5+w4o3xhbOehW/G
rV/QAUQxP8JhO+I143X2x+GToE3tDq5buaQOI6lw4Ei85UL4w+kLMoU6Mr7ckG4B
kn10lTj3IHwKIQzaPbevpp77P+axUCdfriOoLCzG8EASYnSxpzNaTrxaNuu9VZto
3sAy1cHhj+cJiHw8iwIDAQAB
-----END PUBLIC KEY-----

(三).钦定证书请求文件中的签字算法。

在意到证书请求文件的尾部分有一项是”Signature
Algorithm”,它表示使用的是哪一种数字签字算法。默许使用的是sha一,还扶助md伍、sha51二等,越来越多可协理的签订契约算法见”openssl
dgst –help”中所列出内容。举例此处钦命md伍算法。

[[email protected] tmp]# openssl req -new -key pri_key.pem -out req2.csr -md5

[[email protected] tmp]# openssl req -in req2.csr -noout -text | grep Algo
            Public Key Algorithm: rsaEncryption
    Signature Algorithm: md5WithRSAEncryption

(四).验证请求文件的数字具名,那样能够证实出注脚请求文件是还是不是被篡改过。上面的通令中”-verify”选项表示验证证书请求文件的数字具名。

[[email protected] tmp]# openssl req -verify -in req2.csr
verify OK
-----BEGIN CERTIFICATE REQUEST-----
MIIBgDCB6gIBADBBMQswCQYDVQQGEwJDTjELMAkGA1UECAwCRkoxCzAJBgNVBAcM
AlhNMRgwFgYDVQQDDA93d3cueW91d2FudC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAMbx9bfsC0GTn7DijfGFs56Fb8atX9ABRDE/wmE74jXjdfbH4ZOg
Te0Orlu5pA4jqXDgSLzlQvjD6QsyhToyvtyQbgGSfXSVOPcgfAohDNo9t6+mnvs/
5rFQJ1+uI6gsLMbwQBJidLGnM1pOvFo2671Vm2jewDLVweGP5wmIfDyLAgMBAAGg
ADANBgkqhkiG9w0BAQQFAAOBgQCcvWuwmeAowbqLEsSpBVGnRfDEeH897v1r/SaX
9yYhpc3Kp5HKQ3LpSZBYGxlIsE6I3DMT5d1wcPeKRi8B6BIfemYOEbhLVGLmhNAg
iHyV/s1/TaOc31QZMY1HvD5BTOlhed+MpevWAFX2CRXuhKYBOimCrGNJxrFj4srJ
M1zDOA==
-----END CERTIFICATE REQUEST-----

结果中首先行的”verify
OK”表示证书请求文件是完好未被篡改过的,但与此同时输出了证件请求的始末。借使不想出口那有的内容,使用”-noout”选项就能够。

[[email protected] tmp]# openssl req -verify -in req2.csr -noout
verify OK

(5).自签署证书,可用来自行建造根CA时。

行使openssl
req自签订契约证书时,供给采取”-x50玖”选项,由于是签订契约证书请求文件,所以能够钦定”-days”钦命所公布的评释有效期。

[[email protected] tmp]# openssl req -x509 -key pri_key.pem -in req1.csr -out CA1.crt -days 365

由于openssl
req命令的根本效率是创制和管理证书请求文件,所以没有提供对注解文件的军管力量,暂且也就不得不通过cat来查看证书文件CA一.crt了。

[[email protected] tmp]# cat CA1.crt
-----BEGIN CERTIFICATE-----
MIICUDCCAbmgAwIBAgIJAIrxQ+zicLzIMA0GCSqGSIb3DQEBBQUAMEExCzAJBgNV
BAYTAkNOMQswCQYDVQQIDAJGSjELMAkGA1UEBwwCWE0xGDAWBgNVBAMMD3d3dy55
b3V3YW50LmNvbTAeFw0xNzA2MjcwNzU0NTJaFw0xODA2MjcwNzU0NTJaMEExCzAJ
BgNVBAYTAkNOMQswCQYDVQQIDAJGSjELMAkGA1UEBwwCWE0xGDAWBgNVBAMMD3d3
dy55b3V3YW50LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxvH1t+wL
QZOfsOKN8YWznoVvxq1f0AFEMT/CYTviNeN19sfhk6BN7Q6uW7mkDiOpcOBIvOVC
+MPpCzKFOjK+3JBuAZJ9dJU49yB8CiEM2j23r6ae+z/msVAnX64jqCwsxvBAEmJ0
saczWk68WjbrvVWbaN7AMtXB4Y/nCYh8PIsCAwEAAaNQME4wHQYDVR0OBBYEFMLa
Dm9yZeRh3Bu+zmpU2iKbQBQgMB8GA1UdIwQYMBaAFMLaDm9yZeRh3Bu+zmpU2iKb
QBQgMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAd2CJPe987RO34ySA
7EC0zQkhDz9d2vvvPWYjq0XA/frntlKKhgFwypWPBwwFTBwfvLHMnNpKy0zXXAkB
1ttgzMgka/qv/gcKoLN3dwM7Hz+eCl/cXVJmVG7PqAjfqSr6IyM7v/B6dC0Xv49m
h5mv24HqKtJoEeI0iARaNmOxKeE=
-----END CERTIFICATE-----

实质上,”-x50九”选项和”-new”或”-newkey”合营使用时,可以不点名证书请求文件,它在自签定进度上校在内部存款和储蓄器中自行创造证书请求文件,当然,既然要创制证书请求文件,就必要人工输入申请者的音信了。比如:

[[email protected] tmp]# openssl req -new -x509 -key pri_key.pem -out CA1.crt -days 365

骨子里,使用”-x50玖”选项后,”-new”或”-newkey”将意味着创立3个证书文件而不是3个注解请求文件。

(6).让openssl req自动成立所需的私钥文件。

在前头的装有例子中,在急需私钥的时候都醒目利用了”-key”选项提供私钥。其实假如不提供,openssl
req会在其他索要私钥的地点机关创制私钥
,并保留在特定的职位,默许的保存地方为当前目录,文件名叫privkey.pem,具体保存的岗位和文件名由配置文件(默感到/etc/pki/tls/openssl.cnf)决定,此处不探讨该公文。当然,openssl
req命令的”-keyout”选项能够钦命私钥保存地方。

例如:

[[email protected] tmp]# openssl req -new -out req3.csr
Generating a 2048 bit RSA private key          # 自动创建私钥
..................+++
.....................................+++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:                         # 要求输入加密私钥文件的密码,且要求长度为4-1024个字符
Verifying - Enter PEM pass phrase:
-----
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) [XX]:^C

而是,openssl
req在活动创设私钥时,将延续加密该私钥文件,并提示输入加密的密码。能够利用”-nodes”选项禁止加密私钥文件。

[[email protected] tmp]# openssl req -new -out req3.csr -nodes
Generating a 2048 bit RSA private key
.............+++
.............................................................................+++
writing new private key to 'privkey.pem'
-----
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) [XX]:^C

点名自动创制私钥时,私钥文件的保留地点和文书名。使用”-keyout”选项。

[[email protected] tmp]# openssl req -new -out req3.csr -nodes -keyout myprivkey.pem
Generating a 2048 bit RSA private key
......................+++
............................................................+++
writing new private key to 'myprivkey.pem'
-----
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) [XX]:^C

(7).使用”-newkey”选项。

“-newkey”选项和”-new”选项类似,只但是”-newkey”选项能够直接钦赐私钥的算法和长短,所以它根本用在openssl
req自动创造私钥时。

它的利用格式为”-newkey
arg”,当中arg的格式为”rsa:numbits”,rsa表示创制rsa私钥,numbits表示私钥的尺寸,假诺不给定长度(即”-newkey
rsa”)则暗许从配置文件中读取长度值。其实不止帮助rsa私钥,只然目前后主导都以用rsa私钥,所以暗许就动用rsa。

[[email protected] tmp]# openssl req -newkey rsa:2048 -out req3.csr -nodes -keyout myprivkey.pem
Generating a 2048 bit RSA private key
....+++
.......................................................+++
writing new private key to 'myprivkey.pem'
-----
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) [XX]:^C

经过地点1系类的例如表明后,想必openssl
req的各核心选项的用法都通了。从地点的演示中也意识了,openssl
req平时会借助于配置文件(默认为/etc/pki/tls/openssl.cnf)中的值。所以,先将openssl
req的授命用法计算下,再简单表明下布置文件花潮req有关的内容。

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         :显示操作执行的详细信息

以下则是布置文件中(暗中同意/etc/pki/tls/openssl.cnf)关于req段落的安顿格式。

input_password :密码输入文件,和命令行的"-passin"选项对应,密码格式以及意义见"openssl密码格式"
output_password:密码的输出文件,与命令行的"-passout"选项对应,密码格式以及意义见"openssl密码格式"
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)是一个扩展属性段落,用于指定证书请求时可被识别的字段名称。

以下是暗中认可的布置文件格式及值。关于配置文件的详细分析见”配置文件”部分。

[ req ]
default_bits            = 2048
default_md              = sha1
default_keyfile         = privkey.pem
distinguished_name      = req_distinguished_name
attributes              = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
string_mask = utf8only
[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = XX
countryName_min                 = 2
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name)
localityName                    = Locality Name (eg, city)
localityName_default    = Default City
0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = Default Company Ltd
organizationalUnitName          = Organizational Unit Name (eg, section)
commonName                      = Common Name (eg, your name or your server\'s hostname)
commonName_max                  = 64
emailAddress                    = Email Address
emailAddress_max                = 64

 

回到openssl连串小说大纲:

SSL(Secure Socket
Layer,安全套接字层)是为互连网通信提供安全保险和数据完整性的1种安全协议,由Netscape公司研究开发。SSL协议位于互联网的应用层和传输层之间,它承受来自上层网络应用层协议(如http、ftp)的数据报文,并将其再1遍开始展览打包、加密,再传递给下层网络传输层协议(如tcp、udp)。该协议提供的劳动首要有:


转发请申明出处:

req(生成证书请求和自行建造CA),opensslreq
伪命令req大致有二个效益:生成证书请求文件、验证证书请求文件和开创根CA。由于openssl
req命令选…

a、数据来源可靠性:1回互连网连接中的客户端和服务器都会被证实是还是不是是对方所期望连接的主机。确定保障数量将被正确地发送至客户端和服务器。

伪命令req大概有一个成效:生成证书请求文件、验证证书请求文件和成立根CA。由于openssl
req命令选项较多,所以先各举多少个例证,再汇总给出openssl
req的挑选表明。若已谙习openssl
req和注脚请求相关知识,可一贯跳至后文翻看openssl
req选项整理,若不熟悉,提出以前向后一步一步阅读。

b、数据机密性:数据在出殡和埋葬以前被加密,保证其在网络传输进度中,不会被窃取。

第一表达下生成证书请求须要什么:申请者须求将和谐的音信及其公钥放入证书请求中。但在实操进程中,所急需提供的是私钥而非公钥,因为它会自行从私钥中领到公钥。其余,还必要将提供的数目开始展览数字签字(使用单向加密),保障该证件请求文件的完整性和一致性,制止别人盗窃后张开曲解,举个例子黑客将为www.baidu.com所申请的表明请求文件中的集团名改成对方的店肆名称,尽管能够篡改成功,则签署该证件请求时,所公布的证书音讯上将成为外人新闻。

c、数据完整性:数据在接收之后,接收端主机会根据数据的特征码以证实数据的完整性,保证其在网络传输进程中,不会被歪曲。

金沙澳门官网7817网址 1

就SSL提供的上述劳动中,以数量出自可信性最为关键。SSL选取非对称加密算法(如翼虎SA)来保管网络中互联双方的真正。互联双方各装有1对密钥,公私钥。个中公钥是大廷广众的,网络中的任何人都得以拿走任何主机或用户的公钥,而只是私钥是保密的。且公钥是从其对应私钥中领抽取来的。对于公钥加密的文书,仅能透过其相应的私钥解密,因此便保险了数额的机密性。对于私钥加密的公文,仅能通过其相应的公钥解密,因此便保险了数据来源于的可信性。

因而首先步正是先成立出私钥pri_key.pem。其实私钥文件是非必不可缺的,因为openssl
req在急需它的时候会自动创制在特定的路子下,此处为了举个例子表明,所以创设它。

openssl正是SSL的2个开源落成。本文后续内容将简介如何用openssl实行加解密、提取数据特征码、生成密钥,以及改变数字证书请求、创造私有CA和签发数字证书。

[root@xuexi tmp]# openssl genrsa -out pri_key.pem

(一).依据私钥pri_key.pem生成贰个新的证书请求文件。当中”-new”表示新生成叁个新的注脚请求文件,”-key”钦点私钥文件,”-out”钦赐输出文件,此处输出文件即为证书请求文件。

壹、利用openssl进行加解密

openssl enc -ciphername [-in filename] [-out filename] [-e]
[-d] …

-ciphername钦定加密算法,比方:-base64

-in filename钦赐要加密的文书,filename为该文件的文本名

-out filename内定将加密后的多寡保存到filename钦命的文书中

-e内定为加密经过,此为暗许进程

-d钦点为解密进程

示例:

# openssl enc -base64 -in plaintext.txt -out ciphertext.txt

运用base64加密算法将plaintext.txt文件中的数据加密,并保留到ciphertext.txt文件中。

# openssl enc -base64 -in ciphertext.txt -d

采纳base6肆算法解密ciphertext.txt文件中的数据,并打字与印刷到显示器幕。

金沙澳门官网7817网址 2

[root@xuexi tmp]# openssl req -new -key pri_key.pem -out req1.csr
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) [XX]:CN
State or Province Name (full name) []:FJ
Locality Name (eg, city) [Default City]:XM
Organization Name (eg, company) [Default Company Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:www.youwant.com
Email Address []:

Please enter the following 'extra' attributes    # 下面两项几乎不用考虑,留空即可
to be sent with your certificate request
A challenge password []:.
An optional company name []:.

在敲下回车键后,私下认可会进来相互方式让您提供你个人的音信,须要小心的是,假设有些音讯不想填能够选拔使用暗中同意值,也得以采用留空不填,直接回车将选用采纳暗中同意值,输入点”.”将代表该音信项留空。但一些项是必填项,不然以往声明签署时将停业。如”Common
Name”,它表示的是为哪个域名、子域名或哪个主机申请证书,现在注脚请求被签署后将只可以动用于”Common
Name”所钦赐的地点。具体哪些必填项还供给看所使用的布署文件(暗中认可的布局文件为/etc/pki/tls/openssl.cnf)中的定义,此处目前不斟酌布署相关内容,仅提供Common
Name就可以。

2、利用openssl提取数据特征码

openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1]
[-c] [file…] …

-md5|-md四|-md二|-sha一|-sha|-mdc二|-ripemd160|-dss一点名提取数额特征码的单向加密算法

-c内定特征码输出格式,每两位跟上3个冒号

file内定要提取数额特征码的文书

示例:

# openssl dgst -md5 -c plaintext.txt

使用md伍单项加密算法提取plaintext.txt文件的数目特征码。固然是当文件中的数据遭到微小的篡改,再一次总括得出的数码特征码都会和原先的特征码相形见绌。

金沙澳门官网7817网址 3

除此之外”-new”选项,使用”-newkey”选项也能成立证书请求文件,此处暂不如如表明”-newkey”的用法,后文子禽有示范。

(2).查看证书请求文件内容。

3、利用openssl生成密钥

openssl genrsa [-out filename] [numbits] …

-out filename钦赐将转换的私钥保存到filename文件中

numbits钦赐私钥的长度(位数)

openssl rsa [-in filename] [-out filename] [-pubout] …

-in filename钦定私钥文件

-out filename钦命将从私钥中提收取的公钥保存到filename文件中

-pubout钦定从私钥中提取公钥

示例:

# (umask 077; openssl genrsa -out private.key 512)

括号中的命令将在子shell中运作。第3条命令改造子shell中的umask值,令生成的文件除属主外,其余人对她无任何权力,保障了私钥的机密性。采纳卡宴SA非对称加密算法生成5十二个人的私钥,并将其保存到private.key文件中。

# openssl rsa -in private.key -pubout

从private.key中的私钥中领到出公钥,并打字与印刷到展示显示器。

金沙澳门官网7817网址 4

当今晚已转移了二个新的证件请求文件req一.csr。查看下该证件请求文件的剧情。

[root@xuexi tmp]# cat req1.csr
-----BEGIN CERTIFICATE REQUEST-----             # 证书请求的内容
MIIBgDCB6gIBADBBMQswCQYDVQQGEwJDTjELMAkGA1UECAwCRkoxCzAJBgNVBAcM
AlhNMRgwFgYDVQQDDA93d3cueW91d2FudC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAMbx9bfsC0GTn7DijfGFs56Fb8atX9ABRDE/wmE74jXjdfbH4ZOg
Te0Orlu5pA4jqXDgSLzlQvjD6QsyhToyvtyQbgGSfXSVOPcgfAohDNo9t6+mnvs/
5rFQJ1+uI6gsLMbwQBJidLGnM1pOvFo2671Vm2jewDLVweGP5wmIfDyLAgMBAAGg
ADANBgkqhkiG9w0BAQUFAAOBgQAqKYjNKKpNCvwDNeDeYynOx1XD/OYgAU43Sq03
aRUcKenqICkvkXkUE+H0lYMtXcDL/rgDyjlKvwartgZ/ngoKSwtXhd4UivII2hNN
jolE3gfe8KGjMpnX/8oxkJIoSTETqee+11ez8E2fya1DwoQnKpXjTt5qya8VWflt
DG8WmA==
-----END CERTIFICATE REQUEST-----

四、利用openssl生成数字证书请求

openssl req [-in filename] [-out filename] [-text] [-pubkey]
[-new] [-newkey rss:bits] [-nodes] [-key filename] [-keyout
filename] [-config filename] [-x509] [-days n] [-batch] …

-in filename从内定文件中读取数字证书请求

-out filename将扭转的数字证书请求、公钥等消息保存到钦命文件中

-text以文本格式输出数字证书请求的始末

-pubkey输出公钥

-new新建数字证书请求

-newkey rsa:bits新建钦定位数的凯雷德SA密钥,和-key选项互斥

-nodes同盟-newkey选项,钦定生成的密钥文件不加密

-key filename内定已有密钥的文书,和-newkey选项互斥

-keyout filename将扭转的私钥保存到内定的文书中

-config filename内定参数文件,默认为/etc/pki/tls/openssl.cnf

-x509钦赐生成自签署证书

-days n协作-x50九选项,钦点数字证书限制期限限

-batch非交互式格局

a、使用已有私钥生成证书请求

# openssl req -new -key private.key -out client.csr

利用已有KugaSA私钥、输入主体相关音信,生成证书请求文件,并将其保存至client.csr文件。

金沙澳门官网7817网址 5

金沙澳门官网7817网址 6

# openssl req -new -key private.key -out client.csr -batch -pubkey

接纳已有索罗德SA私钥生成证书请求文件,钦定-batch选项,主体相关新闻从布局文件中读取。并将证件请求和公钥数据保存至client.csr文件。

金沙澳门官网7817网址 7

b、自动生成密钥和证件请求

# openssl req -new -newkey rsa:512 -out client.csr -keyout
private.key -batch -pubkey

从配置文件中读取主体相关音讯,自动生成5十二个人君越SA密钥和注解请求。将私钥保存至private.key文件中;将公钥和证件请求保存至client.csr文件中。

金沙澳门官网7817网址 8

金沙澳门官网7817网址 9

# openssl rsa -in private.key

输入保存密钥时设置的密码,解密private.key中的密钥。

金沙澳门官网7817网址 10

# openssl req -new -newkey rsa:512 -out client.csr -keyout
private.key -batch -pubkey -nodes

从布署文件中读取主体相关新闻,自动生成512人QX56SA密钥和表明请求。将私钥保存至private.key文件中;将公钥和证件请求保存至client.csr文件中。钦赐-nodes选项,密钥文件不加密。

金沙澳门官网7817网址 11

c、生成自签证书

# openssl req -new -x509 -newkey rsa:512 -out client2.crt -keyout
private2.key -batch -pubkey -nodes

在自动生成证书请求命令中加多-x50九选项就可以。

金沙澳门官网7817网址 12

d、查看证书请求和证件内容

# openssl req -in client.csr -text | less

翻看证书请求文件的剧情。

金沙澳门官网7817网址 13

# openssl x509 -in client2.crt -text | less

查看自签证书文件的剧情。

金沙澳门官网7817网址 14

更实际的能够行使openssl
req命令查看。命令如下,在这之中”-in”选项钦赐的是证书请求文件。

[root@xuexi tmp]# openssl req -in req1.csr
-----BEGIN CERTIFICATE REQUEST-----             # 证书请求的内容
MIIBgDCB6gIBADBBMQswCQYDVQQGEwJDTjELMAkGA1UECAwCRkoxCzAJBgNVBAcM
AlhNMRgwFgYDVQQDDA93d3cueW91d2FudC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAMbx9bfsC0GTn7DijfGFs56Fb8atX9ABRDE/wmE74jXjdfbH4ZOg
Te0Orlu5pA4jqXDgSLzlQvjD6QsyhToyvtyQbgGSfXSVOPcgfAohDNo9t6+mnvs/
5rFQJ1+uI6gsLMbwQBJidLGnM1pOvFo2671Vm2jewDLVweGP5wmIfDyLAgMBAAGg
ADANBgkqhkiG9w0BAQUFAAOBgQAqKYjNKKpNCvwDNeDeYynOx1XD/OYgAU43Sq03
aRUcKenqICkvkXkUE+H0lYMtXcDL/rgDyjlKvwartgZ/ngoKSwtXhd4UivII2hNN
jolE3gfe8KGjMpnX/8oxkJIoSTETqee+11ez8E2fya1DwoQnKpXjTt5qya8VWflt
DG8WmA==
-----END CERTIFICATE REQUEST-----

五、利用openssl创设私有CA并签发数字证书

a、遵照/etc/pki/tls/openssl.cnf文件的参数配置,在/etc/pki/CA/private/目录下生成私钥,并保存为cakey.pem。

# openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048

b、根据/etc/pki/tls/openssl.cnf文件的参数配置,在/etc/pki/CA/目录下转移自签证书,并保留为cacert.pem。

# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out
/etc/pki/CA/cacert.pem

c、根据/etc/pki/tls/openssl.cnf文件的参数配置,在/etc/pki/CA/目录下生成index.txt(此文件保留已签字的证书音讯),serial,并向serial文件中覆盖重定向0一数字(此为签署证书的号码)。

# touch /etc/pki/CA/index.txt && touch /etc/pki/CA/serial && echo 01
> /etc/pki/CA/serial

d、签署证书请求。

# openssl ca -in client.csr -out client.crt

金沙澳门官网7817网址 15

金沙澳门官网7817网址 16

经过查看/etc/pki/CA/index.txt文件,可窥见自行建造的私有CA已成功签署了1份申明。

查看请求文件时,能够整合别的多少个挑选输出特定的剧情。”-text”选项表示以文本格式输出证书请求文件的始末。

参考文献

[1] Linux.cn. (2016).openssl 证书请求和自签令 req 详解-本事 ◆
学习|Linux.中夏族民共和国-开源社区
. [online] Available at:
[Accessed 10 May 2016].

[2] Wikipedia. (2016).Transport Layer Security. [online]
Available at:
[Accessed 10 May 2016].

[root@xuexi tmp]# openssl req -in req1.csr -text
Certificate Request:                                            # 此为证书请求文件头
    Data:
        Version: 0 (0x0)
        Subject: C=CN, ST=FJ, L=XM, CN=www.youwant.com          # 此为提供的个人信息,注意左侧标头为"Subject",这是很重要的一项
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption                 # 使用的公钥算法
                Public-Key: (1024 bit)                          # 公钥的长度
                Modulus:
                    00:c6:f1:f5:b7:ec:0b:41:93:9f:b0:e2:8d:f1:85:
                    b3:9e:85:6f:c6:ad:5f:d0:01:44:31:3f:c2:61:3b:
                    e2:35:e3:75:f6:c7:e1:93:a0:4d:ed:0e:ae:5b:b9:
                    a4:0e:23:a9:70:e0:48:bc:e5:42:f8:c3:e9:0b:32:
                    85:3a:32:be:dc:90:6e:01:92:7d:74:95:38:f7:20:
                    7c:0a:21:0c:da:3d:b7:af:a6:9e:fb:3f:e6:b1:50:
                    27:5f:ae:23:a8:2c:2c:c6:f0:40:12:62:74:b1:a7:
                    33:5a:4e:bc:5a:36:eb:bd:55:9b:68:de:c0:32:d5:
                    c1:e1:8f:e7:09:88:7c:3c:8b
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha1WithRSAEncryption                  # 为请求文件数字签名时使用的算法
         2a:29:88:cd:28:aa:4d:0a:fc:03:35:e0:de:63:29:ce:c7:55:
         c3:fc:e6:20:01:4e:37:4a:ad:37:69:15:1c:29:e9:ea:20:29:
         2f:91:79:14:13:e1:f4:95:83:2d:5d:c0:cb:fe:b8:03:ca:39:
         4a:bf:06:ab:b6:06:7f:9e:0a:0a:4b:0b:57:85:de:14:8a:f2:
         08:da:13:4d:8e:89:44:de:07:de:f0:a1:a3:32:99:d7:ff:ca:
         31:90:92:28:49:31:13:a9:e7:be:d7:57:b3:f0:4d:9f:c9:ad:
         43:c2:84:27:2a:95:e3:4e:de:6a:c9:af:15:59:f9:6d:0c:6f:
         16:98
-----BEGIN CERTIFICATE REQUEST-----                    
MIIBgDCB6gIBADBBMQswCQYDVQQGEwJDTjELMAkGA1UECAwCRkoxCzAJBgNVBAcM
AlhNMRgwFgYDVQQDDA93d3cueW91d2FudC5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAMbx9bfsC0GTn7DijfGFs56Fb8atX9ABRDE/wmE74jXjdfbH4ZOg
Te0Orlu5pA4jqXDgSLzlQvjD6QsyhToyvtyQbgGSfXSVOPcgfAohDNo9t6+mnvs/
5rFQJ1+uI6gsLMbwQBJidLGnM1pOvFo2671Vm2jewDLVweGP5wmIfDyLAgMBAAGg
ADANBgkqhkiG9w0BAQUFAAOBgQAqKYjNKKpNCvwDNeDeYynOx1XD/OYgAU43Sq03
aRUcKenqICkvkXkUE+H0lYMtXcDL/rgDyjlKvwartgZ/ngoKSwtXhd4UivII2hNN
jolE3gfe8KGjMpnX/8oxkJIoSTETqee+11ez8E2fya1DwoQnKpXjTt5qya8VWflt
DG8WmA==
-----END CERTIFICATE REQUEST-----

将”-text”和”-noout”结合使用,则只输出证书请求的文书底部分。