【问题标题】:LDAPS Authentication in an httpd.conf file failshttpd.conf 文件中的 LDAPS 身份验证失败
【发布时间】:2018-04-20 21:28:15
【问题描述】:

我有一个网页位于网络服务器上的受限领域后面。为了获得成功,人们必须使用他们的 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 服务器不喜欢它。重新加载服务就好了;没有错误。我什至可以访问该站点,并看到用户名和密码提示,如果我正确输入凭据,这似乎可以工作。但是,我看到的不是我期望看到的漂亮网页,而是以下消息:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请通过 webmaster@example.com 联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。

服务器错误日志中可能会提供有关此错误的更多信息。

Apache/2.4.18 (Ubuntu) 服务器位于受限.example.com 端口 443

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

【问题讨论】:

  • 您的 Apache 服务器是否信任签署证书的 CA?离题。
  • 相反,这是完全相关的,这正是导致解决方案的原因。现在发布...

标签: apache ssl ldap samba


【解决方案1】:

我们的 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 2014-01-24
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多