httpd.conf 文件中的 LDAPS 身份验证失败

LDAPS Authentication in an httpd.conf file fails

我有一个网页位于网络服务器上的受限领域之后。为此,人们必须使用他们的 Samba Active Directory 帐户进行身份验证。为此,我一直在我的 httpd.conf 文件中为此站点使用以下配置设置:

<Directory "${TOP_DIR}/public_html>
  AuthName "My Company's Totally Protected Schtuff"
  AuthType Basic
  AuthBasicProvider ldap
  AuthLDAPURL "ldap://dc01.example.com:389/dc=samdom,dc=example,dc=com?samaccountname"
  AuthLDAPBindDN "CN=privileged user,CN=Users,DC=samdom,DC=example,DC=com"
  AuthLDAPBindPassword "totallySw33tpa$$w0rd"
  AuthUserFile /dev/null
  Require valid-user
</Directory>

好吧,我的 samba DC 现在都有 SSL 证书,由 CA 授予它们。所以我改变了我的配置:

<Directory "${TOP_DIR}/public_html>
  AuthName "My Company's Totally Protected Schtuff"
  AuthType Basic
  AuthBasicProvider ldap
  AuthLDAPURL "ldaps://dc01.example.com:636/dc=samdom,dc=example,dc=com?samaccountname"
  AuthLDAPBindDN "CN=privileged user,CN=Users,DC=samdom,DC=example,DC=com"
  AuthLDAPBindPassword "totallySw33tpa$$w0rd"
  AuthUserFile /dev/null
  Require valid-user
</Directory>

我网络上的大多数服务器都能很好地处理 LDAPS,但我的 Apache2 服务器不喜欢它。重新加载服务就好了;没有错误。我什至可以访问该站点,并看到用户名和密码提示,如果我正确输入凭据,这似乎可以正常工作。但是,我看到的不是我期望看到的漂亮网页,而是这条消息:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@example.com to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Apache/2.4.18 (Ubuntu) Server at restricted.example.com Port 443

访问我的错误日志没有发现任何问题。任何精通 Apache2 中 LDAPS 技能的人都可以提供任何见解吗?我会满足于不熟练的技能,只要它有效。

我们的 LAMP 服务器需要信任颁发我的 SSL 证书的证书颁发机构,这些证书位于我的 Samba 域控制器上,以便加载受保护领域后面的页面。我没有意识到 1) 除了 HTTPS 之外,其他任何事情都对此很重要(回想起来......呃)和 2) 默认情况下我的 CA 还没有被信任。

在 Samba 域控制器的情况下,您的 Samba 管理员(可能只是您,因为它对我...不是您,我)安装了一个文件,以便 LDAPS 可以工作。它以 .pem 扩展名结尾,它用于证书颁发机构,因此如果您是专业人士,您可能已将其命名为 "ca"。在我的 Ubuntu Samba 机器上,它位于 /var/lib/samba/private/tls/,但这些文件的另一个常见位置是 /usr/local/samba/private/tls/。在这个例子中,我的 CA pem 证书的名称是 server.ca-bundle.pem.

好吧,我将 server.ca-bundle.pem 复制到了我的 LAMP 服务器的 /usr/local/share/ca-certificates/ 文件夹中。 (默认情况下,那里什么也没有。)然后我将它的扩展名从 .pem 更改为 .crt(如 server.ca-bundle.crt)。作为旁注,我有三个域控制器 运行 Samba 4.7.6,但它们都从同一机构(在我的例子中是 Comodo)获得证书,所以我只需要一个 server.ca-bundle.pem其中

接下来,我 运行 update-ca-certificates(我正在以 root 身份执行所有这些操作,所以你知道)。这会在 /etc/ssl/certs/ca-certificates.crt 生成一个新文件,据我所知,该文件包含所有受信任的权限。

以下命令对测试安全连接很有用,没有出现错误:

openssl s_client -connect dc01.samdom.mycompany.com:636 -CApath /etc/ssl/certs

很多输出,但一切看起来都不错。然后我像在我之前的 post 中那样尝试了我的配置,重新加载了 Apache2,并且从客户端机器上,我能够看到受保护领域后面的页面。 问题已解决!