Dette dokument dækker EMDS (Domibus), som er en del af EHMI MeddelelsesRegistrering (EMR).
I folderen "compose/configuration" findes følgende relevante konfigurationsfiler, som indlæses når docker compose startes op:
| domibus/domibus-common.env | Fælles properties som bruges i både "nsp" og "testanvender"-udgaverne af Domibus. |
| domibus/logback.xml | Konfiguration af Domibus'ens logning |
| mysql.cnf | Konfiguration af de MySQL-services som Domibus'en bruger |
| domibus/keystores/ | Keystores til de to instanser af Domibus'en. Når de rigtige test certifikater hentes til "nsp" og "testanvender" bør de to keystores opdateres |
| domibus/gateway_truststore.jks | Truststoren til både "Nsp" og "testanvender" domibus. Indeholder certifikat til SMP'en samt to certifikater til OCES, som alle tre skal vedligeholdes |
| domibus/pmodes/ | Her ligger to eksempler på "pmodes", en til "nsp" (pmode-nsp.xml) og en til "testanvender" (pmode-testanvender.xml). Disse skal manuelt uploades til den pågældende Domibus-installation første gang den startes op. Dette skal ske via browser UI. |
Det meste konfiguration er statisk, dvs. der burde ikke som sådan være behov for at ændre i default-værdierne. Men de skal være sat for at Domibus kan starte op.
En Domibus konfigureres typisk via dens "domibus.properties"-fil, men her i projektet har vi indtil videre valgt at alt konfiguration ligger som environment variables, som angives i enten "domibus-common.env" eller direkte i docker compose-filen. Noget af den instans-specifikke konfiguration angives ydermere i den "pmode"-fil der uploades (se installationsvejledningen).
Der er inkluderet en aktuelt "domibus.properties" i "compose/configuration/domibus/examples/domibus.properties" der viser alle aktuelle properties og deres beskrivelser. Den kan refereres hvis man vil vide mere om de properties der lige nu sættes igennem environment variables. Navn og format er nemlig den samme uanset hvor de bliver sat.
Herunder gennemgås de properties der aktuelt er sat.
Bemærk, at password-politikerne herunder er beregnet til testmiljøer, ikke produktion.
Property | Beskrivelse | Default værdi |
|---|---|---|
| domibus.payload.encryption.active | Aktiverer kryptering af payloads, så data i hvile er beskyttet. | true |
| domibus.passwordPolicy.defaultUser.autogeneratePassword | Bestemmer om Domibus autogenererer password for "admin"-brugeren. Når sat til "false" vil passwordet være sat til "123456". | false |
| domibus.passwordPolicy.checkDefaultPassword | Slår kravet fra om, at default-password skal ændres ved første login. | false |
| domibus.passwordPolicy.dontReuseLast | Antal tidligere passwords, der ikke må genbruges (0 = ingen begrænsning). | 0 |
| domibus.passwordPolicy.expiration | Password-udløb i dage (0 = ingen udløb). | 0 |
| domibus.passwordPolicy.pattern | Regex for minimum password-kompleksitet for Domibus-brugere. | ^.*$ |
| domibus.properties.passwordPolicy.pattern | Regex-krav til passwords brugt i Domibus’ properties (fx keystore-pw). | ^.*$ |
| domibus.plugin.passwordPolicy.pattern | Regex-krav for plugin-brugeres passwords. | ^.*$ |
| JAVA_OPTS | JVM-indstillinger, herunder config-lokation og evt. debugging-port. | -Ddomibus.config.location=/domibus-conf -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 |
| domibus.security.keystore.location | Initiel placering af keystore (persisteres i DB efter første start). Bemærk, placering er på container-niveau. I docker-compose-fil mappes der til en fil på host-niveau. | /domibus-conf/keystores/gateway_keystore.jks |
| domibus.security.keystore.type | Format af keystore (fx JKS). | jks |
| domibus.security.truststore.location | Initiel placering af truststore (persisteres i DB efter første start). Bemærk, placering er på container-niveau. I docker-compose-fil mappes der til en fil på host-niveau. | /domibus-conf/keystores/gateway_truststore.jks |
| domibus.security.truststore.type | Format af truststore. | jks |
domibus.security.encryption.enabled | Enabler encryption | true |
| domibus.security.encryption.keyIdentifier | Key identifier type der bruges til encryption | DirectReference |
| domibus.security.signature.enabled | Enabled signatur | true |
| domibus.security.signature.keyIdentifier | Key identifier type der bruges til signatur | DirectReference |
| domibus.security.signature.pkipath | Angivelse af om domibus skal inkludere den fulde certifikat kæde til signatur | false |
| domibus.entityManagerFactory.jpaProperty.hibernate.connection.driver_class | JDBC-driver Hibernate skal bruge til DB-forbindelsen | com.mysql.cj.jdbc.Driver |
| domibus.entityManagerFactory.jpaProperty.hibernate.dialect | Hibernate-dialekt der matcher den valgte DB | org.hibernate.dialect.MySQL8Dialect |
| domibus.entityManagerFactory.jpaProperty.hibernate.id.new_generator_mappings | Slår nye ID-generator mappings til/fra | false |
| domibus.datasource.driverClassName | JDBC driver navn | com.mysql.cj.jdbc.Driver |
Herunder bruges værdierne fra "docker-compose-domibus-nsp.yaml" som eksempel.
Property | Beskrivelse | Default værdi |
|---|---|---|
| domibus.database.schema | Navnet på det schema der er oprettet i den tilhørende Mysql-service. | nsp |
| domibus.datasource.url | JDBC-connection string. | jdbc:mysql://domibus-db-nsp:3306/nsp?allowPublicKeyRetrieval=true&useSSL=False |
| domibus.datasource.user | Brugernavn til mysql. | domibus |
| domibus.datasource.password | Password til mysql. | domibus1234 |
| activeMQ.broker.host | Hostnavn på tilhørende ActiveMQ-service. | activemq-nsp |
| domibus.security.key.private.alias | Alias på Domibus'ens private key i keystore. | sosi:alias_system |
| domibus.security.key.private.password | Password på Domibus'ens private key i keystore. | Test1234 |
| domibus.security.truststore.password | Password på Domibus'ens private key i truststore. | Test1234 |
| domibus.dynamicdiscovery.useDynamicDiscovery | Angivelse af om domibus skal bruge dynamic discovery | true |
| domibus.dynamicdiscovery.client.specification | Hvilken client der skal bruges til dynamic discovery | PEPPOL |
| domibus.dynamicdiscovery.peppolclient.partyid.type | Hvilken type partyid der bruges | urn:fdc:peppol.eu:2017:identifiers:ap |
| domibus.dynamicdiscovery.transportprofileas4 | Hvilken type transportprofil der ebruges | nemhandel-transport-as4-v2_0 |
| domibus.dynamicdiscovery.peppolclient.partyid.responder.role | Responder role for party'et | http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/responder |
| domibus.smlzone | URL'en til SML'en | edel.sml-demo.dataudveksling.dk |
Certifikatet der bruges til mTLS mod SMP'en skal være et MitID certifikat, og for at certifikatet er godkendt skal MedCom tilføje det til konfigurationen i SMP'en. For at gøre det skal følgende ske:
Køre følgende curl: "curl --cert ./tls.crt --key ./tls.key https://registrationservice-demo.nemhandel.dk/nemhandel-pors/rest/business/isAgreementAccepted"
Hvilket vil give noget i stil med følgende output: "ERROR: Current certificate or sector9 user ID (sub) (CVR:33257872-UID:UI:DK-O:G:8d3fa047-c77e-47e4-bdd2-e91488610ce6) has not accepted the NemHandel Agreement.", hvilket vidersende til ehmi@medcom.dk.
TODO
Den seneste sårbarhedsscanning af domibus har vist eksistensen af følgende sårbarhed (se ):
Ved opdateringer af domibus bør denne oversigt ajourføres.
Da sårbarheden handler om, at der i nogle tilfælde ikke bliver skrevet de rigtige headers, så kan man sætte loadbalancer op til at gøre det i stedet:
add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0" always;
add_header X-Frame-Options "SAMEORIGIN" always;