nginx部署https踩坑-编码问题

今天在给系统服务升级到https时遇到几个问题,记录一下。
证书是在freessl上面申请的,用keymannger导出。
在Window上的nginx服务没什么问题。
linux上部署后无法启动,error.log报错显示:

nginx: [emerg] cannot load certificate "/usr/local/nginx/cert/xxx.pem":
PEM_read_bio_X509_AUX() failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

网上说报证书的后缀名crt改成pem

改完之后依旧报这个错,其实和后缀没有关系。

再仔细看了报错信息感觉像是证书版本不兼容问题,但windows的nginx就正常读取,也不知道那里出了错。

百度一下有人说是证书文件编码不是utf-8原因。
我就用notepad++打开重新保存一下,还是真是可以了,不过又报

nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/ssl/xxx.key") 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)

也是类似的编码问题导致的,重新保存成utf-8就可以了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!