FreeIPA Docker 编写 WEB UI

FreeIPA Docker Compose WEB UI

在花了几个小时搜索为什么我无法访问我的 webUI 之后,我求助于您。 我使用 docker-compose 在 docker 上设置了 freeipa。我在自己的计算机上使用 host-ip:port 打开了一些端口以获得远程访问。 Freeipa 应该是 运行 在我的服务器上(比方说 192.168.1.2)并且 webui 可以通过端口 80 / 443(192.168.1.4:80 或 192.168.1.4:443)上的任何其他本地计算机访问

当我 运行 我的 .yaml 文件时,freeipa 使用“ipa-server-install 命令成功”消息进行设置。

我认为它可能来自我严格的 iptables 规则,并尝试将所有策略都设置为 ACCEPT 以进行调试。它没有做到。

我有点不知道如何调试它或找到如何修复它。

OS : ubuntu 20.04.3 Docker 版本:20.10.12,构建 e91ed57 freeipa 图片:freeipa/freeipa:centos-8-stream Docker-撰写版本:1.29.2,构建 5becea4c

我的 .yaml 文件:

version: "3.8"
services:  
  freeipa:
    image: freeipa/freeipa-server:centos-8-stream
    hostname: sanctuary
    domainname: serv.sanctuary.local
    container_name: freeipa-dev
    ports:
      - 80:80
      - 443:443
      - 389:389
      - 636:636
      - 88:88
      - 464:464
      - 88:88/udp
      - 464:464/udp
      - 123:123/udp
    dns:
      - 10.64.0.1
      - 1.1.1.1
      - 1.0.0.1
    restart: unless-stopped
    tty: true
    stdin_open: true
    environment:
      IPA_SERVER_HOSTNAME: serv.sanctuary.local
      IPA_SERVER_IP: 192.168.1.100
      TZ: "Europe/Paris"
    command:
      - -U
      - --domain=sanctuary.local
      - --realm=sanctuary.local
      - --admin-password=pass
      - --http-pin=pass
      - --dirsrv-pin=pass
      - --ds-password=pass
      - --no-dnssec-validation
      - --no-host-dns
      - --setup-dns
      - --auto-forwarders
      - --allow-zone-overlap
      - --unattended
    cap_add:
      - SYS_TIME
      - NET_ADMIN
    restart: unless-stopped
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
      - ./data:/data
      - ./logs:/var/logs
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.lo.disable_ipv6=0
    security_opt:
      - "seccomp:unconfined"
    labels:
      - dev

我尝试修改部署文件(添加或删除在互联网上找到的配置文件,例如 add/remove IPA_SERVER_IP、add/remove 外部桥接网络)

非常感谢您的帮助=)

好的,对于那些可能有同样问题的人,我将解释我为调试它所做的一切。

我非常依赖这里找到的答案:https://floblanc.wordpress.com/2017/09/11/troubleshooting-freeipa-pki-tomcatd-fails-to-start/

首先,我用ipactl status检查了每个服务的状态。根据问题的不同,您可能会有不同的输出,但我的输出是这样的:

Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING
named Service: RUNNING
httpd Service: RUNNING
ipa-custodia Service: RUNNING
pki-tomcatd Service: STOPPED
ipa-otpd Service: RUNNING
ipa-dnskeysyncd Service: RUNNING
ipa: INFO: The ipactl command was successful

因此我检查了 tomcat /var/log/pki/pki-tomcat/ca/debug-xxxx 的日志。我意识到我有 connection refused 与证书相关的东西。

在这里,我首先使用 sudo certutil -L -d /etc/pki/pki-tomcat/alias -n 'subsystemCert cert-pki-ca' 检查了我的证书是否存在于 /etc/pki/pki-tomcat/alias 中。

## output : 
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4 (0x4)
        ...
        ...

然后我确保可以使用 /var/lib/pki/pki-tomcat/conf/password.conf 中的密码读取私钥(带有标签 internal=…)

grep internal /var/lib/pki/pki-tomcat/conf/password.conf | cut -d= -f2 > /tmp/pwdfile.txt
certutil -K -d /etc/pki/pki-tomcat/alias -f /tmp/pwdfile.txt -n 'subsystemCert cert-pki-ca'

我仍然没有什么奇怪的,所以我假设在这一点上:

  1. pki-tomcat 可以访问证书和私钥
  2. 问题可能出在 LDAP 服务器端

我尝试读取 LDAP 中的用户条目,以使用 ldapsearch -LLL -D 'cn=directory manager' -W -b uid=pkidbuser,ou=people,o=ipaca userCertificate description seeAlso 将其与证书进行比较,但在输入密码后出现错误。因为我的证书没问题而且 LDAP 服务 运行,我假设 证书日期 出了问题。

确实,在安装 freeipa 期间,使用您当前的系统日期作为基础来设置证书。但它也安装 chrony 用于服务器时间同步。重新启动后,我的 chrony conf 错误并将我的主机日期设置为提前 2 年。

我无法找出 chrony conf 的问题,所以我停止了服务并使用 timedatectl set-time "yyyy-mm-dd hh:mm:ss" 手动设置日期。

我重新启动了 freeipa 服务,我的 pki-tomcat 服务又开始工作了。

之后,我将路由器中的freeipa IP设置为DNS。我在本地网络中重新启动了服务和计算机,因此刷新了 DNS 配置。之后,webUI 就可以访问了!