在最新的OpenBSD(digitalocean.com上的5.9 / amd64)中,我可以使用这个httpd.conf文件启动没有SSL的httpd ......
# cat /etc/httpd.conf
interface="egress"
domain="infmgr.com"
prefork 3
types { include "/usr/share/misc/mime.types" }
#server $domain {
# listen on $interface tls port 443
# tls {
# certificate "/etc/ssl/server.crt"
# key "/etc/ssl/private/server.key"
# }
# hsts
# root "/htdocs/infmgr.com" # chrooted at /var/www/
#}
server $domain {
listen on $interface port 80
root "/htdocs/infmgr.com" # chrooted at /var/www/
# block return 301 "https://$SERVER_NAME$REQUEST_URI"
}
#
当我更改这样的注释掉的行......
# cat /etc/httpd.conf
interface="egress"
domain="infmgr.com"
prefork 3
types { include "/usr/share/misc/mime.types" }
server $domain {
listen on $interface tls port 443
tls {
certificate "/etc/ssl/server.crt"
key "/etc/ssl/private/server.key"
}
hsts
root "/htdocs/infmgr.com" # chrooted at /var/www/
}
server $domain {
listen on $interface port 80
# root "/htdocs/infmgr.com" # chrooted at /var/www/
block return 301 "https://$SERVER_NAME$REQUEST_URI"
}
#
并重启httpd ...
# rcctl restart httpd
httpd(ok)
httpd(ok)
#
我在日志文件中收到以下错误...
# cd /var/log
# ls -alt|head -4
total 5804
-rw-r--r-- 1 root wheel 26447 Jun 7 08:39 messages
-rw-r----- 1 root wheel 5451 Jun 7 08:39 daemon
-rw-r----- 1 root wheel 2504053 Jun 7 07:49 authlog
# tail messages
...
Jun 7 06:00:02 infmgr syslogd: restart
Jun 7 08:39:26 infmgr httpd: could not parse macro definition TLS
Jun 7 08:39:26 infmgr httpd: could not parse macro definition TLS
Jun 7 08:39:26 infmgr /bsd: httpd(40862): syscall 5 "wpath"
Jun 7 08:39:26 infmgr /bsd: crash of httpd(40862) signal 6
Jun 7 08:39:26 infmgr httpd[41393]: parent: proc_dispatch: Broken pipe
# tail -15 daemon
...
Jun 7 08:39:25 infmgr httpd[4728]: logger exiting, pid 4728
Jun 7 08:39:25 infmgr httpd[80131]: server exiting, pid 80131
Jun 7 08:39:25 infmgr httpd[85373]: server exiting, pid 85373
Jun 7 08:39:25 infmgr httpd[15598]: server exiting, pid 15598
Jun 7 08:39:25 infmgr httpd[30462]: parent terminating, pid 30462
Jun 7 08:39:26 infmgr httpd[41393]: startup
Jun 7 08:39:26 infmgr httpd[41393]: parent: proc_dispatch: Broken pipe
Jun 7 08:39:26 infmgr httpd[62127]: logger exiting, pid 62127
Jun 7 08:39:26 infmgr httpd[73062]: server exiting, pid 73062
Jun 7 08:39:26 infmgr httpd[93325]: server exiting, pid 93325
#
我专注于这两个错误...... httpd无法解析宏定义TLS bsd httpd,系统调用5 wpath
我花了好几个小时,发现只有一个提到这可能是一个内核错误。我查看了OpenBSD 5.9 patch list,OpenBSD 5.9 -current changes log。
我已经打破了,寻求帮助......非常感谢!
特洛伊。 #
更新
根据嘉宾的回答,这里有一些注释......
我很感激帮助!
我不知道httpd -d并直接运行命令。看看/etc/rc.d/httpd脚本,应该是显而易见的:)我将不得不再使用它了。
server.crt&相应目录中的server.key是正确的。我在其他地方发现了一组命令,这些命令生成了比较的哈希值,从理论上证明了两者应该有效。我甚至将它们复制到了chrooted目录中,它没有做任何事情:/
'httpd -n'返回'配置OK'......
我确实对/etc/rc.config.local文件进行了一些更改,设置了一个“-DSSL”参数。看到SSL宏解析错误(上图),我替换为“-DTLS”只是为了看到错误将替换为TLS而不是SSL。它在错误中继续使用SSL。在debug语句之后,它更改为TLS,因此我从本地配置中删除了“-DTLS”...并修复了解析错误。剩下的就是'崩溃'和'wpath'错误。
我正在使用最新版本的OpenBSD,2016年6月2日。
更新
我创建了这个脚本来检查证书......
# httpd_cert_verify.sh
echo "compare the following md5 hashes. They should be the same..."
openssl rsa -noout -modulus -in /etc/ssl/private/server.key | openssl md5
openssl x509 -noout -modulus -in /etc/ssl/server.crt | openssl md5
echo "Check the permissions on these files, they should be readable by 'system' (-r--------)"
ls -al /etc/ssl/private/server.key
ls -al /etc/ssl/server.crt
使用以下结果进行操作。
# sh httpd_cert_verify.sh
compare the following md5 hashes. They should be the same...
Enter pass phrase for /etc/ssl/private/server.key:
(stdin)= 0e8abeb155ad81a8a8db0f6036fcca13
(stdin)= 0e8abeb155ad81a8a8db0f6036fcca13
Check the permissions on these files, they should be readable by 'system' (-r--------)
-r-------- 1 root wheel 1858 Jun 5 19:40 /etc/ssl/private/server.key
-rw-r--r-- 1 root wheel 2176 Jun 5 19:39 /etc/ssl/server.crt
#
答案 0 :(得分:2)
我很欣赏推荐“misc'邮件列表。那张海报能够解决这个问题。他们表示需要从私有密钥中删除密钥。这就是我做的...... 卡林 那很有效。谢谢!
# history
1 cd /etc/ssl/pr
2 cd /etc/ssl/private/
3 cp server.key server.key.backup
4 openssl rsa -in server.key -out server.key
5 ls -al
6 rcctl start httpd
7 tail /var/log/messages
8 date
# exit
特洛伊。
#
答案 1 :(得分:1)
我假设文件" /etc/ssl/server.crt"和" /etc/ssl/private/server.key"存在并且是正确的。
还尝试在调试模式下运行httpd -d,并且-n检查配置文件,而不是使用rcctl restart httpd
如果仍然无效,我认为您应该使用最新版本:
http://ftp.openbsd.org/pub/OpenBSD/snapshots/amd64/
并查看是否收到同样的错误。
答案 2 :(得分:0)
技术细节: wpath错误意味着它试图在文件系统上写入它不应该的地方。见http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/pledge.2
我想在这一点上,你应该联系misc@openbsd.org。
另外,请联系Reyk Floeter reyk@openbsd.org,他是" OpenBSD httpd"
的主要作者答案 3 :(得分:0)
我在-current上看到同样的错误,我想这可能是由于httpd中承诺系统调用/承诺更改的最近更改。
您应该尝试使用OpenBSD的版本 - 或者是已经尝试过的版本(可能是您已经尝试过)。