Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir do .NET 10, o construtor X500DistinguishedName que aceita um nome diferenciado codificado em cadeia de caracteres pode rejeitar a entrada inválida aceita anteriormente ou codificá-la de forma diferente em sistemas não Windows. Isso se alinha às especificações de codificação e ao comportamento do Windows.
Comportamento anterior
As versões anteriores do .NET em sistemas não Windows permitiam nomes diferenciados incorretos ou os codificavam de forma não permitida pelas regras de codificação X.520. A bandeira X500DistinguishedNameFlags.ForceUTF8Encoding forçou os componentes a usar um UTF8String, mesmo que não fosse uma representação válida.
Novo comportamento
A partir do .NET 10, componentes que violam regras de codificação lançam um CryptographicException em sistemas que não são do Windows, correspondendo ao comportamento do Windows. O sinalizador X500DistinguishedNameFlags.ForceUTF8Encoding apenas codifica componentes UTF-8 quando permitido.
Versão introduzida
.NET 10
Tipo de alteração interruptiva
Essa alteração é uma mudança comportamental .
Motivo da alteração
Diferentes componentes X.500 têm regras de codificação específicas. Por exemplo, id-at-telephoneNumber deve ser codificado como um PrintableString ASN.1. O caractere de ponto de exclamação é inválido para um PrintableString. Considere o seguinte código:
new X500DistinguishedName("Phone=!!");
Esse código gerou uma exceção no Windows, mas foi codificado como UTF8String em não Windows. De forma semelhante, usar X500DistinguishedNameFlags.ForceUTF8Encoding força a codificação UTF8String mesmo quando não permitido:
new X500DistinguishedName("Phone=000-555-1234", X500DistinguishedNameFlags.ForceUTF8Encoding);
Essa alteração garante que a codificação esteja alinhada com as especificações e o comportamento do Windows.
Ação recomendada
Em geral, nenhuma ação é necessária, a menos que a compatibilidade com a codificação incorreta seja necessária. Use System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder para criar instâncias com codificação desejada:
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();