PROBLEMA: X509Certificate oferece suporte ao codificado somente DER certificados

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 318217
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Este artigo se refere à seguintes Microsoft .NET Framework Class Library namespaces:
  • System.IO
  • System.Security.Cryptography.X509Certificates
  • System.Text
Sintomas
Quando você usa a classe System.Security.Cryptography.X509Certificates.X509Certificate , você receberá a seguinte mensagem de erro:
Dados de entrada não podem ser codificados como um certificado válido.
Esse problema ocorre se uma das seguintes condições for verdadeira:
  • Você usa o construtor X509Certificate e passa uma matriz de bytes que são lidos de um arquivo X.509 codificado na Base 64 (.cer) para o construtor X509Certificate . - ou -

  • Você usar o método X509Certificate.CreateFromCertFile e passar no caminho para um X.509 codificado na Base64 (cer) arquivo.
Causa
Esse problema ocorre porque a classe X509Certificate suporta apenas binários certificados X.509 (.cer) que são codificados no distinto codificação regras (DER).
Resolução
Se o certificado é codificado na Base64, execute essas etapas para resolver esse problema:
  1. Remova as seguintes seqüências de dados do certificado:
    -----BEGIN CERTIFICATE----------END CERTIFICATE-----						
  2. Decodificar os dados de certificado Base64. Por exemplo, o seguinte código exemplo Visual translation from VPE for Csharp decodifica dados de certificado Base64:
    using System;using System.IO;using System.Security.Cryptography.X509Certificates;using System.Text;namespace ReadBase64Cert{    public class ReadBase64Cert    {        public ReadBase64Cert()        {        }        public static void Main(string[] args)        {            if (args.Length < 1)            {                Console.WriteLine("Usage: Base64EncodedFile (.cer)\n");                return;            }            // args[0] - Base64Encoded .cer file            // Open the certificate, and read it into a byte array.            FileStream certFile = new FileStream(args[0],                FileMode.Open,                FileAccess.Read);            int size = (int)certFile.Length;            byte[] certBytes = new byte[size];            size = certFile.Read(certBytes, 0, size);            certFile.Close();                // Remove the unnecessary characters.            String certString = Encoding.ASCII.GetString(certBytes);            StringBuilder sb = new StringBuilder(certString);            sb.Replace("-----BEGIN CERTIFICATE-----", "");            sb.Replace("-----END CERTIFICATE-----", "");                // Decode the bytes from base64 to raw bytes.            certBytes = Convert.FromBase64String(sb.ToString());            X509Certificate cert = new X509Certificate(certBytes);            Console.WriteLine(cert.GetName());         }    }}					
Situação
Esse comportamento é por design.
Base 64 base-64

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 318217 - Última Revisão: 10/20/2003 23:54:39 - Revisão: 4.0

Bibliotecas de Classes do Microsoft .NET Framework 1.0, Bibliotecas de Classes do Microsoft .NET Framework 1.1

  • kbmt kbcrypt kbkernbase kbprb kbsecurity KB318217 KbMtpt
Comentários