Avatar billede riversen Nybegynder
12. december 2006 - 13:11 Der er 16 kommentarer og
1 løsning

ssl mellem applet og server

Hej,

nogen der kan hjælpe mig igang med at overføre data krypteret fra en applet til en server. Dvs. serveren skal sende et certifikat til applet'en, applet'en krypterer en sessionsnøgle til serveren og denne sessionnøgle benyttes til efterfølgende kommunikation.

Har set nogle eksempler på brug af SSLSocket, hvor man starter javaprogrammet med en parameter til et certifikat, men det er vel ikke umiddelbart muligt med en applet ?

Det skal altså fungere ala HTTPS havde jeg forestillet mig, men jeg er åben for alternativer.
Avatar billede riversen Nybegynder
12. december 2006 - 13:11 #1
Kan jeg signere applet'en med at certifikat og den så benytter dette certifikat automatisk ved oprettelse af en sslsocket og så vil det fungere? Forudsat jeg selvfølgelig også har et certifikat i serverenden
Avatar billede arne_v Ekspert
13. december 2006 - 04:01 #2
først det dumme spørgsmål: hvorfor bruger du ikke bare HTTPS og laver en simpel
POST af data ?
Avatar billede riversen Nybegynder
13. december 2006 - 07:24 #3
Ikke muligt så vidt jeg lige kan gennemskue. Det er meningen at klienten/brugeren, skal uploade en XML fil til en server. I XML filen vil der også stå nogle stier til billeder, som skal sendes med. Vi kan snakker 0-n billeder, så det kan X antal minutter.
Avatar billede riversen Nybegynder
13. december 2006 - 07:24 #4
prøver lige igen.
Vi snakker 0-n billeder, så det kan tage X antal minutter.
Avatar billede arne_v Ekspert
13. december 2006 - 13:12 #5
man kan uploade flere filer med en enkelt POST eller lave flere POST's af en
enkelt fil parallelt

hvorfor er det ikke muligt ? time out fordi X minutter er for lang tid ?
Avatar billede riversen Nybegynder
13. december 2006 - 14:01 #6
ja, det kan jo i princippet tage en time eller længere
Avatar billede riversen Nybegynder
14. december 2006 - 06:33 #7
anyone ?
Avatar billede riversen Nybegynder
14. december 2006 - 08:38 #8
hvis ikke der kommer nogen forslag, så tror jeg bare jeg må uploade billederne på en ukrypteret forbindelse, og så lave en post via https af XML filen.
Avatar billede arne_v Ekspert
15. december 2006 - 04:52 #9
jeg kan godt prøve at lave et SSL connection eksempel, men det bliver først lørdag ...
Avatar billede riversen Nybegynder
15. december 2006 - 06:24 #10
det vil være lækkert...
Avatar billede arne_v Ekspert
16. december 2006 - 17:20 #11
hvis du kun er interesseret i selve krypteringen men ikke i at bruge certifikater til
validering så er det ikke så slemt

følgende virker hos mig
Avatar billede arne_v Ekspert
16. december 2006 - 17:21 #12
import java.io.*;
import java.net.*;

import javax.net.ssl.*;

public class SecureServer {
    public static void main(String[] args) throws Exception {
        SSLServerSocketFactory ssf = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
        SSLServerSocket ss = (SSLServerSocket)ssf.createServerSocket(12345);
        SSLSocket s = (SSLSocket)ss.accept();
        InputStream is = s.getInputStream();
        byte[] b = new byte[10000];
        int blen = 0;
        int n;
        while((n = is.read(b, blen, b.length - blen)) > 0) {
            blen += n;
        }
        System.out.print("received " + blen + " bytes from client:");
        for(int i = 0; i < blen; i++) System.out.print(" " + b[i]);
        System.out.println(" from client");
        is.close();
        s.close();
        ss.close();
     
  }
}
Avatar billede arne_v Ekspert
16. december 2006 - 17:21 #13
rem keytool -genkey -keystore server.jks -alias server -keypass superhemmeligt
javac SecureServer.java
java -Djavax.net.ssl.keyStore=server.jks -Djavax.net.ssl.keyStorePassword=superhemmeligt SecureServer
Avatar billede arne_v Ekspert
16. december 2006 - 17:21 #14
import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;

import javax.net.ssl.*;

public class SecureClient {
    public static void main(String[] args) throws Exception {
        SSLContext sslctx = SSLContext.getInstance("SSL");
        sslctx.init(null, new X509TrustManager[] { new MyTrustManager() }, null);
        byte[] b = { 1, 2, 3 };
        Socket tmp = new Socket("localhost", 12345);
        SSLSocketFactory sf = sslctx.getSocketFactory();
        SSLSocket s = (SSLSocket)sf.createSocket(tmp, "loaclhost", 12345, true);
        OutputStream os = s.getOutputStream();
        System.out.println("sending 1 2 3 to server");
        os.write(b);
        os.close();
        s.close();
  }
}

class MyTrustManager implements X509TrustManager
{
    public void checkClientTrusted(X509Certificate[] chain, String authType) {
    }
    public void checkServerTrusted(X509Certificate[] chain, String authType) {
    }
    public X509Certificate[] getAcceptedIssuers() {
        return null;
    }
}
Avatar billede arne_v Ekspert
16. december 2006 - 17:22 #15
javac SecureClient.java
java SecureClient
Avatar billede riversen Nybegynder
16. december 2006 - 20:43 #16
du er en guttermand...
Avatar billede arne_v Ekspert
31. december 2006 - 22:35 #17
og et svar fra mig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB