Qual é a diferença entre os dois?
93
O x509Certificate foi introduzido no .NET v1.0 / 1.1 e era (comparativamente) limitado em sua funcionalidade. Ele pode ser usado para obter informações sobre um certificado existente (datas de validade, emissor, etc.). Ele tinha métodos / operações simples (ou seja, ler um certificado do disco).
O x509Certificate2 é uma subclasse de x509Certificate com funcionalidade adicional.
X509Certificate2
também tem um membro para a chave privada, que não faz parte do próprio certificado, mas é conveniente ter associado à classe que representa o certificado X.509.Para completar, aqui está uma cópia da seção relevante do site com link na resposta de @dommer, já que o site pode não estar mais ativo e apenas no cache do Google por sabe-se lá quanto tempo:
fonte
Para converter um certificado X.509 de "X509Certificate" para "X509Certificate2", tente algo assim:
fonte
Para aqueles que gostariam de ler o certificado e usá-lo para autenticar, basta criar um X509Certificate2 e passar o X509Certificate em seu construtor.
Para um assembly assinado (o exe), o código seria um código como este, e omito a validação de erro para simplificar.
Obviamente, sua classe não é chamada de MyClass, mas algum objeto de negócios que você esperaria de um serviço da web.
Você pode enviar uma aula para sua ação enviando a propriedade e o valor que você deseja preenchido. Agora você pode garantir que a solicitação recebida é de um cliente móvel ou Windows válido lendo o certificado de solicitação da seguinte forma:
}
O que resta é configurar seu servidor web para aceitar certificados de cliente ... Você pode ler tudo sobre as propriedades que vêm do novo formato e você protegeu seu serviço público da web, algo que a maioria não consegue fazer porque apenas ser autorizado não é bom o suficiente mais (se alguma vez foi)
fonte