Versions Compared

Key

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

Table of Contents

Ændringslog

1.1.2

2016-01-01

Initielt Dokument

Arosii

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.

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

...

CRA leveres gennem NSP’s SVN systemet:

Code Block
svn co https://svn.nspop.dk/svn/nsp/tags/tools/cra/release-x.y.z cra

Efter checkout skal projektet bygges med Maven således:

Code Block
mvn install

Følgende filer udgør nu leverancen og skal anvendes i resten af installationsvejledningen:

Code Block
cra/target/cra-x.y.z.war
cra/etc/cra/bootstrap.xml
cra/etc/cra/config.xml
cra/etc/cra/schedule.xml
cra/etc/cra/seal.xml
cra/etc/cra/services.xml
cra/etc/cra-ds.xml
cra/etc/drop-create-db.sql
cra/etc/log4j-cra.xml
cra/etc/log4j-nspslalog-cra.properties
cra/etc/nspslalog-cra.properties

Konfiguration

Inden CRA kan deployes skal konfigurationsfilerne kopieres over i biblioteket /pack/jboss8/standalone/configuration. Følgende filer skal herefter findes:

Code Block
/pack/jboss8/standalone/configuration/cra/bootstrap.xml
/pack/jboss8/standalone/configuration/cra/config.xml
/pack/jboss8/standalone/configuration/cra/schedule.xml
/pack/jboss8/standalone/configuration/cra/seal.xml
/pack/jboss8/standalone/configuration/cra/services.xml
/pack/jboss8/standalone/configuration/log4j-cra.xml
/pack/jboss8/standalone/configuration/log4j-nspslalog-cra.properties
/pack/jboss8/standalone/configuration/nspslalog-cra.properties

XML filen /pack/jboss8/standalone/configuration/cra/bootstrap.xml indeholder et eksempel på en opsætning af et antal CRS’er. Dette eksempel skal slettes og korrekte CRS’er skal konfigureres inden selve applikationen deployes. En detaljeret gennemgang af filerne og opsætningen heri kan findes i afsnittet Opsætning.

...

Inden CRA kan deployes skal databasen og datasourcen sættes op. Filen drop-create-db.sql anvendes til at oprette databasen. Vær opmærksom på at filen erstatter en allerede eksisterende database med navnet cra. Filen cra-ds.xml skal placeres i /pack/jboss8/standalone/deployments/. Begge filer indeholder et simpelt brugernavn og kodeord for databasebrugeren og skal derfor rettes inden de anvendes i et produktionsmiljø. Vær også opmærksom på at værdien af connection property rewriteBatchedStatements skal passe med den tilsvarende i services.xml som beskrevet nedenfor

Deployment

Når alle konfigurationsfilerne er placeret korrekt og databasen er sat op kan filen cra-x.y.z.war kopieres over i /pack/jboss8/standalone/deployments/. Konfigurationsfilen bootstrap.xml skal opdateres inden CRA deployes.

...

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

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

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

Vær opmærksom på at værdien af denne attribut har konsekvenser for værdien af konfigurationsparameteren ttl i SecurityValve og SecurityHandler. Se dokumentationen til disse tools for en udregning.

...

Heri skal propertien rewriteBatchedStatements have samme værdi som den har i cra-ds.xml

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>

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.

Keystore CRS

Code Block
languagexml
   

...

<bean id="testCertificateRevocationSource" class="dk.nsi.nsp.cra.bootstrap.KeyStoreCertificateRevocationSource">
        <constructor-arg>
            <bean id="testKeystore" class="java.io.File">
                <constructor-arg value="/pack/cra/cra-test.keystore" type="java.lang.String" />
            </bean>
        </constructor-arg>
        <constructor-arg value="!234Qwer" type="java.lang.String" />
        <constructor-arg value="SOSI:ALIAS_SYSTEM" type="java.lang.String" />
        <constructor-arg ref="certificateResolver"/>
    </bean>

Måden en KeyStoreCertificateRevocationSource konstrueres på, er ved at tage den offentlige del af et certifikat og gemme det i en Java Keystore fil. Filen, aliaset og kodeordet til filen (Ikke til den private nøgle) konfigureres derefter som de tre første constructor-arg's til en KeyStoreCertificateRevocationSource. Det sidste argument skal altid være certificateResolver

...

Java Keystore filer laves med programmet keytool der følger med Java. Der henvises til Java dokumentation for eksempler på hvordan man importerer et certifikat.

Remote CRS

Code Block
languagexml
    <bean id="systemtest10CertificateRevocationSource" class="dk.nsi.nsp.cra.bootstrap.RemoteCertificateRevocationSource">
        <constructor-arg value="http://m.aia.systemtest10.trust2408.com/systemtest10-ca.cer" type="java.lang.String" />
        <constructor-arg value="http://crl.systemtest10.trust2408.com/systemtest10.crl" type="java.lang.String" />
        <constructor-arg ref="certificateStore"/>
        <constructor-arg ref="certificateResolver"/>
    </bean>

Hvis man ikke har et certifikat udstedt af den CA man ønsker at tilføje kan en RemoteCertificateRevocationSource konstrueres ved at angive URL’en til CA certificatet og URL’en til den CRL der er signeret af CA’en som de to første constructor-arg's. De to sidste argumenter skal altid være certificateStore og certificateResolver

...