关于申请 SSL 及配置SSL到 dokku 中的记录
参考了知乎和网络上的评价,
https://www.zhihu.com/question/19578422
https://www.ssls.com/
最终购买了 GOGETSSL 这个网站的SSL,购买的时候参考
http://colabug.com/106497.html GOGETSSL 证书购买记
购买的产品信息:
S0466980 GGSSL Wildcard SSL 12 months *.picker.cc New $55.00
购买了通配符证书,这样就可支持所有子域名的 SSL,因为考虑到微信小程序必需要用到 ssl 所以这里申请了这个服务。用的是 sk支付
注册的过程中没有遇到大的问题,主要是注册表单的填写,完成后就可选择产品进行购买。
当购买支付完成后会进行配置,生成 CSR 和私有 key 就是下面的文件。
这些完成后我下载了 CRT CA 两个文件,参考 dokku 的 ssl 配置
http://dokku.viewdocs.io/dokku/configuration/ssl/
其中的注意项是
The certs:add command can be used to push a tar containing a certificate .crt and .key file to a single application. The command should correctly handle cases where the .crt and .key are not named properly or are nested in a subdirectory of said tar file. You can import it as follows:
tar cvf cert-key.tar server.crt server.key
dokku certs:add node-js-app < cert-key.tar
Note: If your .crt file came alongside a .ca-bundle, you'll want to concatenate those into a single .crt file before adding it to the .tar.
cat yourdomain_com.crt yourdomain_com.ca-bundle > server.crt
SSL and Multiple Domains
多域名配置就要求每个 dokku app 都要使用
Dokku certs:add <app> < cert-key.tar
执行这个命令后会自动配置 nginx 与创建 tls 文件夹
在上面 tar cvf cert-key.tar server.crt server.key
这里面有一个坑就是,打包后一直导入不进去,报告错误为:
PEM_read_bio:bad end line error错误
这个的意思就是server.crt读取到意外错误行,回忆一下刚才的操作,这个是StartSSL提供的crt证书,然后我们使用cat将证书链合并到这个证书里的,那么问题可能就出在合并这个环节,使用vi或者nano命令打开并编辑server.crt,果然让我们找到了问题所在:
1 -----END CERTIFICATE----------BEGIN CERTIFICATE-----
可以看到原先占用一行的标记证书的分隔符,现在连到一起了,我们需要用换行将他们分开,注意问题左右的短横线最好一样多:
1
2 -----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
好,做好后,保存这个crt文件,再次重启Nginx服务,输入申请证书时私钥的密码,SSL启用成功!
Nginx配置SSL安全证书并解决HTTPS的400 Bad Request问题