Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab .NET 10 kann der X500DistinguishedName-Konstruktor, der einen als Zeichenfolge codierten Distinguished Name akzeptiert, zuvor akzeptierte ungültige Eingaben ablehnen oder unter Nicht-Windows-Systemen anders codieren. Dies entspricht den Codierungsspezifikationen und dem Windows-Verhalten.
Vorheriges Verhalten
Frühere Versionen von .NET auf Nicht-Windows-Systemen erlaubten falsche distinguished Names oder codierte sie auf eine Weise, die von X.520-Codierungsregeln nicht zulässig ist. Das X500DistinguishedNameFlags.ForceUTF8Encoding-Flag erzwang, dass Komponenten eine UTF8-Zeichenfolge verwendeten, selbst wenn dies keine gültige Darstellung war.
Neues Verhalten
Ab .NET 10 lösen Komponenten, die gegen Codierungsregeln verstoßen, eine CryptographicException auf Nicht-Windows-Systemen aus und entsprechen dem Windows-Verhalten. Die X500DistinguishedNameFlags.ForceUTF8Encoding-Flags codieren Komponenten nur mit UTF-8, wenn möglich.
Eingeführt in Version
.NET 10
Typ des Breaking Changes
Diese Änderung ist eine Verhaltensänderung.
Grund für Änderung
Verschiedene X.500-Komponenten weisen spezifische Codierungsregeln auf. Beispielsweise muss id-at-telephoneNumber als ASN.1-PrintableStringcodiert werden. Das Ausrufezeichen ist für einen druckbaren Zeichenstring ungültig. Beachten Sie den folgenden Code:
new X500DistinguishedName("Phone=!!");
Dieser Code hat eine Ausnahme unter Windows ausgelöst, wurde jedoch als UTF8String unter Nicht-Windows codiert. Ebenso erzwang die Verwendung von X500DistinguishedNameFlags.ForceUTF8Encoding die UTF8String-Codierung, auch wenn diese nicht zulässig war:
new X500DistinguishedName("Phone=000-555-1234", X500DistinguishedNameFlags.ForceUTF8Encoding);
Diese Änderung stellt sicher, dass die Codierung an Spezifikationen und Windows-Verhalten ausgerichtet ist.
Empfohlene Aktion
Im Allgemeinen ist keine Aktion erforderlich, es sei denn, die Kompatibilität mit der falschen Codierung ist erforderlich. Verwenden Sie System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder, um Instanzen mit der gewünschten Codierung zu erstellen:
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();