chromiumer.com

Godaddy域名SSL证书申请及踩坑

2021.02.26
Godaddy域名证书申请

1.申请OV证书所需时间

申请步骤省略,这里举个例子,一个证书从申请到签发所需要多长时间。

1.2月22日, 选择套餐并付款、域名验证(TXT记录验证域名所有权)、发票提交(近半年内的包含公司主体、公司电话的增值税发票,验证公司有实际的业务往来),同一天完成。
2.2月25日, 邮件回复,说明电话时间及方式。
3.2月26日, 拔打中国 客服专线 +86 400 842 8288 约电话核实时间,一般约半小时以内的都可以,本次约20分钟以内,电话确认公司主体名称、域名、申请人姓名、职位,核实完成后理论1小时内签发,实际几分钟后就可以签发。

2.关于证书文件

签发后可以到godaddy网站下载对应证书压缩包,解压后如以下文件。

-rw-rw-r--@ 1 admin  staff   2.2K  2 25 19:41 3bea7c9f7088a6ca.crt
-rw-rw-r--@ 1 admin  staff   2.2K  2 25 19:41 3bea7c9f7088a6ca.pem
-rw-rw-r--@ 1 admin  staff   4.7K  2 25 19:41 gd_bundle-g2-g1.crt

在提交域名证书申请时会需要提供csr文件,当时如果是自己生成或通过godaddy本身的功能生成,你本地应该有一个csr文件和私钥(key)文件,这里使用godaddy生成的两文件。

-rw-r--r--@ 1 admin  staff   890B  2 22 13:48 chromiumer.com.csr.txt
-rw-r--r--@ 1 admin  staff   1.7K  2 22 13:48 chromiumer.com.key.txt

3.证书文件合并

cat 3bea7c9f7088a6ca.crt gd_bundle-g2-g1.crt > chromiumer.com.crt

4.问题来了

以下是抽出来的ssl配置:

[root@localhost ~]#cat /data/nginx/conf/ssl-chromiumer.com.conf
ssl_certificate /data/nginx/conf/certs/chromiumer.com/chromiumer.com.crt;
ssl_certificate_key /data/nginx/conf/certs/chromiumer.com/new-chromiumer.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

实际上我们通过证书合并以及现有的私钥文件就可以直接部署到服务器(Nginx)上,但在检查语法时出现了问题。

[root@localhost ~]#/data/nginx/sbin/nginx -t
nginx: [emerg] cannot load certificate key "/data/nginx/conf/certs/chromiumer.com/chromiumer.com.key": PEM_read_bio_PrivateKey() failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: ANY PRIVATE KEY)
nginx: configuration file /data/nginx/conf/nginx.conf test failed

我们来看下私钥文件类型:

[root@localhost ~]#file /data/nginx/conf/certs/chromiumer.com/chromiumer.com.key
/data/nginx/conf/certs/chromiumer.com/chromiumer.com.key: UTF-8 Unicode (with BOM) text

UTF-8 Unicode (with BOM) text 类型为UTF-8的纯文本,而非私钥的格式,通过文件格式化转为 ASCII text 类型,再次检查语法即通过。

[root@localhost ~]#tail -c +4 /data/nginx/conf/certs/chromiumer.com/chromiumer.com.key > /data/nginx/conf/certs/chromiumer.com/new-chromiumer.com.key
[root@localhost ~]#file /data/nginx/conf/certs/chromiumer.com/new-chromiumer.com.key
/data/nginx/conf/certs/chromiumer.com/new-chromiumer.com.key: ASCII text

[root@localhost ~]#f /data/nginx/sbin/nginx -t
nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data/nginx/conf/nginx.conf test is successful

5.建议

建议使用本地生成的csr文件、私钥文件,避免出现类似问题。

MacBook-Pro:~ admin$ openssl req -new -newkey rsa:2048 -nodes -keyout chromiumer.com.key -out chromiumer.com.csr