[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