我可以让 davfs 忽略不受信任的证书吗?

我可以让 davfs 忽略不受信任的证书吗?

我的服务器仅通过 HTTPS 提供 WebDAV,以便其他计算机可以访问 DAV。假设证书是为 颁发的www.myserver.com,WebDAV 位于https://www.myserver.com/webdav

由于种种原因,我也想让服务器本身挂载这个目录。由于使用实际的 URL 并在整个互联网上进行路由是没有意义的,所以我只是采取了一种捷径:

mount https://localhost/webdav

但现在我遇到一个问题:

/sbin/mount.davfs: the server certificate does not match the server name

这是有道理的。正如 的开发者所解释的davfs,我获得的证书是 的,www.myserver.com但它是由 提供的127.0.0.1,所以当然不匹配。

我想在启动时自动挂载此卷。想必这行不通,因为每次启动时它都会等待有人回答“是/否”以接受证书。如何让 davfs 忽略此 URL 或此证书的此问题?

答案1

您可以通过编辑该文件来解决该问题/etc/hosts。只需将 localhost 定义的行更改为类似以下内容:

127.0.0.1    www.myserver.com all_other_aliases localhost

使用ping它来检查:

$ ping www.myserver.com
PING www.myserver.com (127.0.0.1) 56(84) bytes of data.
64 bytes from www.myserver.com (127.0.0.1): icmp_req=1 ttl=64 time=0.013 ms
...

现在,安装期间认证检查的名称查找应该正确解析。

答案2

您的证书中可以有多个主机名和 IP,这些称为主题备用名称。CACert 建议始终执行此操作,即使是一个名称

不幸的是,创建它们有点棘手,并且需要openssl.conf动态更改。根据我的笔记整理,生成新的证书签名请求的过程如下:

openssl req -sha256 -key your-private-key.pem -out your-csr.pem \
        -subject "(your subject)" \
        -config <(/bin/cat /etc/pki/tls/openssl.cnf ./myhosts.cfg) \
        -reqexts hostnames

哪里myhosts.cfg有这样的内容:

[ hostnames ]
subjectAltName = \
  DNS:www.myserver.com,\
  DNS:localhost,\
  IP:127.0.0.1

标准 openssl 配置位于/etc/pki/tls/openssl.cnfRedHat/CentO 上,也可能位于其他发行版的其他地方。我从来没有真正为IP做过这件事,但是OpenSSL 文档建议这应该是可能的。

如果您想切换到正确签名的证书,您可能会发现某些 CA 可能拒绝为私有子网 IP 颁发证书。

答案3

我有同样的问题。我的解决方案很简单:

echo y | mount -t davfs https://localhost/<URL details> <mount point>

也许不漂亮,但很有魅力(<...>用您的详细信息替换代码)。然后我将此命令添加到我的/etc/rc.local(Ubuntu)中,它会在每次启动时自动安装。到目前为止工作没有问题。

相关内容