我有多个通过 webDAV 共享文件的服务器。所有服务器上的连接都使用 TLS 和相同的通配符证书进行保护。我有不同的子域指向相应的服务器。但是我无法让 davfs2 接受我的通配符证书,它一直在抱怨:/sbin/mount.davfs: the server certificate does not match the server name
例如我有:
服务器A.我的域名.com 服务器B.我的域名.com
所有证书均涵盖 *.mydomain.com 和 mydomain.com 的 SAN
当然,如果我将 mydomain.com 用于 webDAV,一切都会正常工作,因为该域名已明确包含在证书中。
我可以将所有子域作为 SAN 添加到证书中,但我不能每次启动(或关闭)机器时都重新颁发证书。
那么有没有办法让 davfs2 接受通配符证书?
答案1
事实上,这个问题与 webDAV 如何处理通配符无关,而与 X509 证书扩展如何处理有关。
事实证明,主题替代名称是一个错误的名称,根据RFC 5280(第 4.2 节)如果扩展被标记为关键,则应用程序必须拒绝它无法识别的任何扩展(如果扩展被标记为非关键,则可以忽略它们),但如果应用程序识别某个扩展,则必须使用它。
这意味着当 webDAV 遇到 SubjectAltName 时,它会根据服务器名称检查该名称,并且只检查该名称。包含我的通配符的通用名称将被完全忽略。主题备用名称不提供备用名称或附加名称,它必须提供所有标识名称。
这样就把包括通配符在内的所有域名都放入SAN中。