Indhold

Introduktion

Certificate Revocation Authority (CRA) er et tool til NSP platformen der er ansvarlig for at opretholde en database med informationer om de certifikater der er trukket tilbage af udstederen. Databasen skal replikeres til alle NSP miljøer således at data er tilgængelig for SecurityValve og SecurityHandler. CRA er udviklet som en J2EE web applikation og anvender Spring til konfiguration og skedulering. Konfigurationsfilerne er specifikke for JBoss8/Wildfly som skal anvendes. Servicen kan også hente Intermediate CA certifikater, som kan anvendes af SEAL istedet for online adgang til disse.

Begreber

  • Certificate Authority (CA)
    En udsteder af X.509 certifikater. Nets og TDC er eksempler på CA’er. En CA har et enkelt rod CA certifikat og muligvis flere intermediate CA certificater som bruges til at udstede slutbruger-certifikater.
  • Certificate Revocation
    Tilbagekaldelse af et certifikat. Hvis et certifikat bliver kompromiteret kan det stadig anvendes på grund af den struktur som X.509 certifikater har. En CA vælger derfor at tilbagekalde et certifikat hvis det er nødvendigt.
  • Certificate Revocation List (CRL)
    En liste af tilbagekaldte certifikater. Listen vedligeholdes og offentliggøres af en CA. Det er op til CA’en hvor mange forskellige CRL’er der indgår i infrastrukturen. Et certifikat udsted af en OCES CA, indeholder en URL til den CRL som certifikatet vil optræde på hvis det tilbagekaldes.
  • Certificate Revocation Source (CRS)
    Boostrapping af CRA sker ved at angive et antal CRS’er, der til sammen indeholder alle de CRL’er der ønskes monitoreret i infrastrukturen. En CRS indeholder en eller to URL’er til CRL’er (en hvis der er tale om et OCES1 certifikat og 2 hvis det er et OCES2 certifikat) samt den certifikatkæde der knytter CRL’erne til NSP/OCES

Algoritme

For hver CRS som CRA er konfigureret med, hentes der en eller to CRL’er som gemmes i databasen. CRA verificerer først at CRS’en indeholder en valid OCES certifikatkæde og tjekker derefter om der er ændringer til CRL’erne. CRL’erne downloades, deres signatur verificeres og de tilbagekaldte serienumre gemmes i databasen. Hvis et af CA certifikaterne tilbagekaldes vil dette blive markeret i databasen således at alle certifikater, der peger på den tilhørende CRL, tilbagekaldes. Intermediate CA certifikaterne hentes fra listen af konfiguerede en ad gangen. Kan et ikke skaffes stopper indlæsningen ved denne og de efterfølgende forsøges ikke hentet.

Databasen

CRA har et relativt simpelt databaselayout bestående af tre tabeller. En tabel med CRL endpoints, en tabel med revokerede certifikater og en tabel med Intermediate CA certifikater.

Endpoints

Tabellen crl har følgende felter:

  • id
    Teknisk identifikation af rækken - Allokeres automatisk af MySQL.
  • url
    Det endpoint hvor en CRL hentes fra.
  • lastmodified
    Opdateres med et nyt timestamp hver gang CRL’en downloades fra endpointet.
  • nextupdate
    Det tidspunkt (timestamp) den sidst hentede version af CRL’en er gyldig til.

Revokeringer

Tabellen revoked har følgende felter:

  • id
    Teknisk identifikation af rækken - Allokeres automatisk af MySQL.
  • crlid
    Teknisk identifikation af den række fra tabellen crl som denne revokering kommer fra.
  • serialnumber
    Serienummerer på det certifikat der er trukket tilbage.
  • added
    Det tidspunkt (timestamp) rækken blev tilføjet til tabellen.
  • since
    Det tidspunkt (timestamp) revokeringen trådte i kraft.

Hvis en CRL er udstedt af en CA og denne CA trækkes tilbage, så vil alle dens rækker i revoked blive slettet og en enkelt række med NULL i serialnumber vil blive oprettet. Et certifikat skal derfor betragtes som trukket tilbage hvis dets CRL endpoint findes i crl og dets serienummer findes i revoked eller der findes en række med serienummeret NULL.


CA certifikater

Tabellen caintermediate har følgende felter:

  • id
    Teknisk identifikation af rækken - Allokeres automatisk af MySQL.
  • url
    Det endpoint hvor et certifikat hentes fra.
  • certificate
    Det hentede certifikat, base64 encoded

  • lastmodified
    Det tidspunkt recorden er sat ind i databasen


  • No labels