Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A partir do .NET 10, o construtor X500DistinguishedName que aceita um nome distinto codificado em cadeia de caracteres pode rejeitar entradas inválidas aceitas anteriormente ou codificá-las de forma diferente em sistemas que não sejam Windows. Isso se alinha com as especificações de codificação e o comportamento do Windows.
Comportamento anterior
As versões anteriores do .NET em sistemas que não sejam Windows permitiam nomes distintos incorretos ou os codificavam de uma forma não permitida pelas regras de codificação X.520. O sinalizador X500DistinguishedNameFlags.ForceUTF8Encoding forçava os componentes a usar uma UTF8String mesmo que não fosse uma representação válida.
Novo comportamento
A partir do .NET 10, os componentes que violam as regras de codificação lançam um CryptographicException em sistemas que não são Windows, correspondendo ao comportamento do Windows. O sinalizador X500DistinguishedNameFlags.ForceUTF8Encoding apenas UTF-8 codifica componentes quando permitido.
Versão introduzida
.NET 10
Tipo de mudança de rutura
Esta alteração é uma mudança comportamental .
Motivo da mudança
Diferentes componentes X.500 têm regras de codificação específicas. Por exemplo, id-at-telephoneNumber deve ser codificado como um ASN.1 PrintableString. O caractere de ponto de exclamação é inválido para um PrintableString. Considere o seguinte código:
new X500DistinguishedName("Phone=!!");
Este código lançou uma exceção no Windows, mas foi codificado como uma UTF8String em sistemas não Windows. Da mesma forma, usar a codificação UTF8String forçada X500DistinguishedNameFlags.ForceUTF8Encoding, 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
Geralmente, 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 a 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();