关于 SSL 证书和相关私钥在 UNIX/Linux 文件系统上的存放位置,是否存在任何标准或惯例?
答案1
对于系统范围内的使用,OpenSSL 应该为您提供/etc/ssl/certs
和/etc/ssl/private
。后者将限制700
为root:root
。
如果你的应用程序没有执行初始特权分离来自root
,那么将它们放置在具有相关受限所有权和权限的应用程序本地某个位置可能适合您。
答案2
"/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc.
"/etc/pki/tls/certs/ca-bundle.crt", // Fedora/RHEL 6
"/etc/ssl/ca-bundle.pem", // OpenSUSE
"/etc/pki/tls/cacert.pem", // OpenELEC
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", // CentOS/RHEL 7
"/etc/ssl/cert.pem", // Alpine Linux
还:
"/etc/ssl/certs", // SLES10/SLES11, https://golang.org/issue/12139
"/system/etc/security/cacerts", // Android
"/usr/local/share/certs", // FreeBSD
"/etc/pki/tls/certs", // Fedora/RHEL
"/etc/openssl/certs", // NetBSD
"/var/ssl/certs", // AIX
答案3
这会因发行版而异。例如,在 Amazon Linux 实例(基于 RHEL 5.x 和 RHEL6 的部分内容,并与 CentOS 兼容)上,证书存储在 中/etc/pki/tls/certs
,密钥存储在 中/etc/pki/tls/private
。CA 证书有自己的目录/etc/pki/CA/certs
和/etc/pki/CA/private
。对于任何给定的发行版,尤其是在托管服务器上,我建议遵循已有的目录(和权限)结构(如果有)。
答案4
到目前为止,答案都很棒,谢谢大家!但自 2009 年以来,像 LetsEncrypt 这样的免费 SSL 证书系统已成为标准,而现代配置则稍微复杂一些。
LetsEncrypt有三个目录,用于存档、活动和续订启用 SSL 的域,请在此处检查:
/etc/letsencrypt/archive/example.com
/etc/letsencrypt/live/example.com
/etc/letsencrypt/renewal/example.com.conf
Apache2有两个目录,分别针对已启用和可用的启用 SSL 的域,请在此处检查:
/etc/apache2/sites-enabled/example.com-le-ssl.conf
/etc/apache2/sites-available/example.com-le-ssl.conf
LetsEncrypt 档案最终移动到另一个目录,请在此处检查:
/var/lib/letsencrypt/backups/[TIMESTAMP]/example.com-le-ssl.conf_0