关于 openldap 的每一篇文章/操作方法/博客都讨论将 ldaps 的 ldap 证书放在 /etc/openldap/cacerts 目录中。
我想知道为什么不直接将证书放入 /etc/pki/tls/certs 并在 /etc/openldap/cacerts -> /etc/pki/tls/certs 之间建立符号链接?这样,所有证书都会集中在系统上的一个位置,而不是分散在各个目录中。
答案1
这并非特定于 openldap,通常是出于安全原因:
有问题的软件包可能会
chroot
进入其自己的目录/etc
,然后无法跟踪更改的根目录之外的任何符号链接软件可能被设计成首先明确禁止其跟踪任何类型的符号链接
这样做是为了确保任何类型的漏洞都会被限制并隔离在一个软件中,并且对手将更难以访问文件系统上的任意文件。
答案2
只要相关应用程序及其使用的加密库能够读取和理解文件,将常规证书、CA 证书和私钥放在哪里其实并不重要。根据您的应用程序(在您的情况下为 OpenLDAP/slapd)是否链接到 OpenSSL 或 GnuTLS,可能会存在各种限制。应用程序本身也可能存在人为限制,或者由 AppArmor 或 SELinux 等安全框架施加限制。
例如,在 Ubuntu 12.04 LTS(服务器)上,在 中查找其 CA 证书的 libvirt 守护程序/etc/pki/CA/cacerts.pem
似乎无法容忍该文件大于几千字节。因此,不可能只向其提供在 中找到的受信任 CA 证书的系统范围列表/etc/ssl/certs/ca-certificates.crt
(在 CentOS 上,等效项是/etc/pki/tls/certs/ca-bundle.crt
,正如您提到的)。我认为这是 GnuTLS 的一个限制(其中之一)。
正如我所说:这取决于所涉及的应用程序、使用的加密库和可能的安全框架。您只能尝试看看什么有效,什么无效。