天天看点

Godaddy SSL的一次踩坑记录

关于配置SSL 报错误: failed SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: ANY PRIVATE KEY error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib

起因是最近需要更换一台服务器上的SSL证书,朋友是直接把crt包(含pem和2个crt,godaddy下载的apache版本包)、一个key.txt和一个csr.txt发给我,以前都是本机生成的key和csr之类的再去godaddy申请crt,这次不大一样,但是文件应该没问题,我nginx的配置使用的是key+crt形式,配置为:

ssl_certificate      /home/xxx/(合并过后的)all.crt; 
ssl_certificate_key  /home/xxx/(产生crt的关联key)1.key;
           

使用

cd /home/xxx #下载的所有东西都在这了
cat (编码).crt gd_bundle-g2-g1.crt>all.crt
           

生成合并后的crt,(这里我试过直接使用(编码).crt也是可行的,但是对seo之类的有影响,据说是根证书和域名证书之类的关系,这里我知识匮乏了,先不管)

然后把key.txt改成1.key,至此完成工作,重启nginx,马上报错140B0009

对此百度上的东西都是检查crt合并时候的格式,但是我合并过这么多次,都是使用cat的形式,又不是拖出来复制粘贴,格式大部分情况下都不会有问题,终于在

这里

找到了一种思路,这里有位大兄弟是修改了key的编码格式,使用

file xxx.key #查看编码格式
iconv -l #查看系统支持的格式
vi xxx.key
:set fileencoding=ASCII #保存退出,确认一遍格式
           

最后重启nginx,完成

并不是说网上的改格式不行,还是有很多人改了key里面的格式或者crt格式成功了,此文只是提供一种解决思路,在无法的时候可以试试