我之前在 lighttpd 上安装过 SSL 密钥,并记录了执行的步骤,以确保将来可以复制它。好吧,我有一段时间没碰过服务器了,我需要创建一个支持 SSL 的带有 lighttpd 的新 Web 服务器。按照我笔记中的所有步骤操作,结果出现了这个错误
SSL: couldn't read X509 certificate from PEM file
我不确定我错过了什么,但如果有人能看看我的步骤并建议我错过了什么,我将不胜感激。
这是我的环境
CentOS 6.4 64 bit
lighttpd/1.4.35 (ssl) - a light and fast webserver
我的ssl证书来自startcom公司
这是我的步骤
生成我的 csr
openssl req -new -newkey rsa:4096 -nodes -out myserver.csr -keyout myserver_privatekey.key -subj "/C=us/ST=State/L=City/O=MyCompany/OU=Productions/CN=myserver.mycompany.net"
将 csr 发送到 Startcom 并获取此 ssl,将其保存为
myserver.crt
创建最终的 PEM 文件
cat myserver_privatekey.key myserver.crt > myserver.pem
从 startcom 获取了这两个文件
ca.pem
sub.class1.server.ca.pem
统一这两个文件
cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt
将 crt 和 pem 文件移动到 myssl 目录
这是我的 lighttpd 配置:
$SERVER["socket"] == "0.0.0.0:443" {
ssl.engine = "enable"
ssl.ca-file = "/etc/lighttpd/myssl/ca-certs.crt"
ssl.pemfile = "/etc/lighttpd/myssl/myserver.pem"
}
$SERVER["socket"] == "[::]:443" {
ssl.engine = "enable"
ssl.ca-file = "/etc/lighttpd/myssl/ca-certs.crt"
ssl.pemfile = "/etc/lighttpd/myssl/myserver.pem"
}
$HTTP["host"] =~ "^(myserver\.)?mycompany\.net$" {
ssl.ca-file = "/etc/lighttpd/myssl/ca-certs.crt"
ssl.pemfile = "/etc/lighttpd/myssl/myserver.pem"
server.document-root = "/var/www/lighttpd/mywebsite"
}
所以当我完成后,我重新启动了我的 lighttpd,这是我得到的错误。
Starting lighttpd: 2015-09-20 15:58:32: (network.c.543) SSL: couldn't read X509 certificate from '/etc/lighttpd/myssl/myserver.pem'
我以前从未见过或从未见过该错误,所以我不太确定如何从那里继续前进。有人能告诉我我错过了什么吗?请帮忙?
答案1
对我来说,在 PEM 文件中的 key 和 crt 之间添加一个新行可以解决这个问题。
cat my_server.key <(echo) my_server.crt > my_server.pem