您的位置:新葡亰496net > 电脑系统 > 新葡亰496netopenSSL及创立私有CA,openssl签订和自签

新葡亰496netopenSSL及创立私有CA,openssl签订和自签

发布时间:2019-09-11 16:40编辑:电脑系统浏览(184)

    openssl体系小说:http://www.cnblogs.com/f-ck-need-u/p/7048359.html**

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

    伪命令req大概有3个效果与利益:生成证书央求文件、验证证书诉求文件和开创根CA。由于openssl req命令选项比较多,所以先各举几个例证,再汇总给出openssl req的接纳表达。若已熟稔openssl req和证件须要相关文化,可直接跳至后文查看openssl req选项整理,若面生,提出在此从前向后一步一步阅读。

    第一表明下生成证书央浼须要什么:申请者须要将和煦的新闻及其公钥放入证书诉求中。但在实操进度中,所须要提供的是私钥而非公钥,因为它会自行从私钥中领取公钥。别的,还须要将提供的数额开展数字签字(使用单向加密),保险该证件央浼文件的完整性和一致性,幸免别人盗窃后实行曲解,例如红客将为www.baidu.com所申请的证明诉求文件中的公司名改成对方的百货店名称,如若能够篡改成功,则签定该证件央求时,所发布的证书新闻中校成为外人音讯。

    据此首先步正是先创制出私钥pri_key.pem。其实私钥文件是非必不可缺的,因为openssl req在急需它的时候会自行创制在特定的门路下,此处为了比方表达,所以成立它。

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

    (1).依据私钥pri_key.pem生成二个新的评释央浼文件。个中"-new"表示新生成一个新的证件伏乞文件,"-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).查看证书必要文件内容。

    至今曾经变化了三个新的证书央浼文件req1.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"输出证书央浼文件中的公钥内容。要是从报名证书央浼时所提供的私钥中提收取公钥,这两段公钥的开始和结果是完全一致的。

    [[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-----
    

    (3).钦命证书央求文件中的具名算法。

    在意到证书央求文件的底部分有一项是"Signature Algorithm",它意味着使用的是哪一种数字签字算法。私下认可使用的是sha1,还援助md5、sha512等,越来越多可支撑的签订算法见"openssl dgst --help"中所列出内容。举例此处钦命md5算法。

    [[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
    

    (4).验证诉求文件的数字具名,这样能够注明出评释诉求文件是还是不是被篡改过。下边包车型地铁指令中"-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自签订证书时,必要利用"-x509"选项,由于是签订协议证书央求文件,所以可以钦定"-days"钦定所透露的评释保藏期。

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

    是因为openssl req命令的最主要功能是创设和保管证书央浼文件,所以并未有提供对证件文件的治本技术,一时也就只好通过cat来查阅证书文件CA1.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-----
    

    实际上,"-x509"选项和"-new"或"-newkey"同盟使用时,能够不钦点证书伏乞文件,它在自签定进度准将在内部存款和储蓄器中活动创造证书伏乞文件,当然,既然要创设证书央浼文件,就必要人工输入申请者的新闻了。举个例子:

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

    实质上,使用"-x509"选项后,"-new"或"-newkey"将代表创造贰个证件文件并不是贰个证书哀告文件。

    (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
    

    通过下边一系类的比方表达后,想必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,安全套接字层)是为网络通讯提供安全保持和数据完整性的一种安全公约,由Netscape公司研究开发。SSL合同位于网络的应用层和传输层之间,它接受来自上层网络应用层合同(如http、ftp)的多寡报文,并将其再二回举办李包裹装、加密,再传递给下层网络传输层公约(如tcp、udp)。该公约提供的劳务注重有:



    转发请表明出处:

    req(生成证书乞求和自行建造CA),opensslreq 伪命令req大概有3个职能:生成证书须求文件、验证证书央求文件和创设根CA。由于openssl req命令选...

    a、数据出自可相信性:贰遍网络连接中的顾客端和服务器都会被申明是不是是对方所期望连接的主机。确定保障数量将被精确地发送至客户端和服务器。

    正文目录:

    伪命令req差非常少有3个功用:生成证书伏乞文件、验证证书乞求文件和创办根CA。由于openssl req命令选项比较多,所以先各举多少个例子,再集中给出openssl req的精选表达。若已熟知openssl req和证件央求相关文化,可直接跳至后文查看openssl req选项整理,若不熟谙,提议之前向后一步一步阅读。

    b、数据机密性:数据在发送以前被加密,保证其在互联网传输进度中,不会被窃取。

    1.1 选择自定义配置文件的达成方式

    先是表达下生成证书须要需求什么:申请者要求将团结的消息及其公钥归入证书央求中。但在实际操作进程中,所需求提供的是私钥而非公钥,因为它会活动从私钥中提取公钥。别的,还索要将提供的数据举办数字签字(使用单向加密),有限支撑该证件恳求文件的完整性和一致性,幸免别人盗窃后开展曲解,比如红客将为www.baidu.com所申请的证件央浼文件中的公司名改成对方的公司名称,假使能够篡改成功,则签订该证件恳求时,所揭发的证件音讯上校成为旁人新闻。

    c、数据完整性:数据在吸收接纳之后,接收端主机遇依据数据的特征码以验证数据的完整性,保证其在网络传输进度中,不会被曲解。

    1.2 采取默许配置文件openssl.cnf的贯彻方式

    新葡亰496net 1

    就SSL提供的以上劳动中,以多少来自可相信性最为根本。SSL选择非对称加密算法(如福特ExplorerSA)来担保网络中互联双方的实际。互联双方各具备一对密钥,公私钥。个中公钥是当面包车型客车,网络中的任什么人都足以收获别的主机或客户的公钥,而只是私钥是保密的。且公钥是从其对应私钥中提收取来的。对于公钥加密的文书,仅能经过其对应的私钥解密,由此便保险了数据的机密性。对于私钥加密的文本,仅能由此其对应的公钥解密,因此便保证了数码来源的可相信性。


    据此率先步正是先创立出私钥pri_key.pem。其实私钥文件是非不可或缺的,因为openssl req在须要它的时候会自动成立在特定的不二诀窍下,此处为了比如说明,所以成立它。

    openssl就是SSL的一个开源完毕。本文后续内容将简介怎样用openssl进行加解密、提取数据特征码、生成密钥,以及变化数字证书央求、创设私有CA和签发数字证书。

    1.1 选择自定义配置文件的贯彻格局

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

    1.自建CA

    自行建造CA的建制:1.生成私钥;2.创造证书诉求;3.应用私钥对注解须要具名。

    鉴于测量检验情形,所以自行建造的CA只可以是根CA。所利用的安插文件如下。

    [default]
    name = root-ca    /* 变量*/
    default_ca = CA_default
    name_opt = ca_default
    cert_opt = ca_default
    
    [CA_default]
    home = .     /* 变量*/
    database = $home/db/index
    serial = $home/db/serial
    crlnumber = $home/db/crlnumber
    certificate = $home/$name.crt
    private_key = $home/private/$name.key
    RANDFILE = $home/private/random
    new_certs_dir = $home/certs
    unique_subject = no
    copy_extensions = none
    default_days = 3650
    default_crl_days = 365
    default_md = sha256
    policy = policy_to_match
    
    [policy_to_match]
    countryName = match
    stateOrProvinceName = optional
    organizationName = match
    organizationalUnitName = optional
    commonName = supplied
    emailAddress = optional
    
    [CA_DN]
    countryName = "C"
    contryName_default = "CN"
    organizationName = "O"
    organizationName_default = "jmu"
    commonName = "CN"
    commonName_default = "longshuai.com"
    
    [req]
    default_bits = 4096
    encrypt_key = no
    default_md = sha256
    utf8 = yes
    string_mask = utf8only
    # prompt = no  /* 测试时该选项导致出错,所以将其注释掉*/
    distinguished_name = CA_DN
    req_extensions = ca_ext
    
    [ca_ext]
    basicConstraints = critical,CA:true
    keyUsage = critical,keyCertSign,cRLSign
    subjectKeyIdentifier = hash
    

    (1).依据私钥pri_key.pem生成四个新的证件央浼文件。在那之中"-new"表示新生成一个新的证书诉求文件,"-key"钦点私钥文件,"-out"钦赐输出文件,此处输出文件即为证书乞求文件。

    1、利用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

    应用base64算法解密ciphertext.txt文件中的数据,并打字与印刷到显示显示器。

    新葡亰496net 2

    (1).创建openssl的目录结构

    [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 []:.
    

    (a).创立布局文件

    [root@xuexi ~]# mkdir /ssl;touch /ssl/ssl.conf
    
    [root@xuexi ~]# cd /ssl
    
    [root@xuexi ssl]# vim ssl.conf
    

    在敲下回车键后,暗中同意会步向相互形式令你提供您个人的新闻,须求留神的是,要是某个消息不想填能够选择使用默许值,也能够挑选留空不填,直接回车将精选使用暗中认可值,输入点"."将意味该新闻项留空。但某个项是必填项,不然今后注解签定时将退步。如"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|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1点名提取数据特征码的单向加密算法

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

    file钦点要提取数额特征码的公文

    示例:

    # openssl dgst -md5 -c plaintext.txt

    动用md5单项加密算法提取plaintext.txt文件的数码特征码。尽管是当文件中的数据遭到微小的篡改,再一次总计得出的数额特征码都会和原先的特征码不相同样。

    新葡亰496net 3

    (b).创设openssl的目录结构中的目录,在上述配置文件中的目录分别为/ssl/db、/ssl/private和/ssl/certs,能够思念将private目录的权限设置为600依旧400。

    [root@xuexi ssl]# mkdir /ssl/{db,private,certs}
    
    [root@xuexi ssl]# chmod -R 400 private/
    

    除去"-new"选项,使用"-newkey"选项也能创制证书央求文件,此处暂不举例表达"-newkey"的用法,后文子禽有示范。

    (2).CA自签名

    平日的证件诉求须求选拔CA的私钥进行签订合同形成证书,既然是自签订证书那自然是利用本人的私钥来签字。能够行使伪命令req、ca、x509出自签字。

    (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中运维。第一条命令改动子shell中的umask值,令生成的文书除属主外,其余人对他无其余权力,保障了私钥的机密性。采取TiguanSA非对称加密算法生成511人的私钥,并将其保存到private.key文件中。

    # openssl rsa -in private.key -pubout

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

    新葡亰496net 4

    动用req伪命令创立CA

    此间有两种格局:1.一步成功,即私钥、证书央浼、自签订左券都在二个下令中成就2.分步完毕,先生成私钥、再成立证书央求、再钦点私钥来签字。方法第22中学实际上生成私钥和证件申请能够统一在一步中实现,证书申请和签定也得以统一在一步中完成。

    艺术一:一步成功

    在底下的一步命令中,使用-new由于并未有一点名私钥输出地点,所以自动保存在ssl.conf中default_keyfile钦命的private.pem中;由于ssl.conf中的req段设置了encrypt_key=no,所以交互时无需输入私钥的加密密码;由于采取req -x509自签署的表明保质期私下认可为30天,而布署文件中req段又无法铺排该期限,所以只能接纳-days来钦赐保质期限,注意那几个-days选项只遵循于x509签名,证书必要中假使钦命了岁月是低效的。

    [root@xuexi ssl]# openssl req -x509 -new -out req.crt -config ssl.conf -days 365
    [root@xuexi ssl]# ll 
    total 24
    drwxr-xr-x 2 root root 4096 Nov 22 09:05 certs
    drwxr-xr-x 2 root root 4096 Nov 22 09:05 db
    drwx------ 2 root root 4096 Nov 22 09:05 private
    -rw-r--r-- 1 root root 3272 Nov 22 10:52 private.pem  /* 注意权限为644 */
    -rw-r--r-- 1 root root 1753 Nov 22 10:52 req.crt
    -rw-r--r-- 1 root root 1580 Nov 22 10:51 ssl.conf
    [root@xuexi ssl]# openssl x509 -noout -dates -in req.crt 
    notBefore=Nov 22 02:52:24 2016 GMT
    notAfter=Nov 22 02:52:24 2017 GMT
    

    措施二:分步达成,这里把各类或然的步骤合併皆身体力行二遍

    >>成立私钥和证件诉求合并而签字独自开展的艺术<<

    [root@xuexi ssl]# openssl req -newkey rsa:1024 -keyout key.pem -out req1.csr -config ssl.conf -days 365
    [root@xuexi ssl]# openssl req -x509 -in req1.csr -key key.pem -out req1.crt
    [root@xuexi ssl]# openssl x509 -noout -dates -in req1.crt/* 注意签名不要配置文件 */
    notBefore=Nov 22 02:58:25 2016 GMT
    notAfter=Dec 22 02:58:25 2016 GMT  /* 可以看到证书请求中指定-days是无效的 */
    [root@xuexi ssl]# ll
    total 36
    drwxr-xr-x 2 root root 4096 Nov 22 09:05 certs
    drwxr-xr-x 2 root root 4096 Nov 22 09:05 db
    -rw-r--r-- 1 root root  912 Nov 22 10:57 key.pem
    drwx------ 2 root root 4096 Nov 22 09:05 private
    -rw-r--r-- 1 root root 3272 Nov 22 10:52 private.pem
    -rw-r--r-- 1 root root  826 Nov 22 10:58 req1.crt
    -rw-r--r-- 1 root root  688 Nov 22 10:57 req1.csr
    -rw-r--r-- 1 root root 1753 Nov 22 10:52 req.crt
    -rw-r--r-- 1 root root 1580 Nov 22 10:51 ssl.conf
    

    >>独自生成私钥,而须要和签订左券合併的方法<<

    [root@xuexi ssl]# (umask 077;openssl genrsa -out key1.pem 1024)
    [root@xuexi ssl]# openssl req -x509 -new -key key1.pem -out req2.crt -config ssl.conf -days 365
    [root@xuexi ssl]# openssl x509 -noout -dates -in req2.crt 
    notBefore=Nov 22 03:28:31 2016 GMT
    notAfter=Nov 22 03:28:31 2017 GMT
    [root@xuexi ssl]# ll
    total 44
    drwxr-xr-x 2 root root 4096 Nov 22 09:05 certs
    drwxr-xr-x 2 root root 4096 Nov 22 09:05 db
    -rw-r--r-- 1 root root  912 Nov 22 10:57 key1.pem
    -rw------- 1 root root  887 Nov 22 11:26 key2.pem
    drwx------ 2 root root 4096 Nov 22 09:05 private
    -rw-r--r-- 1 root root 3272 Nov 22 10:52 private.pem
    -rw-r--r-- 1 root root  826 Nov 22 10:58 req1.crt
    -rw-r--r-- 1 root root  688 Nov 22 10:57 req1.csr
    -rw-r--r-- 1 root root  709 Nov 22 11:28 req2.crt
    -rw-r--r-- 1 root root 1753 Nov 22 10:52 req.crt
    -rw-r--r-- 1 root root 1580 Nov 22 10:51 ssl.conf
    

    >>完全分步实行<<

    [root@xuexi ssl]# rm -rf key* req* private.pem
    [root@xuexi ssl]# (umask 077;openssl genrsa -out key.pem 1024)
    [root@xuexi ssl]# openssl req -new -key key.pem -out req.csr -config ssl.conf 
    [root@xuexi ssl]# openssl req -x509 -key key.pem -in req.csr -out req.crt -days 365
    [root@xuexi ssl]# openssl x509 -noout -dates -in req.crt
    notBefore=Nov 22 04:29:21 2016 GMT
    notAfter=Nov 22 04:29:21 2017 GMT
    [root@xuexi ssl]# ll
    total 28
    drwxr-xr-x 2 root root 4096 Nov 22 09:05 certs
    drwxr-xr-x 2 root root 4096 Nov 22 09:05 db
    -rw------- 1 root root  887 Nov 22 12:28 key.pem
    drwx------ 2 root root 4096 Nov 22 09:05 private
    -rw-r--r-- 1 root root  826 Nov 22 12:29 req.crt
    -rw-r--r-- 1 root root  688 Nov 22 12:28 req.csr
    -rw-r--r-- 1 root root 1580 Nov 22 10:51 ssl.conf
    

    在本节的伊始表达了创立证书央浼时索要提供私钥,这些私钥的效应是为了提供公钥。下边是印证。

    /* 提取私钥key.pem中的公钥到key.pub文件中 */
    [root@xuexi ssl]# openssl rsa -in key.pem -pubout -out key.pub
    /* 输出证书请求req.csr中的公钥部分 */
    [root@xuexi ssl]# openssl req -noout -pubkey -in req.csr     
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC YBneLYbh OZWpiyPqIQHOsU5
    D8il6UF7hi3NgEX/6vtciSmp7GXpXUV1tDglCCTPOfCHcEzeO0Gvky21LUenDsl/
    aC2lraSijpl41 rT4mKNrCyDPZw4iG44 vLHfgHb3wJhBbBk0aw51dmxUat8FHCL
    hU7nx Du637UDlwdEQIDAQAB
    -----END PUBLIC KEY-----
    /* 查看key.pub,可以发现和req.csr中的公钥是一样的 */
    [root@xuexi ssl]# cat key.pub 
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC YBneLYbh OZWpiyPqIQHOsU5
    D8il6UF7hi3NgEX/6vtciSmp7GXpXUV1tDglCCTPOfCHcEzeO0Gvky21LUenDsl/
    aC2lraSijpl41 rT4mKNrCyDPZw4iG44 vLHfgHb3wJhBbBk0aw51dmxUat8FHCL
    hU7nx Du637UDlwdEQIDAQAB
    -----END PUBLIC KEY-----
    

    固然创造证书哀告时利用的是公钥,可是却不能够运用-key选项钦点公钥,而是只能钦命私钥,因为req -new或-newkey选项会调用openssl rsa命令来提取公钥,钦赐公钥该调用将施行倒闭。

    现明早已成形了二个新的注明央求文件req1.csr。查看下该证件伏乞文件的从头到尾的经过。

    使用x509伪命令创设CA

    使用x509伪命令要求提供央浼文件,由此必要先成立证书央浼文件。由于x509伪命令具名时不读取配置文件,所以不需求设置配置文件,若须求某选项,只需使用x509中对应的选项来实现就可以。

    以下x509 -req用于自签署,须要-signkey提供具名所需私钥key.pem。

    [root@xuexi ssl]# openssl req -new -keyout key.pem -out req.csr -config ssl.conf
    [root@xuexi ssl]# openssl x509 -req -in req.csr -signkey key.pem -out x509.crt
    
    [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-----
    

    4、利用openssl生成数字证书乞求

    openssl req [-in filename] [-out filename] [-text] [-pubkey] [-new]新葡亰496netopenSSL及创立私有CA,openssl签订和自签订协议证书的各类得以实现方式。 [-newkey rss:bits] [-nodes] [-key filename] [-keyout filename] [-config filename] [-x509] [-days n] [-batch] ...

    -in filename从钦命文件中读取数字证书乞求

    -out filename将调换的数字证书诉求、公钥等音信用保证存到钦赐文件中

    新葡亰496netopenSSL及创立私有CA,openssl签订和自签订协议证书的各类得以实现方式。-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协作-x509选项,钦命数字证书保藏期限

    -batch非交互式形式

    a、使用已有私钥生成证书央浼

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

    行使已有大切诺基SA私钥、输入主体相关消息,生成证书央浼文件,并将其保存至client.csr文件。

    新葡亰496net 5

    新葡亰496net 6

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

    利用已有EnclaveSA私钥生成证书央求文件,钦点-batch选项,主体相关音信从配置文件中读取。并将证书诉求和公钥数据保存至client.csr文件。

    新葡亰496net 7

    b、自动生成密钥和证书央浼

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

    从安顿文件中读取主体相关音讯,自动生成5十一人CR-VSA密钥和证件乞请。将私钥保存至private.key文件中;将公钥和证书诉求保存至client.csr文件中。

    新葡亰496net 8

    新葡亰496net 9

    # openssl rsa -in private.key

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

    新葡亰496net 10

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

    从布局文件中读取主体相关消息,自动生成511位翼虎SA密钥和证书必要。将私钥保存至private.key文件中;将公钥和表明央求保存至client.csr文件中。内定-nodes选项,密钥文件不加密。

    新葡亰496net 11

    c、生成自签证书

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

    在自动生成证书央求命令中增添-x509选项就能够。

    新葡亰496net 12

    d、查看证书诉求和注脚内容

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

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

    新葡亰496net 13

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

    查看自签证书文件的内容。

    新葡亰496net 14

    使用ca伪命令创立CA

    行使ca伪命令自具名会读取配置文件中的ca部分,所以安顿文件中所需的目录和文书结构都亟待创立好,包含目录db、private、certs,文件db/index、db/serial,并向serial中写入二个体系号。由于是自签订合同,能够自动内定私钥文件,因而对于具名所需CA私钥文件不要求放置在private目录中。

    [root@xuexi ssl]# touch db/{serial,index}
    [root@xuexi ssl]# echo "01" > db/serial
    [root@xuexi ssl]# openssl req -new -keyout key.pem -out req.csr -config ssl.conf
    [root@xuexi ssl]# openssl ca -selfsign -keyfile key.pem -in req.csr -config ssl.conf
    

    在此签订进度中有一次询问,如下:

    Certificate is to be certified until Nov 20 06:34:41 2026 GMT (3650 days)
    Sign the certificate? [y/n]:y
    
    
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    

    若要无交互,则选用-batch步向批管理形式。

    [root@xuexi ssl]# openssl ca -selfsign -keyfile key.pem -in req.csr -config ssl.conf -batch
    

    更具象的能够行使openssl req命令查看。命令如下,当中"-in"选项钦命的是表明乞请文件。

    2.为其余证书央浼签字

    CA为别的央求或证件签名时,要求接纳到的文本有:自身的CA证书和和睦的私钥文件。由此签字进程中供给提供那四个文本。

    [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-----
    

    新葡亰496net,5、利用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文件中覆盖重定向01数字(此为签定证书的数码)。

    # 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

    新葡亰496net 15

    新葡亰496net 16

    由此查看/etc/pki/CA/index.txt文件,可窥见自行建造的私有CA已成功签订了一份申明。

    (1).使用ca伪命令为任何注脚央浼具名

    动用ca伪命令自行建造根CA后,目录结构如下:

    [root@xuexi ssl]# tree -R -C             
    .
    ├── certs
    │   └── 01.pem
    ├── db
    │   ├── index
    │   ├── index.attr
    │   ├── index.old
    │   ├── serial
    │   └── serial.old
    ├── key.pem
    ├── private
    ├── req.csr
    └── ssl.conf
    

    其中01.pem是根CA证书,key.pem是根CA私钥。

    近来要为其余评释诉求具名,首先创立别的央求吧,倘诺该央浼文件/tmp/req.csr。

    [root@xuexi ssl]# openssl req -new -keyout /tmp/key.pem -out /tmp/req.csr -config ssl.conf
    

    行使根证书01.pem为/tmp/req.csr签约。

    [root@xuexi ssl]# openssl ca -in /tmp/req.csr -keyfile key.pem -cert certs/01.pem -config ssl.conf -batch
    

    如此挺麻烦,因为老是为外人具名时都要内定-cert和-keyfile,能够将CA的注脚和CA的私钥移动到安顿文件中钦命的渠道下:

    certificate = $home/$name.crt

    private_key = $home/private/$name.key

    [root@xuexi ssl]# mv certs/01.pem root-ca.crt
    [root@xuexi ssl]# mv key.pem private/root-ca.key
    

    再选用ca签字时将能够动用暗中认可值。

    [root@xuexi ssl]# openssl ca -in /tmp/req.csr -config ssl.conf -batch
    

    翻开诉求文件时,能够构成其余几个选用输出特定的剧情。"-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].

    (2).使用x509伪命令为别的证件需要具名

    现行反革命根CA证书为root-ca.crt,CA的私钥为private/root-ca.key。

    上面使用x509伪命令完成签订左券。由于x509不会读取配置文件,所以必要提供具名的体系号,使用-CAcreateserial能够在并未有种类号文件时自动制造;由于x509默许-in钦命的输入文件是证书文件,所以要对央求文件签名,必要接纳-req来表示输入文件为呼吁文件。

    [root@xuexi ssl]# openssl x509 -req -in /tmp/req.csr -CA root-ca.crt -CAkey private/root-ca.key -out x509.crt -CAcreateserial
    
    [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-----
    

    1.2 选用私下认可配置文件/etc/pki/tls/openssl.cnf的贯彻格局

    这是引用应用的不二等秘书诀,因为方便管理,但采纳默许配置文件,必要进行部分最初化动作。

    出于完全使用/etc/pki/tls/openssl.cnf的铺排,所以要确立有关文书。

    自建CA的过程:

    [root@xuexi tmp]# touch /etc/pki/CA/index.txt 
    [root@xuexi tmp]# echo "01" > /etc/pki/CA/serial
    [root@xuexi tmp]# openssl genrsa -out /etc/pki/CA/private/cakey.pem     # 创建CA的私钥
    [root@xuexi tmp]# openssl req -new -key /etc/pki/CA/private/cakey.pem -out rootCA.csr   # 创建CA待自签署的证书请求文件
    [root@xuexi tmp]# openssl ca -selfsign -in rootCA.csr                      # 自签署
    [root@xuexi tmp]# cp /etc/pki/CA/newcerts/01.pem /etc/pki/CA/cacert.pem    # 将自签署的证书按照配置文件的配置复制到指定位置
    

    为外人颁发证书的进度:

    [root@xuexi tmp]# openssl ca -in youwant1.csr
    

    签订左券成功后,证书放在/etc/pki/CA/newcert目录下,将新生成的注明文件发送给申请者就可以。

     

    回来openssl类别文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

    将"-text"和"-noout"结合使用,则只输出证书伏乞的文件底部分。

    转发请证明出处:http://www.cnblogs.com/f-ck-need-u/p/6091105.html

    [root@xuexi 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部分的剧情。

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

    也得以运用"-pubkey"输出证书央求文件中的公钥内容。要是从报名证书须求时所提供的私钥中领收取公钥,这两段公钥的剧情是完全一致的。

    [root@xuexi 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-----
    
    [root@xuexi 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-----
    

    (3).钦命证书央求文件中的具名算法。

    只顾到证书必要文件的尾部分有一项是"Signature Algorithm",它表示使用的是哪个种类数字签字算法。默许使用的是sha1,还扶助md5、sha512等,越来越多可支撑的签字算法见"openssl dgst --help"中所列出内容。比如此处钦命md5算法。

    [root@xuexi tmp]# openssl req -new -key pri_key.pem -out req2.csr -md5
    
    [root@xuexi tmp]# openssl req -in req2.csr -noout -text | grep Algo
                Public Key Algorithm: rsaEncryption
        Signature Algorithm: md5WithRSAEncryption
    

    (4).验证须求文件的数字签字,那样能够证实出评释诉求文件是不是被篡改过。下边包车型客车通令中"-verify"选项表示验证证书央浼文件的数字签名。

    [root@xuexi 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"选项就可以。

    [root@xuexi tmp]# openssl req -verify -in req2.csr -noout
    verify OK
    

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

    利用openssl req自签订证书时,供给利用"-x509"选项,由于是签订公约证书伏乞文件,所以能够钦命"-days"钦赐所揭橥的证书保藏期。

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

    鉴于openssl req命令的要紧意义是开创和管制证书央求文件,所以并未提供对证件文件的管理本领,临时也就只好通过cat来查看证书文件CA1.crt了。

    [root@xuexi 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-----
    

    实在,"-x509"选项和"-new"或"-newkey"协作使用时,能够不点名证书伏乞文件,它在自签定进程师长在内部存款和储蓄器中机动创制证书央浼文件,当然,既然要创立证书央求文件,就需求人工输入申请者的音信了。举例:

    [root@xuexi tmp]# openssl req -new -x509 -key pri_key.pem -out CA1.crt -days 365
    

    实际,使用"-x509"选项后,"-new"或"-newkey"将象征成立叁个证书文件并非三个注解央求文件。

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

    在头里的享有例子中,在急需私钥的时候都一目领悟利用了"-key"选项提供私钥。其实只要不提供,openssl req会在别的需求私钥的地方活动成立私钥,并保存在一定的职责,暗中认可的保留地方为当前目录,文件名称叫privkey.pem,具体保存的职位和文件名由配置文件(私下认可为/etc/pki/tls/openssl.cnf)决定,此处不探讨该文件。当然,openssl req命令的"-keyout"选项能够钦定私钥保存地方。

    例如:

    [root@xuexi 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"选项禁止加密私钥文件。

    [root@xuexi 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"选项。

    [root@xuexi 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。

    [root@xuexi 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
    

    通过下边一系类的举个例子表达后,想必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
    

    本文由新葡亰496net发布于电脑系统,转载请注明出处:新葡亰496netopenSSL及创立私有CA,openssl签订和自签

    关键词: