From a6700142e95b727dc9dca69f9c4e45a1bd276183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20Aas=20Sja=CC=8Afjell?= Date: Wed, 21 Sep 2016 16:31:29 +0200 Subject: [PATCH] =?UTF-8?q?Forbedringer=20etter=20draforesp=C3=B8rsel=20me?= =?UTF-8?q?d=20@froden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fikset navn på metode og renskrev tekstene til å bli litt bedre - Ble usikkerhet på om chain.ChainStatus alltid sier noe om kjeden validerte eller ikke, siden vi ikke bruker det resultatet direkte. Dette er sjekket opp og blir eksplisitt detailedErrorInformation som beskrevet i Microsoft documentation. ™ --- Difi.Felles.Utility/CertificateChainValidator.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Difi.Felles.Utility/CertificateChainValidator.cs b/Difi.Felles.Utility/CertificateChainValidator.cs index d04660f..b721023 100755 --- a/Difi.Felles.Utility/CertificateChainValidator.cs +++ b/Difi.Felles.Utility/CertificateChainValidator.cs @@ -39,7 +39,7 @@ public bool ErGyldigSertifikatkjede(X509Certificate2 sertifikat, out X509ChainSt var chain = ByggSertifikatKjede(sertifikat); kjedestatus = chain.ChainStatus; - ValiderBrukerValidatorSertifikaterEllerKastException(chain,sertifikat); + ValiderAtBrukerKunSertifikatLagerEllerKastException(chain,sertifikat); return ErGyldigSertifikatKjede(chain); } @@ -54,7 +54,7 @@ private X509Chain ByggSertifikatKjede(X509Certificate2 sertifikat) return chain; } - private void ValiderBrukerValidatorSertifikaterEllerKastException(X509Chain chain, X509Certificate2 sertifikat) + private void ValiderAtBrukerKunSertifikatLagerEllerKastException(X509Chain chain, X509Certificate2 sertifikat) { foreach (var chainElement in chain.ChainElements) { @@ -69,8 +69,8 @@ private void ValiderBrukerValidatorSertifikaterEllerKastException(X509Chain chai throw new CertificateChainValidationException($"Validering av sertifikat '{sertifikat.Subject}' (thumbprint '{sertifikat.Thumbprint}') feilet. Dette skjer fordi kjeden ble bygd " + $"med følgende sertifikater {chainAsString}, men kun følgende er godkjent for å bygge kjeden: {lagerAsString}. Dette skjer som oftest " + - $"om sertifikater blir hentet fra Certificate Store på Windows, og det tillates ikke under validering. Det er kun gyldig å bygge en " + - $"kjede med input {nameof(SertifikatLager)}."); + "om sertifikater blir hentet fra Certificate Store på Windows, og det tillates ikke under validering. Det er kun gyldig å bygge en " + + "kjede med de sertifikatene sendt inn til validatoren."); } } @@ -100,13 +100,14 @@ private static bool ErGyldigSertifikatKjede(X509Chain chain) { if (!HarForventetLengde(chain, 3)) return false; - switch (chain.ChainStatus.Length) + var detailedErrorInformation = chain.ChainStatus; + switch (detailedErrorInformation.Length) { case 0: return true; case 1: - var erUntrustedStatus = chain.ChainStatus.ElementAt(0).Status == X509ChainStatusFlags.UntrustedRoot; - return erUntrustedStatus; + var erUntrustedRootStatus = detailedErrorInformation.ElementAt(0).Status == X509ChainStatusFlags.UntrustedRoot; + return erUntrustedRootStatus; default: return false; }