Homelab

ejbca-ce docker

Docker containers maken aan de hand van "Start out with EJBCA Docker container", maar dan met podman en podman-compose. Voor de docker-compose.yml dit gebruiken:


        version: '3'
        networks:
        access-bridge:
        driver: bridge
        application-bridge:
        driver: bridge
        services:
        ejbca-database:
        container_name: ejbca-database
        image: "library/mariadb:latest"
        networks:
        - application-bridge
        environment:
        - MYSQL_ROOT_PASSWORD=Verysecurepassword123
        - MYSQL_DATABASE=ejbca
        - MYSQL_USER=ejbca
        - MYSQL_PASSWORD=Verysecurepassword456
        volumes:
        - ./datadbdir:/var/lib/mysql:rw
        restart: unless-stopped
        ejbca-node1:
        hostname: ejbca-node1
        container_name: ejbca
        image: keyfactor/ejbca-ce:latest
        depends_on:
        - ejbca-database
        networks:
        - access-bridge
        - application-bridge
        environment:
        - DATABASE_JDBC_URL=jdbc:mariadb://ejbca-database:3306/ejbca?characterEncoding=UTF-8
        - LOG_LEVEL_APP=INFO
        - LOG_LEVEL_SERVER=INFO
        - TLS_SETUP_ENABLED=simple
        - DATABASE_PASSWORD=Verysecurepassword456
        ports:
        - "80:8080"
        - "443:8443"
        restart: unless-stopped
                

Als je de tekst op de site gebruikt zit er een indentatiefout op regel 22 (container_name: ejbca), dus die kun je het beste verwijderen en opnieuw typen. Je moet de containers maken als root, want een normale gebruiker kan in podman geen webserver aanzetten. De mariadb server geeft exit code 1, /var/lib/mysql in die container heeft namelijk niet de juiste permissies. De mariadb container werkt niet goed met podman (of i.i.g. niet om de juiste permissies in te stellen voor /var/lib/mysql). Dat zegt deze bron ook.

Dus centos docker repo toevoegen en docker-ce downloaden. Je kan je gebruiker aan de docker groep toevoegen zodat je niet sudo hoeft te gebruiken, werkt waarschijnlijk pas na een reboot. Hierbij hetzelfde compose-bestand gebruiken.

Checken met docker ps naar welke poort de web interface gaat. Dan met firewall-cmd een port-forwarding regel instellen (bron), bijvoorbeeld zo:

sudo firewall-cmd --add-forward-port=port=8443:proto=tcp:toport=443

sudo firewall-cmd --add-masquerade

Dit hoeft niet vanwege een bug tussen docker en firewalld. De eerste poort bij docker * -p <poort>:<poort> * of vergelijkbaar in het compose-bestand wordt hierdoor opengezet naar het host netwerk.

Check of je vanaf je client bij de EJBCA Administration kan.

De mariadb container ingaan met docker exec -it ejbca-database /bin/bash en /usr/bin/mariadb-secure-installation uitvoeren. De stappen doorlopen en de containers herstarten.

Verbinden op https://192.168.1.121/ejbca/adminweb/ of soortgelijk en de stappen doorlopen. Het SuperAdmin-certificaat opslaan op een veilige plek, bijvoorbeeld een versleutelde schijf(kopie). Daarna door met "Create your first Root CA using EJBCA".