Gå till slutet av bannern
Gå till början av bannern

3.1.1.2 - Spärrkontroller

Hoppa till slutet på meta-data
Gå till början av metadata

Du visar en gammal version av den här sidan. Visa nuvarande version.

Jämför med nuvarande Visa sidhistorik

« Föregående Version 11 Nästa »

Spärrkontroller i Common

Spärrkontrollen i korthet

Spärrkontrollen i Common använder sig av både CRL:er (Certificate Revocation List) och OCSP (Online Certificate Status Protocol) för att avgöra om ett certifikat ska förklaras som giltigt. Protokollen används i samspel med varandra för att ge ett stabilt system för spärrkontroller. För att avgöra statusen på ett certifikat används antingen CRL eller OCSP som primär källa, det andra protokollet används som fallback och påkallas ifall den primära källan inte ger ett tillförlitligt svar. Det protokoll som används vid fallback bestäms av den specifika applikationens konfiguration. Om varken CRL eller OCSP kan ge ett tillförlitligt svar på revokeringsstatus blir resultatet en UNDETERMINED_REVOCATION_STATUS.

Spärrkontroller med OCSP

Spärrkontroller med OCSP görs i första hand med direktuppslag mot OCSP-respondern. Informationen kring vilken responder det är som ska anropas hämtas direkt från certifikatet som behöver kontrolleras för dess giltighet. Om direktuppslaget går bra lagras revokeringsstatusen för certifikatet i Redis-cachen. Skulle direktuppslaget mot OCSP-respondern inte lyckas konsulteras istället Redis-cachen ifall det finns en användbar revokeringsstatus för det aktuella certifikatet.

När giltigheten för ett certifikat ska kontrolleras hämtas alltså OCSP-data via direktuppslag och från cachen vid behov och matas sedan in i en instans av CertPathValidator varifrån det sedan matas ut en revokeringsstatus.

I fallen då ingen revokeringsstatus kan erhållas med hjälp av OCSP går applikationen över till CRL för att försöka få en revokeringsstatus därigenom.

Spärrkontroller med CRL

Spärrkontroller med CRL görs enbart med uppslag mot en Redis-cache där spärrlistorna lagras. Cachen fylls i sin tur på av ett jobb som med ett konfigurerat intervall hämtar listorna som innehåller informationen över vilka certifikat som är spärrade. Vilka listor det är som ska hämtas av jobbet avgörs av utfärdarna som är inlästa i den aktuella applikationen och av en samling URL:er som är konfigurerade för att också hämtas.

När giltigheten för ett certifikat ska kontrolleras konsulteras cachen för matchande X509CRL-objekt från de tidigare hämtade spärrlistorna och matas sedan in i en instans av CertPathValidator varifrån det sedan matas ut en revokeringsstatus.

I fallen då ingen revokeringsstatus kan erhållas med hjälp av CRL:er går applikationen över till OCSP för att försöka få en revokeringsstatus därigenom.

Fallback-mekanismer

Logiken för spärrkontroller är utformad för att kunna hantera en mängd onormala scenarion så som driftstörningar, tömda Redis-cachear, mm. för att i nästan alla lägen kunna ge en revokeringsstatus. Ett exempel på hur ett sådant flöde skulle kunna se ut är som följer:

  1. Certifikatets giltighet ska kontrolleras mot OCSP-respondern. OCSP-respondern kan inte ge ett svar på grund av driftstörningar.
  2. OCSP-cachen konsulteras men här finns ingen matchande revokeringsstatus för det aktuella certifikatet.
  3. Under tiden har CRL-jobbet försökt att hämta nya spärrlistor men misslyckats på grund av driftstörningar.
  4. Fallbacken mot CRL aktiveras och CRL-cachen konsulteras. Cachen hittar en matchande spärrlista och kan därigenom avgöra revokeringsstatusen för certifikatet. 

Konfiguration av Spärrkontrollen

EgenskapDefaultvärdeExempelvärdeFörklaring

