Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1.1.2

2016-01-01

Initielt Dokument

Arosii

1.1.32019-08-19Tilføjet oprydningsjob til scheduleKvalitetsIT

Indledning

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.

...

CRA logger til filen cra.log

Oprydning

Der ryddes ud løbende i historikken af revokerede certifikater, som findes i en given spærreliste, og hvis de ikke længere fremgår, så fjernes de.

Oprydning kan aktiveres vha. af værdien cleanActivated på certificateRevocationAuthority (Se schedule.xml)

Der er oprettet 4 forskellige oprydninger, som kan aktiveres og vil blive udført, hvis cleanActivated er aktiveret:

  • cleanIfRootExpiredActivated
    Hvis et rodcertifikatet fra certificateRevocationSources (Se bootstap.xml) er udløbet, så findes id fra crl tabellen vha. certifikatets url (Se Endpoints), og bruges til at slette rækker fra revoked vha. crlid (Se Revokeringer).
    Hvis der er et tilhørende intermediatecertifikat, så slettes det også på samme måde, som for rodcertifikatet.
  • cleanIfIntermediateExpiredActivated
    Hvis ikke rodcertifikatet er udløbet, så checkes det om intermediatecertifikat er udløbet. Hvis det er udløbet, så slettes det på samme måde, som beskrevet for rodcertifikat.
  • cleanIfGhostUrlActivated
    Hvis ikke rod- eller intermediatecertifikatet er expired. Så finder vi alle aktive url'er (både for rod- og intermediatecertifikater) fra certificateRevocationSources (Se Endpoints). Oplysninger tilknyttet certifikater som findes i cachen, men som ikke er aktive, slettes fra crl og revoked tabellen.
  • cleanIfGhostSerialNumberActivated
    Hvis ikke rod- eller intermediatecertifikatet er expired. Hvis listen af revoked serialnumber (Se Revokeringer) indeholder værdier, der ikke kan findes i  den aktive liste af serialnumbers, så slettes de fra databasen.

Installation

Kompilering

CRA leveres gennem NSP’s SVN systemet:

...

Inden CRA kan deployes skal konfigurationsfilerne opdateres til at afspejle den del af certifikatinfrastrukturen man ønsker af monitorer.

schedule.xml

Opdateringsintervallet Opdaterings- og oprydningsintervallet for CRA defineres i filen schedule.xml.

I leverancen er værdien for opdatering sat til 1800000 millisekunder, hvilket er 30 min. Hvis en anden værdi ønskes så er det attributten fixed-delay der skal opdateres.

I leverancen er værdien for oprydning sat til at starte 600000 (10 minutter) millisekunder efter applikationen er startet og derefter scheduleres oprydningen til 86400000 millisekunder (24 timer).


Code Block
languagexml
    <task:scheduled-tasks scheduler="scheduler">
        <task:scheduled ref="certificateRevocationAuthority" method="update" fixed-delay="1800000"/>
    </task:scheduled-tasks>

    <task:scheduled-tasks>
    	<task:scheduled ref="certificateRevocationAuthority" method="cleanup" initial-delay="600000" fixed-delay="86400000"/>
    </task:scheduled-tasks>

    <task:scheduler id="scheduler" pool-size="1"/>

...

Seal føderationen skal konfigureres alt efter om der er tale om et test eller et produktionsmiljø. Attributten class på federation elementet skal have værdien dk.sosi.seal.pki.SOSITestFederation i et testmiljæ testmiljøcertificateRevocationAuthority og dk.sosi.seal.pki.SOSIFederation i et produktionsmiljø. Ydermere skal propertien sosi:issuer have en passende værdi alt efter miljø.

...

Code Block
languagexml
	<bean id="certificateRevocationStoreDatabase" class="dk.nsi.nsp.cra.db.DBCertificateRevocationStoreImpl" init-method="init">
        <constructor-arg ref="cra.db"/>
        <property name="rewriteBatchedStatements" value="true"/>
    </bean>

Opsætning af certificateRevocationAuthority til brug ifm. schedulering af opdatering og oprydning skal også være heri.

Code Block
languagexml
	<bean id="certificateRevocationAuthority" class="dk.nsi.nsp.cra.CertificateRevocationAuthorityImpl">
        <constructor-arg ref="certificateRevocationStoreDatabase"/>
        <constructor-arg ref="certificateRevocationSources"/>
        <constructor-arg ref="status"/>
        <constructor-arg ref="federation"/>
        <property name="revocationBatchSize" value="20000"/>
        <!--  Activate cleanup functionality -->
        <property name="cleanActivated" value="true" />
        <property name="cleanIfRootExpiredActivated" value="true" />
        <property name="cleanIfIntermediateExpiredActivated" value="true" />
        <property name="cleanIfGhostUrlActivated" value="true" />
        <property name="cleanIfGhostSerialNumberActivated" value="true" />
    </bean>

bootstrap.xml

Heri defineres de CRS’er der skal bruges til at bootstrappe CRA. For hver CRS der defineres vil CRA læse den konfigurerede CRL samt alle CRL’er fra certifikaterne i certifikatkæden. Der er to måder at konfigurere en CRS. Enten vd at angive et slutbruger certifikat eller ved direkte at angive en url til en CRL og dens tilhørende certifikat.

...

CRA har et relativt simpelt databaselayout bestående af to tabeller. En tabel med CRL endpoints og en tabel med revokerede 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 enpoint findes i crl og dets serienummer findes i revoked eller der findes en række med serienummeret NULL.