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".