Semplice client-server con openSSL

di Anonimizzato18069 il
3 risposte
Ciao Forum

Vorrei capire come sviluppare un sistema client-server simile a quello che è implementato in tightVNC: in pratica quando si installa lato server chiede una password da linea di comando che serve poi per connettersi con il desktop remoto. Mi sono completamente arenato perché stranamente google mi restituisce risultati non pertinenti, chiaro indice che non so cosa cercare.

Al momento riesco a incorporare OpenSSL nel mio progetto (mezza giornata per trovare un compilatore che ci riuscisse... ma ce l'ho fatta) ma non so proprio come partire; ho solo due programmi, un client e un server, che comunicano tramite sockets e vorrei implementare un minimo di sicurezza nella comunicazione; non ho problemi stringenti in questo senso dato che è un semplice sistema domotico ma non vorrei che un burlone mi facesse partire la lavatrice da remoto se mai riesco a mettere in piedi il tutto.

Come dicevo non trovo risultati pertinenti perché probabilmente non cerco le cose giuste. Mi basterebbe un esempio di come è la struttura del suddetto TightVNC o altro sistema che funzioni in modo simile, forse già da questo riuscirei a desumere come organizzare le cose ma ovviamente qualsiasi informazione in più mi farebbe molto piacere. In particolare non capisco la faccenda dei certificati perché non ho chiarissimo come funziona la comunicazione a chiave pubblica; giustamente mi direte che è per questo che non so come partire, ma se non ho un punto di partenza pratico per me le cose sono un po' più difficili. Insomma, vorrei fare un bootstrap su questo argomento, in qualche modo

Grazie per qualsiasi aiuto mi potrete dare.

3 Risposte

  • Puoi vedere un esempio (dal punto di vista pratico) ove i vari elementi forniscono:
    - il controllo remoto del pc (TightVNC);
    - la connessione cifrata sicura (Stunnel);
    - la creazione dei protocolli di sicurezza, della connessione cifrata, utilizzati nel tunneling (OpenSSL)
    - le librerie di creazione della connessione protetta (libeay32.DLL ,libssl32.DLL ) impiegati da Stunnel e OpenSSL;
    – il file di configurazione (openssl.conf) utilizzato da openssl.exe;
    che dovrai ricreare, funzionalmente, in base all'effettivo ambiente e strumenti che vorrai implementare/utilizzare.

    http://www.free-download.it/testo-tutorial/5-controllo-remoto-con-protocollo-di-sicurezza
    https://www.suse.com/communities/blog/stunnel-securing-insecure-ssl-and-creating-ssl-tunnels/
    https://linux.die.net/man/8/stunne
    https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ssl-tunnel-using-stunnel-on-ubuntu
    http://www.revsys.com/writings/quicktips/ssh-tunnel.html
  • Hai requisiti particolari riguardo al linguaggio? Perché con java (o qualsiasi altro linguaggio di alto livello, ma personalmente conosco meglio java per queste cose), sarebbe tutto molto più semplice.
  • Purtroppo conosco male tutto quello che non è C/C++ (e in questi non sono nemmeno un mago, beninteso...). Non credo che il problema sia il linguaggio ma capire cosa accade. Grazie al materiale linkato da willy55 ho già capito un po' di cose, ma continua a sfuggirmi il meccanismo generale e in mancanza di questo, in qualsiasi linguaggio non combinerò molto. Purtroppo si parla solo di certificati, handshaking e tante altre cose ma niente che mi metta in condizione di capire; certo una persona intelligente desume ogni cosa anche dai sorgenti (ho letto su un PPT che quelli di openSSL siano un incubo ) ma chi non ha mai fatto niente in questo campo e non è inserito in un contesto di altre persone più esperte ha difficoltà. O almeno le ho io. Sto pensando di far generare un certificato al server contenente la password scelta dall'utente, dopodiché credo che al momento del login il server possa mandare la sua chiave pubblica al client. E poi? Oppure non si fa così?
Devi accedere o registrarti per scrivere nel forum
3 risposte