SSL és tanusítványok használata C# .NET-ben

SSL és tanusítványok használata C# .NET-ben
2008-07-01T21:08:46+02:00
2008-07-09T23:43:49+02:00
2022-11-10T05:30:42+01:00
MrWhite
Hi!

C# és .NET-et használva akartam két olyan programot írni ami SSL-t használ a kommunikációra TCP kapcsolaton. A két program közül az egyik szerver, a másik az ehhez kapcsolódó kliens.
A szerverrel támadt gondom:
X509Certificate serverCertificate = X509Certificate.CreateFromCertFile(@"d:\cert\server\ser.crt"); TcpListener listener = new TcpListener(IPAddress.Any, 51423); listener.Start(); while (true) { TcpClient client = listener.AcceptTcpClient(); SslStream sslStream = new SslStream( client.GetStream(), false); // Authenticate the server but don't require the client to authenticate. try { sslStream.AuthenticateAsServer(serverCertificate, false, SslProtocols.Tls, true); }
Mikor a kliens csatlakozni akar a saját sslStream.AuthenticateAsClient(serverName); parancsával, a szerver a következő hibaüzenetet dobja:
A kiszolgálói módú SSL működéséhez a társított személyes kulcsot tartalmazó tanúsítvány használata szükséges.

A .crt fájlt OpenSSL-el készítettem (a Windows-os openssl konzolos programmal)
Találtam egy leírást amiben benne volt hogyan kell CA tanusítványt készíteni (saját magát aláíró tanusítvány)
Ezzel a Root tanusítvánnyal készítettem a szerver tanusítványt.
A hibaüzenetből arra következtettem, hogy valahogy össze kellene fűzni a szerver tanusítványát (ami elvileg publikus) a privát kulccsal.
Gondolom ezzel a kompakt kulccsal akar titkosítani a .net
A kérdésem a következő:
Hogy lehet úgy összefűzni a tanusítványt és a privát kulcsot, hogy a AuthenticateAsServer() függvény használni tudja...
Ha kellene a tanusítvány vagy kulcs elküldöm e-mailban vagy felmásolom a fórumra. Engem csak a módszer érdekelne. (Utánna csinálok másik kulcsot, úgyhogy ezt kiadhatom )
Mutasd a teljes hozzászólást!
Szia!

Nem tudom mennyire fontos tényező de ajánlom a WCF használatát 3.5ös frameworkkel (talán 3.0ban is már van, nem rémlik).

WCF

A WCF egységesíti a remote kommunikációt, nagyon jól konfigurálható és érthető.


SSL-es példa 1

SSL-es példa 2

SSL-es példa 2


Üdv,
dragon
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd