该环境几乎所有东西都是双胞胎,包括两个 Web 服务器/防火墙/网关系统,而且它们的版本已经过时,因此我决定从Fedora Server 30 to 38
其中一个进行升级。
我的时间安排很奇怪,因为就在我开始升级的同时,甚至没有接触(物理或电子)另一台服务器,它就决定失败了!所以,现在我有一个“服务器宕机”的情况。-呃-
我认为,此次更新并未涉及 Apache HTTPD 在处理 SSL 密钥方面的变化,因为之前和之后的版本都是 2.4 的子版本the older was 2.4.41 and the younger 2.4.57
,而 2.4 是目前最新的版本,与 Fedora Core 38 一致。(当然,这是 Fedora Server 38。)
然而,在启动时,Apache 的 HTTPD(以下称为 httpd)会对 LetsEncrypt 提供的加密密钥相关的行提出抱怨。
当然,这些密钥都是最新的,因为我认为 LetsEncrypt 不允许您获取有效期超过 3 个月的密钥。
错误如下例所示:
May 20 17:09:24 host2 httpd[3180]: AH00526: Syntax error on line 76 of /etc/httpd/conf.d/virtualhosts.conf:
May 20 17:09:24 host2 httpd[3180]: Invalid command 'SSLCertificateFile', perhaps misspelled or defined by a module not included in the server configuration
然而,通过对文档进行非常基本的检查,可以发现此链接,它提供了一个与文件中的内容几乎相同的模板示例virtualhosts.conf
- 即:
LoadModule ssl_module 模块/mod_ssl.so
监听 443 <VirtualHost *:443> 服务器名称www.example.com SSLCertificateFile“/path/to/www.example.com.cert”上的 SSLEngine SSLCertificateKeyFile“/path/to/www.example.com.key”
而不是让我提出一个自己的配置版本,同样删除服务器托管的确切域。
我详细列出了已安装和现在安装的软件包,除了mod_http2-1.15.3-2.fc30.x86_64
在旧系统和mod_http2-2.0.11-2.fc38.x86_64
新系统上,没有看到任何其他东西,安装了大约 106 个模块所以...
鉴于所有人都关注安全和加密,那么会发生什么呢?
答案1
事实证明,现在掌管这场节目的那些愚蠢的人,一边大喊安全,一边却不屑于包含这个模块;它不仅不在软件包中httpd
,也不在包中mod_http2-2.0.11-2.fc38x86_64
!
相反,你必须:
dnf install mod_ssl
为了得到这个 - 然后一切立即起作用。
你知道,我认为这是一个 BUG - 我认为这是一个打包错误,但实际上,根据我的观察,它至少肯定是一个文档错误。不,深埋在文档中是不行的!因此我浪费了时间 - 希望这能为某人节省一些时间。