apache双向ssl auth与kerberos

时间:2015-03-11 15:06:50

标签: linux apache authentication ssl kerberos

我正在尝试通过双向SSL握手来配置apache进行身份验证,然后mod_auth_kerberos启动,这一切都正常工作..后端是freeIPA。

但是我想将用户限制为SSL_CLIENT_S_DN_CN,而不是对任何其他有效的kerberos用户进行身份验证

这是虚拟主机配置,

LoadModule auth_kerb_module modules/mod_auth_kerb.so
LoadModule dumpio_module modules/mod_dumpio.so
LoadModule ssl_module modules/mod_ssl.so

Listen 443


<VirtualHost *:443>
    ServerAdmin web01.server.hostingprovider.com
    DocumentRoot "/var/www/html"
    ServerName myserver.name
    SSLEngine on
    SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:!aNULL:!MD5
    SSLHonorCipherOrder on
    SSLCertificateFile /etc/httpd/ssl/server-cert.pem
    SSLCertificateKeyFile /etc/httpd/ssl/private/server-key.pem

    SSLVerifyClient require
    SSLVerifyDepth 1
    SSLCACertificateFile /etc/httpd/ssl/cacert.pem

    LogLevel debug
    DumpIOInput On
    DumpIOOutput On
    ScriptAlias /application /var/www/app.cgi
    ErrorLog "logs/app01-error.log"
    CustomLog "logs/app01-access_log" common

    <Location />
      SSLUserName SSL_CLIENT_S_DN_CN
      AuthType Kerberos
      AuthName "Kerberos Login"
      KrbMethodNegotiate On
      KrbMethodK5Passwd On
      KrbAuthRealms MYREALM.COM
      Krb5KeyTab /etc/security/keytabs/spnego.service.keytab
      require valid-user
    </Location>


</VirtualHost>

我已尝试使用SSLRequire,这适用于用户&#34; krisdigitx&#34;,但它也允许其他kerberos用户使用相同的证书进行身份验证。

SSLRequire (%{SSL_CLIENT_S_DN_CN} eq "krisdigitx")
  1. 如何创建数据库,即
  2. SSLRequire(%{SSL_CLIENT_S_DN_CN} eq&#34;来自某些数据库&#34;)

    应该与DB中的用户匹配,然后允许访问?

    1. 如何匹配第一步验证的用户并仅允许他通过kerberos身份验证?

1 个答案:

答案 0 :(得分:0)

请参阅FreeIPA的Web App Authentication一般指南。您尝试做的事情是复杂的(请参阅下面的答案),并且有更好的方法来限制对特定用户或群组的访问,例如使用HBAC规则和 mod_authnz_pam

现在,回答:

  1. 根据SSLRequire documentation只有文字,mod_ssl environment variablesfile扩展函数可以在匹配表达式中使用。几乎不可能实现您想要的(您可以假设使用FUSE或类似技术将数据库查询的结果显示为文件)。

  2. 如果SSLRequire指令不匹配,将拒绝访问,因此不需要额外的处理来将Kerberos身份验证限制为仅匹配的用户。