使用OpenSSL创建证书
提交证书申请前,用户需在本地生成私钥和证书请求文件(CSR);然后用户可以将CSR提交至CA进行签名认证,也可以通过自签名的方式进行本地测试。具体操作方法如以下示例所示(本示例中使用的工具为OpenSSL)。
-
执行命令
openssl genrsa -out my-private-key.pem 2048
,通过RSA算法生成私钥,并保存在my-private-key.pem文件中。百度开放云支持1024、2048和4096 bits长度的私钥,建议用户使用2048 bits长度。注意:请妥善保管私钥,避免遗失和泄露。
查看私钥文件的具体内容如下:
-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAuRn81tg5aVRtTLAb+96qQPLzgoVzPEJvUCATvOZDoUcfZqx6 A+PJ33SBZ6wUUMwKwDiAbi3yG2cQ1zfVe68PvtkFcPjwnTFRJbRObZUJXVA8LIMy LDC9cq71qvptYCMUVdmsrWeRUzZfJLLo8/+KRV0kAoykLyOVYHVXVKa+XChrEEcD ...... PMKG1QKBgCElb8qQlSPzN7If+4+xY/z6iDZ80H/ktJahcD3QHeFUsaXaYQGokudC 4ZWHW1JiLwIqsiJ4iLaTKU4JOn5LyFFR/6O/NvhWuMXHmqLtHwhrKtZX2TBwbfdQ wRakf1vOSHXHDG1Zym5t5s8UWDtkMcHZ7lIasjgaWB3lgFMwu+0u -----END RSA PRIVATE KEY-----'
复制 -
执行命令
openssl req -sha256 -new -key my-private-key.pem -out csr.pem
,根据系统提示输入相关配置信息,生成CSR文件。其中,-key my-private-key.pem
用来指定步骤1中生成的私钥文件;-out csr.pem
用来指定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) [AU]:CN State or Province Name (full name) [Some-State]:Beijing Locality Name (eg, city) []:Beijing Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company Organizational Unit Name (eg, section) []:. Common Name (e.g. server FQDN or YOUR name) []:www.mycompany.com Email Address []:example@mycompany.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:. An optional company name []:.
复制查看CSR文件具体内容如下:
-----BEGIN CERTIFICATE REQUEST----- MIIC5TCCAc0CAQAwgYgxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdCZWlqaW5nMRAw DgYDVQQHDAdCZWlqaW5nMRMwEQYDVQQKDApNeSBDb21wYW55MRowGAYDVQQDDBF3 d3cubXljb21wYW55LmNvbTEkMCIGCSqGSIb3DQEJARYVZXhhbXBsZUBteWNvbXBh ...... QIdb7HyrK9Xly3dhTVNpkn/675drBf/0V23RyrXusoJMw+IOtPd9EtyRCvue8b2Z niekGvbI+giNyc45OBJwnuVo83tU528UyoZIpHjfNaw15NYCbhSecrxZYmY3xWnE uPIZsMavDocgoiGpPN8TyX2XMZUkLtLFCFJ+yU2yD4OycgPJTJSP5zJSCv+JV0mh 1SPr6Vir4rnT7s+EL+ZkubfWrTvVSmkjyg== -----END CERTIFICATE REQUEST-----
复制执行以上命令时所需填写的内容解释如下表所示:
字段 描述 Country Name 公司/组织所在国家ISO代码,中国代码为CN,其它国家代码可参考ISO Code。 State or Province Name 公司/组织所在的省/州名称。 Locality Name 公司/组织所在城市名称。 Organization Name 公司/组织的名称,此处应该出完整全称。 Organizational Unit Name 产品或分支机构名称,可选。 Common Name 公司/组织的完全限定域名(FQDN,Fully-Qualified Domain Name),例如: www.mycompany.com。 Email Address 管理员的Email地址。 A challenge password 加密证书请求的密码。 An optional company name 可选公司/组织名称。 -
向CA中心提交数字证书认证申请。用户可选择VeriSign、GeoTrust等第三方认证机构。
用户也可以执行命令
openssl x509 -req -days 365 -in csr.pem -signkey my-private-key.pem -out my-certificate.pem
,对证书进行自签名,用于网站的测试。其中,-days 365
代表证书有效期为365天;-in csr.pem
用来指定步骤2生成CSR文件;-signkey my-private-key.pem
用来指定用于对CSR进行签名的私钥,本示例中使用步骤1生成的私钥进行签名;-out my-certificate.pem
用来指定生成的证书名称。查看生成的证书文件内容如下:
-----BEGIN CERTIFICATE----- MIIDjjCCAnYCCQC4xa7g5APX/jANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC Q04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0JlaWppbmcxEzARBgNVBAoM Ck15IENvbXBhbnkxGjAYBgNVBAMMEXd3dy5teWNvbXBhbnkuY29tMSQwIgYJKoZI ...... Q1PBQWanUPWbZ2+AIudPWpDkDtq6uZkTTSKNd+6E1f5bIlGGvD0eu/gdYFaJN8Ut aUSjls8bToQhXs7EAjzEABM9M8BmaQEkEmPutc/y8KqND1Dv8hox/z6olppmwMn5 9hgcZecsoJ0qAUJC7kqfpSkpitXLSAsE/1OGJ8MhTtpELQsCO0N5m/h2wtIGaI08 sLk= -----END CERTIFICATE-----
复制
上传证书
上传证书前,用户需要确保:
-
证书(包括:服务器证书、私钥、证书链)格式符合PEM格式要求。如果用户从CA收到的证书不是PEM格式的,需要转换成PEM格式。具体要求如下:
-
证书以
-----BEGIN CERTIFICATE-----
开头,-----END CERTIFICATE-----
结尾; - 每行64字符,最后一行不超过64字符。
如果用户从CA收到的证书不是PEM格式的,需要转换成PEM格式,几种常见的证书格式转换为PEM格式的方法如下表所示:
证书格式 转换方法 DER -> PEM 证书:openssl x509 -inform der -in my-certificate.cer -out my-certificate.pem
私钥:openssl rsa -inform DER -outform PEM -in my-private-key.der -out my-private-key.pemP7B -> PEM 证书:openssl pkcs7 -print_certs -in my-certificate.p7b -out my-certificate.pem。从my-certificate.pem中获取“-----BEGIN CERTIFICATE-----”开头,“-----END CERTIFICATE-----”结尾的内容作为证书。
私钥:无私钥PFX -> PEM 证书:openssl pkcs12 -in certname.pfx -nokeys -out my-certificate.pem
私钥:openssl pkcs12 -in certname.pfx -nocerts -out my-private-key.pem -nodes -
证书以
-
服务器证书需要在有效期内(证书开始时间 <= 当前时间 <= 证书失效时间)。
-
私钥不能加密,即执行生成私钥命令时不能添加密码参数。
-
服务器证书只能包含一个证书。
-
私钥需要和服务器证书里的公钥匹配。可以通过以下两条命令生成私钥和证书的MD5值,如果二者一致,则可认为私钥与证书里的公钥匹配。
- openssl x509 -noout -modulus -in my-certificate.pem | openssl md5
- openssl rsa -noout -modulus -in my-private-key.pem | openssl md5
-
证书链完整,即通过证书链可以对应到可信根证书。具体要求如下:
- 证书之间不能有空行;
- 每一份证书遵守第一项中关于证书的格式要求,示例如下。
-----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
请输入内容
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|