inera.common.trust.do-revocation-check

truetrue

Avgör ifall spärrkontroller ska genomföras.

inera.common.trust.no-fallback

ej definierat, resulterar i falsefalseAvgör om fallback-tekniken ska användas när revokeringsstatus inte kan avgöras med hjälp av den primära källan. Exempelvis ifall ingen revokeringsstatus kunde avgöras med hjälp av OCSP ifall applikationen ska falla tillbaka till CRL:erna eller vice versa.
inera.common.trust.only-end-entityej definierat, resulterar i falsetrueAvgör ifall enbart "sista" certifikatet (ex. slutanvändarcertifikatet) i certifikatskedjan ska genomgå spärrkontrollen.
inera.common.trust.prefer-crlsej definierat, resulterar i falsefalseAvgör ifall CRL ska användas som primär källa för revokeringsstatus.
inera.common.trust.soft-failej definierat, resulterar i falsefalseAvgör ifall revokeringskontrollen kan anses som lyckad ifall revokeringsstatusen inte kan avgöras p.g.a. exempelvis nätverksfel. När flaggan är satt till false kan revokeringsstatusen resultera i UNDETERMINED_REVOCATION_STATUS.
inera.common.trust.allow-undeterminedej definierat, resulterar i falsefalseAvgör ifall ett certifikat som fått revokeringsstatusen UNDETERMINED_REVOCATION_STATUS ska anses som giltigt eller inte. Har endast effekt ifall inera.common.trust.soft-fail är satt till false.
inera.common.trust.max-path-length1010Max antalet certifikat som får finnas i en certifikatskedja
inera.common.trust.use-only-cached-revocation-dataej definierat, resulterar i falsefalseAvgör ifall revokeringskontrollen ska genomföras ifall ingen revokeringsstatus finns tillgängligt för certifikatet.
inera.common.trust.dynamically-sort-fallback-orderej definierat, resulterar i falsefalseAvgör ifall prioritetsordningen på cachead revokeringsstatus ska sorteras dynamiskt. Förutsätter att inera.common.trust.no-fallback är satt till false.
inera.common.trust.verifier.enable-explicit-ocsp-lookuptruetrueAvgör ifall OCSP data ska hämtas i förväg och komplettera befintlig data innan revokeringskontrollen ska genomföras
inera.common.revocation-check-executor.only-end-entityfalsefalseAvgör ifall enbart slutanvändarcertifikatet ska kontrolleras i RevocationCheckExecutor-klassen.
inera.common.ocsp-data-service.enable-cachefalsetrueAvgör ifall revokeringsdata ska sparas till cachen och hämtas från cachen ifall direktuppslag mot OCSP-respondern misslyckas.

inera.common.crl-data-service.max-age-seconds

null259200Anges i sekunder. Avgör maximala livslängden på cachen för CRL:er innan dom anses för gamla.
inera.common.crl-data-service.use-old-crlsfalsefalseAvgör ifall utgångna CRL:er ska användas för spärrkontroll. Utgångstiden styrs av inera.common.crl-data-service.max-age-seconds

inera.common.crl-data-service.local-cache-ttl-seconds

18001800Anges i sekunder. Avgör hur länge minnescachen är giltig innan minnescachen behöver uppdateras med uppgifter från Redis-cachen. Prestandahöjande funktion som används för att minska antalet slagningar mot Redis-cachen.
inera.common.crl-data-job.fixed-rate-millisej definierat1800000Anges i millisekunder. Avgör frekvensen med hur ofta CRL-jobbet ska köras.
inera.common.crl-data-job.end-entity-crl-urlsej definierat, resulterar i tom lista

http://crl1pp.siths.se/testsithseidpersonhsaid3cav1.crl, \
http://crl1pp.siths.se/testsithseidpersonid3cav1.crl,

Anges som kommaseparerad lista. Avgör vilka extra CRL:er som ska hämtas utöver de CRL:er som återfinns i applikationens inlästa certifikatsutfärdare.
  • Inga etiketter