[Eppnicbr] Problema com conexão epp e ssl

Carlos Eduardo Fontes Silva carlos.eduardo at cges.com.br
Fri Apr 11 14:25:14 BRT 2008


Felipe,

 

Como conversamos ontem, é necessário gerar um certificado PKCS12 também. Segue abaixo os comandos para gerar o DER e o P12:

 

DER

openssl x509 -outform der -in root.pem -out root.der

openssl x509 -outform der -in client.pem -out client.der

 

PKCS12

openssl pkcs12 -export -in client.pem -out client.p12

 

No momento que são carregados os certificados, é necessário quer você informe o certificado P12. Ficaria assim:

 

                  X509Certificate2 clientCertificate = new X509Certificate2(currentPath +  "\\certs\\client.p12", "123456");  //Onde 123456 é a senha que informei na hora de gerar o client.p12

                  X509Certificate x509 = X509Certificate.CreateFromCertFile(currentPath + "\\certs\\client.der");

                  X509Certificate x5091 = X509Certificate.CreateFromCertFile(currentPath + "\\certs\\root.der");

 

                  X509CertificateCollection certs = new X509CertificateCollection();

                  certs.Add(clientCertificate);

                  certs.Add(x509);

                  certs.Add(x5091);

 

 

E na linha que está com erro, não é preciso colocar o ":700" no nome do servidor. Veja abaixo:

 

            Em vez de :

sslStream.AuthenticateAsClient("beta.registro.br:700", certs, SslProtocols.Tls, false);      

 

            Alterar para:

                        sslStream.AuthenticateAsClient("beta.registro.br", certs, SslProtocols.Tls, false);      

 

[]'s

 

Carlos Eduardo

________________________________

From: eppnicbr-bounces at eng.registro.br [mailto:eppnicbr-bounces at eng.registro.br] On Behalf Of Felipe Rodrigues Pereira
Sent: quinta-feira, 10 de abril de 2008 11:44
To: eppnicbr at eng.registro.br
Subject: [Eppnicbr] Problema com conexão epp e ssl

 

Pessoa estou com o seguinte problema, estou usando uma classe em c# para comunicação com o servidor epp, 

 

Tentei converter os certificados client.pem e root.pem para client.der e root.der, segundo instruções de uma amigo da lista, 

 

Os certificados ficaram com caracter estranhos fora do padrão que é :

 

---BEGIN CERTIFICATE-----

MIID7DCCAtSgAwIBAgIBBTANBgkqhkiG9w0BAQQFADCBjzELMAkGA1UEBhMCQlIx

wtv0dCpo++UW/HHUqOeHn40AjJKJGo8QS9GHWJEAObwmEcEhAs5x0KNS1YTe3boD

WpB//fY919Iz8F5g4CLsBU/diJ74wrzJ7UhMfGdnMr1hcXQUSG1f+QDUYR1mwCKK

qSUt58JLqH/kFGI+HM0p6SritSMg0RSsaQfTZ0rf9kBmiSymb7M5zJd3eYwyJu3l

-----END CERTIFICATE-----

 

 

Não sei se por isso não estou conseguindo rodar a classe de comunicação a classe é esta:

Se alguem puder me ajudar fico grato! Ou me adicionar no MSN para me dar algumas dicas lipe_hc1 at hotmail.com. Obrigado!

 

 

 

using System;

using System.Collections.Generic;

using System.Text;

using System.Net.Security;

using System.Net.Sockets;

using System.Security.Cryptography;

using System.Security.Cryptography.X509Certificates;

using System.Security.Authentication;

 

class EppSSL

{

    [STAThread]

    static void Main(string[] args)

    {

        EppSSL ssl = new EppSSL();

        ssl.run();

    }

 

    

 

    public void run()

    {

 

 

        TcpClient client = new TcpClient();

        client.Connect("beta.registro.br", 700);

        SslStream sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(CertificateValidationCallback));

 

        X509Certificate x509 = X509Certificate.CreateFromCertFile("C:\\_tecla\\Projetos\\RegistroBrasil\\certificados\\client.der");

        X509Certificate x5091 = X509Certificate.CreateFromCertFile("C:\\_tecla\\Projetos\\RegistroBrasil\\certificados\\root.der");

        X509CertificateCollection certs = new X509CertificateCollection();

 

        certs.Add(x509);

        certs.Add(x5091);

 

<------ O erro ocorre na linha de baixo !!!! ERRO: " Falha a uma chamada a SSPI, consulte a exceção interna." ------->

 

        sslStream.AuthenticateAsClient("beta.registro.br:700", certs, SslProtocols.Tls, false);      

 

      <------ Fim do ERRO ------->

 

 

        byte[] bytes = new byte[1024];

 

        int bytesRead = sslStream.Read(bytes, 0, bytes.Length);

        string serverResponse = Encoding.ASCII.GetString(bytes, 0, bytesRead);

        Console.WriteLine("Server said: " + serverResponse);

        Console.Read();

 

    }

 

    private bool CertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)

    {

        if (sslPolicyErrors == SslPolicyErrors.None)

        {

            return true;

        }

        else

        {

            if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors)

            {

                //Console.WriteLine("The X509Chain.ChainStatus returned an array " + "of X509ChainStatus objects containing error information.");

            }

            else if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateNameMismatch)

            {

                // Console.WriteLine("There was a mismatch of the name " + "on a certificate.");

            }

            else if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateNotAvailable)

            {

                //Console.WriteLine("No certificate was available.");

            }

            else

            {

                // Console.WriteLine("SSL Certificate Validation Error!");

            }

        }

 

        //  Console.WriteLine(Environment.NewLine + "SSL Certificate Validation Error!");

        //  Console.WriteLine(sslPolicyErrors.ToString());

 

        return false;

    }

 

}

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

 

    {

            

        EppSSL epp = new EppSSL();

        epp.run();

    }

}

 

Atenciosamente,

Felipe Rodrigues Pereira
Sistemas

 

-------------------------------------------------------------------------------------

Tel.: (11) 3524-4339
www.tecla.com.br <http://www.tecla.com.br> 

Serviços de Internet 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://eng.registro.br/pipermail/eppnicbr/attachments/20080411/e8cc7735/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 1673 bytes
Desc: image001.gif
URL: <http://eng.registro.br/pipermail/eppnicbr/attachments/20080411/e8cc7735/attachment.gif>


More information about the eppnicbr mailing list