我正在尝试用 Python 编写一个脚本,该脚本采用证书文件和私钥,并在 Apache 服务器上安装 SSL 证书。我的机器上的 ssl.conf 文件位于目录 /etc/httpd/conf.d/ 中,我认为这是正常的。但是,根据分布情况,ssl.conf 文件可以位于哪些其他目录中?
ssl.conf 是 Apache 2 独有的功能吗?如果运行的服务器是 Apache 1,我是否需要找到并编辑 httpd.conf 文件?
答案1
您可以为每个虚拟主机指定一个证书...(利用几乎所有现代浏览器都支持的服务器指示)。至于编写脚本来自动安装证书...这在很大程度上是特定于发行版的(除非您进行大量额外的编码来实现它),大多数 RHEL 平台(如果不是全部)将内容放在 /etc/httpd/... 中,而 debian 风格的平台将其放在 /etc/apache2/... 中,谁知道它在其他发行版上还会在哪里出现。
如果您坚持使用一个特定的发行版...请记住,还有很多不同的方法来进行配置。您可以拥有 1 个包含所有内容的单一巨型配置文件...并且您可以将其分解为加载其他配置的较小组件...(即 httpd.conf 如何加载 conf.d/*.conf)...甚至将其分解为每个站点、每个模块的单独配置,以及其他十几种方式......
但是,默认情况下,大多数平台仍然运行 apache 1... 传统上有一个庞大的配置,用于配置所有 apache... 并且我认为没有加载其他配置文件的选项。Apache 2.0.41 引入了带通配符的包含,以允许以下操作:
包括 /etc/httpd/conf.d/*.conf 包括 /etc/httpd/mods-enabled/*.load这导致更多分解配置的出现。
作为一个好主意,我强烈建议您尽可能标准化您的环境。尝试支持具有多种配置类型和所有东西的多个版本的多个环境绝对是一场噩梦。此外,Apache 1 已经过了 EoL。当然,修补程序可能仍会发布……但我不会依赖它来获得任何类型的安全环境。我还没有发现任何仅在 Apache 1 中可用的东西。Apache 2 已经稳定了 8 年……是时候升级了。
答案2
FWIW,有一个 Apache Wiki 页面试图记录特定发行版的布局。
答案3
在 Apache 1 中,mod_ssl 不是一个内置模块,并且有几个用于启用 SSL 的不同模块,我认为在大多数情况下,期望只是在现有配置文件中包含所需的指令。
我怀疑您是否可以编写一个适用于所有平台的通用脚本,因为变化太多,并且对于复杂的配置,您的脚本几乎肯定会破坏事情而不是成功。
不需要将与 SSL 相关的配置放入 ssl.conf 文件中。在我的主机上,大约有 30 个虚拟主机,ssl.conf 基本未使用,我将虚拟主机特定设置(证书)存储在该虚拟主机的配置文件中。
但是要回答您在基于 Debian 的系统上的问题,您会在中找到每个服务器的设置/etc/apache2/mods-available/ssl.conf
。
答案4
这不可能。最接近的方法是apxs -q SYSCONFDIR
。
您需要特定于发行版的处理。
即使如此,随机系统管理员也不需要遵循任何惯例。