利用openssl命令生成CSR文件

申请各种SSL证书都需要CSR文件,虽然很多在线网站能直接帮我们生成CSR文件,但毕竟不是我们自己生成的,有导致key泄露的风险,所以,经历过几次上网查资料之后,这里记录一下我的生成过程。

利用openssl命令生成ECC CSR文件

因为我对浏览器对SSL的兼容性要求不高,为了性能及速度,我一般都是生成ECC类型的CSR再去申请证书使用,所以,这里先记录ECC类型的CSR:

openssl ecparam -out elsenow-ecc.key -name prime256v1 -genkey
openssl req -new -key elsenow-ecc.key -out elsenow-ecc.csr

上面两行命令是先生成一个私钥key,再利用生成的key生成一个csr文件,其中,elsenow可以随意更改,只要能区分哪个是属于那个域名就行。
上面命令是生成的长度为256-bit,如果需要更高要求的加密强度,可以将上面的prime256v1替换成prime384v1

利用openssl命令生成RSA CSR文件

而生成RSA CSR文件就更简单了,只需要如下一行命令就行:

openssl req -out elsenow-rsa.csr -new -newkey rsa:2048 -nodes -keyout elsenow-rsa.key

同样,我们也可指定加密强度,比如说4096位,只需将上面的2048替换成4096就行。
和ECC类型不一样,RSA格式的CSR生成可能会消耗一些时间。

利用openssl生成CSR文件步骤

不管是ECC还是RSA,生成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) []:   #国名  可为空
State or Province Name (full name) []:  #所在州或者省份名字  可为空
Locality Name (eg, city) []:  # 所在地  可为空
Organization Name (eg, company) []:  # 组织名称  比如说公司名  可为空
Organizational Unit Name (eg, section) []:  # 组织部门名称  比如说IT部  可为空
Common Name (eg, fully qualified host name) []:www.cloudbool.com  # 也就是FQHN,不允许为空,可以为单域名也可以是泛域名
Email Address []:   # 邮箱地址  可为空
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #密码  建议留空

这里有一点需要注意的是,上面的FQHN,输入的信息跟需要申请的SSL有关,如果是单域名,直接输入单个的域名就行,比如:www.cloudbool.com ;如果申请的是泛域名,则需输入准确的泛域名,比如说:*.cloudbool.com。
输入完成之后,当前目录会有对应的key及csr文件,我们只需要将对应的CSR提交到CA就行,key自行保存好,后面配置SSL的时候要用到,一定不能遗失。