我正在尝试通过双向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")
SSLRequire(%{SSL_CLIENT_S_DN_CN} eq&#34;来自某些数据库&#34;)
应该与DB中的用户匹配,然后允许访问?
答案 0 :(得分:0)
请参阅FreeIPA的Web App Authentication一般指南。您尝试做的事情是复杂的(请参阅下面的答案),并且有更好的方法来限制对特定用户或群组的访问,例如使用HBAC规则和 mod_authnz_pam 。
现在,回答:
根据SSLRequire documentation
只有文字,mod_ssl environment variables和file
扩展函数可以在匹配表达式中使用。几乎不可能实现您想要的(您可以假设使用FUSE或类似技术将数据库查询的结果显示为文件)。
如果SSLRequire
指令不匹配,将拒绝访问,因此不需要额外的处理来将Kerberos身份验证限制为仅匹配的用户。