kom godt i gang - digitaliseringskataloget · 2020. 11. 3. · kom godt i gang . certifikater ....
TRANSCRIPT
-
Side 1 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
KOM GODT I GANG CERTIFIKATER
En trin for trin guide til dig, der skal bestille og konfigurere certifikater September 2020
https://www.kombit.dkhttps://digitaliseringskataloget.dk/
-
Side 2 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
1. Introduktion
I den fælleskommunale infrastruktur anvendes certifikater til Fælleskommunalt
Adgangsstyring for systemer (ADGSYSTEM) og til Fælleskommunalt Adgangsstyring for
brugere (ADGBRUGER). Certfikater anvendes til at sikre parters rette identitet, samt til at
etablere sikker kommunikation mellem parterne. De anvendes når et fagsystem integrerer
med webservices og Fælleskommunal Beskedfordeler (BFO), samt når brugervendte
systemer og Identity Providers integrerer med Context Handler. De er således helt centrale
for sikkerhedsmodellen i infrastrukturen.
Formålet med denne guide er at give dig en introduktion til de hyppigt forekommende
emner ved ibrugtagning, så du kommer hurtigt og godt i gang. Guiden henvender sig primært
til leverandører, der skal integrere med den fælleskommunale infrastruktur for første gang.
De første tre afsnit er generelle og beskriver forskellen på de offentlige/private versioner,
den anvendte standard, samt hvordan du bestiller. De sidste tre afsnit beskriver specifikt,
hvordan du registrerer og anvender et certifikat.
Guiden indeholder følgende afsnit:
1. Introduktion 2. Offentlig vs. privat version 3. Funktionscertifikater 4. Bestilling hos Nets 5. Registrering i Fælleskommunalt Administrationsmodul (ADM) 6. Windows Certificate Store 7. Java Keystore 8. Certification Authorities
Du må ikke anvende samme certifikat ved integration til infrastrukturens testmiljø og
produktionsmiljø. Du skal i stedet bestille og registrere separate certifikater til hvert miljø.
Funktionscertifikater er beregnet til specifikke formål, og du skal derfor anskaffe et
dedikeret certifikat til hvert unikke system.
Guiden står ikke alene, men fungerer derimod blot som introduktion til de detaljerede
vejledninger, som du finder i Digitaliseringskataloget.
2. Offentlig vs. privat version
Grundlæggende findes certifikater i to versioner; med eller uden en privat nøgle. De
anvendes til kryptering, således at afsender er sikker på, at det kun er tiltænkte modtager,
der kan læse informationen. Certifikater anvendes ligeledes til signering, således at
modtager kan være sikker på, at det var rette afsender, der sendte data.
https://digitaliseringskataloget.dk/tekniske_betingelser/adgangsstyring-systemerhttps://digitaliseringskataloget.dk/tekniske_betingelser/adgangsstyring-systemerhttps://digitaliseringskataloget.dk/tekniske_betingelser/adgangsstyring-brugerehttps://digitaliseringskataloget.dk/tekniske_betingelser/adgangsstyring-brugerehttps://digitaliseringskataloget.dk/tekniske_betingelser/webservicehttps://digitaliseringskataloget.dk/tekniske_betingelser/beskedfordeling
-
Side 3 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Indehaver af versionen med den private nøgle kan således læse information, som kun er
tiltænkt certifikatets ejer, og indehaver af versionen med den private nøgle kan udgive sig
for at være certifikatets ejer og sende information på dennes vegne. Det er derfor kritisk, at
du er bevidst om forskellen på de to, samt at du beskytter den private version på behørig
vis. Derudover er det vigtigt, at du ikke ikke deler den private version med andre.
Da signering og kryptering foregår i begge retninger ved kommunikation mellem systemerne,
skal hver part have registreret modpartens offentlige version af deres certifikater. Det er
derfor, du skal registrere den offentlige version i Fælleskommunalt Administrationsmodul
(ADM) for dit anvendersystem, brugervendte system eller Identity Provider. For de to
sidstnævnte er certifikatet indlejret i SAML-metadata. Du skal registrere infrastrukturens
offentlige version af dets certifikater på de systemer, som du kalder fra. Dem henter du i
Digitaliseringskataloget.
Hvis du kommer til at dele den private version ved en fejltagelse, skal du straks tilbagekalde
den (revocation) og få et nyt udstedt.
3. Funktionscertifikater
Den offentlige standard for certifikater betegnes OCES-standarden, som er defineret af
Digitaliseringsstyrelsen. Generelt anvendes FOCES, også kaldet funktionscertifikater. Det er
også muligt at anvende virksomhedscertifikater (VOCES), men det anbefales at anvende
FOCES ved systemintegrationer, da de er beregnet til dette specifikke formål.
4. Bestilling hos Nets
Bestilling af funktionscertifikater foregår via Nets hjemmeside og kan kun foretages af en
NemID-administrator fra virksomheden. Bestilling til test og produktion foretages i separate
systemer:
• Bestilling til produktion • Bestilling til test
Når du aktiverer et certifikat, får du udleveret versionen med den private nøgle. Du skal selv
angive en adgangskode. Ved aktivering kan du vælge mellem tre formater:
https://digitaliseringskataloget.dk/administrationsmodulhttps://digitaliseringskataloget.dk/tekniske_betingelser/adgangsstyring/adgangsstyring_for_systemer/certifikaterhttps://digst.dk/it-loesninger/nemid/om-loesningen/oces-standarden/https://www.nets.eu/dk-da/l%C3%B8sninger/nemid/funktionssignaturhttps://www.nets.eu/dk-da/l%C3%B8sninger/nemid/funktionssignaturhttps://erhverv.pp.certifikat.dk/
-
Side 4 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
I dette eksempel er valgt PKCS#12 (.p12/.pfx), da det er et generelt format, der fungerer på
tværs af platforme. Ved at klikke på ”Hent funktionssignatur” gemmer du den private
version lokalt. Det er denne, der skal anvendes i koden ved kald til services på
infrastrukturen, eller ved opsætning af Brugervendt system og Identity Provider. Husk at
notere adgangskoden og gem den sikkert.
Bemærk, at du efterfølgende kun kan hente den offentlige version uden den private nøgle.
Hvis du mister versionen med den private nøgle, eller mister adgangskoden til den, skal du
anmode om at få et nyt certifikat udstedt.
I selvbetjeningen vælger du ”Øvrige signaturer -> Administrér funktionssignatur”:
Her kan du fremsøge og vælge dit certifikat:
-
Side 5 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
1. Her kan du bede om genudstedelse, hvilket genererer en ny version med ny udløbsdato.
2. Du kan ved genudstedelse samtidigt anmode om at få det gamle spærret. 3. Her henter du den offentlige version. 4. Du kan også vælge blot at spærre det nuværende certifikat.
Certifikaterne udløber automatisk ved udløbsdatoen og kan ikke benyttes herefter. Når man
genudsteder et certifikat, så udstedes der en ny ”version” af certifikatet, så begge
certifikater er aktive på samme tid. Dette giver dig mulighed for i god tid at skifte
certifikatet, inden det gamle udløber. Det gamle certifikat kommer således ikke automatisk
på revocation-list, med mindre man specifikt anmoder om dette, i stedet udløber det blot.
Den offentlige version hentes som en CER fil (.cer) i PEM-format. Det er denne, du skal
registrere på dit anvendersystem i ADM. I tilfælde af brugervendt system eller Identity
Provider, da vil du efter lokal konfiguration med det private certifikat kunne udtrække
SAML-metadata som har den offentlige version indlejret. Det er således SAML-metadata-
filen du registrerer i ADM.
-
Side 6 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
5. Registrering i Fælleskommunalt Administrationsmodul (ADM)
Når du har modtaget dit certifikat, skal den offentlige version registreres i ADM (test eller
produktion). Hvis du skal integrere med webservices eller Beskedfordeler, skal certifikatet
registreres på Anvendersystem. Her trækker du blot certifikatet (.cer/.pem) ind i boksen
med den stiplede linje og klikker på ”Gem” knappen.
PEM-formatet er tekst der starter med ”----- BEGIN CERTIFICATE -----”. CER filer findes
både i binært og PEM-format, så du kan ved at kigge i filen se hvilket format, det har. Den
version du henter fra Nets er allerede i det rigtige PEM-format.
Det nemmeste er at hente den offentlige version fra Nets. Du kan også anvende OpenSSL til
at generere den offentlige version, eller anvende Windows Certificate Snap-in.
For brugervendte systemer og Identity Providers bliver certifikatet automatisk registreret,
når du uploader SAML-metadata filen, da det er indlejret i denne.
https://exttestwww.serviceplatformen.dk/administration/https://www.serviceplatformen.dk/administration/
-
Side 7 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Opdateringer bliver automatisk provisioneret til Security Token Service (Adgangsstyring for
systemer) eller Context Handler (Adgangsstyring for brugere). Dette sker næsten
umiddelbart, og du vil inden for kort tid kunne bruge dit certifikat.
6. Windows Certificate Store
Håndtering af certifikater på Java-platformen er beskrevet i efterfølgende afsnit. Du
importerer et certifikat lokalt på en Windows-maskine ved at aktivere filen (dobbelt-klik
eller ). Dermed aktiveres Certificate Import Wizard:
Hvis du skal teste lokalt, så kan du anvende ”Current User”. Når koden skal afvikles fra en
Windows-server, placerer du certifikater under ”Local Machine”, dermed er de tilgængelige
for alle tekniske brugere, som programmer afvikles i context af. Du bliver derefter bedt om
at indtaste koden til den private nøgle:
-
Side 8 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Som det næste bliver du spurgt om, hvor certifikatet skal placeres:
Placeringen i Certificate Store har ingen teknisk betydning, men det kan tænkes, at jeres
virksomhed har en standard vedrørende dette, som skal følges. Man skal dog være
opmærksom på om den context (bruger) som programmet kører i har adgang til det
certificate store der anvendes.
For at tilgå Certificate Store startes Microsoft Management Console (mmc.exe). Dernæst
tilføjes ”Certificate” Snap-in:
-
Side 9 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Herfra kan du:
• Eksportere et certifikat til offentlig version i PEM-formatet (.cer). • Se detaljer for et certifikat. • Se Certificate Authority (CA) Chain samt tjekke, at denne er valid. • Se Thumbprint, som skal bruges i .NET kode.
Når du dobbelt-klikker på et certifikat og vælger detaljer, finder du Thumbprint på listen af
attributter. Thumbprint anvendes ofte, når koden laver opslag i Certificate Store for at
hente et certifikat (der kan laves opslag på andre attributter også).
Som beskrevet tidligere skal du skal hente og registrere infrastrukturens certifikater på den
maskine koden afvikles fra, på samme måde som dit eget certifikat. Der findes separate
certifikater til Security Token Service (Adgangsstyring for systemer), Context Handler
(Adgangsstyring for brugere), webservices og de fælleskommunale støttesystemer. Du
behøver selvfølgelig kun at registrere de certifikater, der tilhører komponenter, du skal
integrere med.
Eksempler på anvendelse af certifikater ved kald til webservices findes i .NET client for
Serviceplatformens DemoService.
https://digitaliseringskataloget.dk/tekniske_betingelser/adgangsstyring/adgangsstyring_for_systemer/certifikaterhttps://github.com/Serviceplatformen/demoservice-client-nethttps://github.com/Serviceplatformen/demoservice-client-net
-
Side 10 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
7. Java Keystore
Til håndtering af certifikater på Java-platformen anbefales https://keystore-explorer.org/.
Certifikater gemmes i Java KeyStore filer (.jks).
Eksempler på anvendelse af certifikater ved kald til infrastrukturen findes i demo-kode til
Beskedfordeler (i dokumentationspakken) samt Java client for Serviceplatformens
DemoService. De anvender begge .jks filer, der kan genanvendes, blot man udskifter
relevante certifikater, men du kan med fordel lave to nye tomme keystores og kalde dem fx
client.jks og trust.jks. Husk at skifte referencer til dem i koden.
Filen client.jks indeholder det private certifikat, der bruges ved kald til infrastrukturen. Dette skal du erstatte med dit eget. Vigtigt: Et keystore kan indeholde flere certifikater, men
client.jks må kun indeholde et certifikat for dit anvendersystem. Det skal have samme
adgangskode som selve certifikatet. Vælg ”Tools” i menu og dernæst ”Set KeyStore
Password”:
https://keystore-explorer.org/https://digitaliseringskataloget.dk/integration/sf1460dhttps://github.com/Serviceplatformen/demoservice-client-javahttps://github.com/Serviceplatformen/demoservice-client-java
-
Side 11 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Filen trust.jks indeholder infrastrukturens certifikater for det eksterne testmiljø, og disse bør være gyldige, hvis du har hentet seneste version af demo-koden. Hvis de er udløbet, kan
du hente seneste version fra infrastrukturens certifikater. Dette Keystore har ikke behov for
at få sat en adgangskode, da det kun indeholder offentlige certifikater. Det er blot
manglende CA du skal importere her, da certifikater anvendt til signing og krypteret
forbindelse medsendes i svar fra endpoint.
8. Certification Authorities
For at et certifikat skal fungere korrekt, skal certification authorities (CA), der siger god for
det, også være registreret.
Hvis kode afvikles i .NET skal CA være registreret i Trusted Root Certification Authorities (Current User eller Local Computer afhængigt af den context programmet kører i):
Hvis kode afvikles i Java skal CA være registreret i \lib\security\cacerts som er en
underfolder til dit Java Runtime Environment. Du kan se indholdet og vedligeholde
certifikater i dette med keytool:
..\jdk1.8.0_261\jre\lib\security>keytool -list -keystore cacerts
Eller alternativt kan du tilføje manglende CA til et Trust Keystore som du henviser til fra
koden, som i eksempelkoden til webservices og Beskedfordeler.
Hvis dit Trust Store er af nyere dato, da indeholder det sandsynligvis allerede de nødvendige Root og Intermediate certifikater som indgår i Certification Chain for de certifikater der anvendes. Så det er ikke altid nødvendigt at tilføje CA til Trust Store. Det kan være nødvendigt hvis der anvendes self-signed certifikater, eller hvis Trust Store ikke er af nyere dato på den maskine koden afvikles fra.
Selve signing og HTTPS certifikater skal ikke tilføjes Trust Store! Disse returneres af endpoint du kalder. Det er blot deres CA der kan mangle.
https://digitaliseringskataloget.dk/tekniske_betingelser/adgangsstyring/adgangsstyring_for_systemer/certifikater
-
Side 12 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Hvis et CA i certification path ikke er registreret på maskinen (Windows) vil det være
markeret med et udråbstegn udfor pågældende certifikat under Certification Path. Følgende
er et konstrueret eksempel der viser, hvordan du identificerer problemet og fikser det.
Filen ”Serviceplatformen Signing certifikat ExtTest (SPCER) - udløb maj 2022.txt” inkluderer to CA. Du kan se tre certifikater hvis du åbner filen i en teksteditor.
Hvis du gemmer de tre certifikater i hver sin .cer fil, aktiverer dem én efter én for at se
detaljer, kopierer navnet fra ”Subject, Common Name (CN)” og omdøber filen efterfølgende,
da får du følgende tre certifikater som du kan importere individuelt:
• kombit-sp-signing-test (funktionscertifikat).cer • TRUST2408 Systemtest VII Primary CA.cer • TRUST2408 Systemtest XXII CA.cer
Hvis et CA mangler i certification path er det markeret med et gult udråbstegn.
Vi skal da importere det manglende CA under Trusted Root Certification Authorities:
-
Side 13 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Det manglende CA er nu registreret og vi kan se at certification path er validt:
I et Java-miljø skal manglende CA importeres i det generelle eller lokale Trust store.
Følgende eksempel viser proceduren for tilføjelse af CA til det lokale Trust store. Vælg
import fra Tools menu og importér de to CA certifikater du gemte i separate filer.
-
Side 14 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Her eksempel hvor vi har importeret de to CA tilhørende certification path for certifikat der
benyttes til signering af beskeder i exttest:
Ikke alle certifikater er chained, dvs. også indeholder de tilhørende CA. I følgende tilfælde fordi de to CA allerede er på listen af Trusted root certificates i Windows.
-
Side 15 af 15
KOM GODT I GANG Certifikater
KOMBIT A/S, Halfdansgade 8, 2300 København S, CVR-nr. 19 43 50 75
Hvis disse CA mangler i dit Java Trust store, da kan du eksportere de to CA og efterfølgende
importere dem i dit Java keystore. Du kan åbne CA fra certification path og derfra
eksportere det, som illustreret tidligere i dokumentet.
Her er de to CA tilhørende HTTPS-certifikatet for serviceplatformen eksporteret fra
Windows Certificate Store og importeret i lokalt Java keystore:
1. Introduktion2. Offentlig vs. privat version3. Funktionscertifikater4. Bestilling hos Nets5. Registrering i Fælleskommunalt Administrationsmodul (ADM)6. Windows Certificate Store7. Java Keystore8. Certification Authorities