Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Från och med .NET 10 kan X500DistinguishedName konstruktorn som accepterar ett strängkodat unikt namn avvisa tidigare accepterade ogiltiga indata eller koda dem på ett annat sätt i system som inte är Windows. Detta överensstämmer med kodningsspecifikationer och Windows-beteende.
Tidigare beteende
Tidigare versioner av .NET på icke-Windows-system tillät felaktiga unika namn eller kodade dem på ett sätt som inte tillåts av X.520-kodningsregler. Flaggan X500DistinguishedNameFlags.ForceUTF8Encoding tvingade komponenter att använda en UTF8String även om det inte var en giltig representation.
Nytt beteende
Från och med .NET 10 utlöser komponenter som bryter mot kodningsregler en CryptographicException på icke-Windows-system som matchar Windows-beteendet. Flaggan X500DistinguishedNameFlags.ForceUTF8Encoding UTF-8-kodar endast komponenter när det är tillåtet.
Version introducerad
.NET 10
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändring
Olika X.500-komponenter har specifika kodningsregler. Till exempel måste id-at-telephoneNumber kodas som en ASN.1-PrintableString. Utropstecknet är ogiltigt för en PrintableString. Överväg följande kod:
new X500DistinguishedName("Phone=!!");
Den här koden utlöste ett undantag i Windows men kodades som en UTF8String på icke-Windows. På samma sätt använde X500DistinguishedNameFlags.ForceUTF8Encoding tvungen UTF8String-kodning även när det inte var tillåtet:
new X500DistinguishedName("Phone=000-555-1234", X500DistinguishedNameFlags.ForceUTF8Encoding);
Den här ändringen säkerställer att kodningen överensstämmer med specifikationer och Windows-beteende.
Rekommenderad åtgärd
I allmänhet krävs ingen åtgärd om inte kompatibilitet med felaktig kodning krävs. Använd System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder för att skapa instanser med önskad kodning:
using System.Formats.Asn1;
using System.Security.Cryptography.X509Certificates;
X500DistinguishedNameBuilder builder = new();
builder.Add("2.5.4.20", "000-555-1234", UniversalTagNumber.UTF8String);
X500DistinguishedName dn = builder.Build();