# Grizzly mit HTTPS



## GENiALi (26. Sep 2015)

Hallo

Ich kommte eigentlich aus dem .NET Lager will aber aktuell ein Java Projekt machen. Dazu will ich einen self-hosted Webserver in betrieb nehmen. Das klappt auch wunderbar. Bis ich dann SSL ins spiel bringen will.

Folgendes Stück Code funktioniert perfekt.

```
private static void startWebserver(String port) {
    try {
        final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(UriBuilder.fromUri("http://localhost/").port(Integer.valueOf(port)).build(),
                createBotApp());
        System.out.println(String.format("Application started.%nHit enter to stop it..."));
        System.in.read();
        server.shutdownNow();
    } catch (IOException ex) {
        System.out.println(ex.toString());
    }
}

public static ResourceConfig createBotApp() {
    return new ResourceConfig()
            .packages("ch.geniali.Webservices")
            .register(Webservice.class);
}
```

Sobald dann aber SSL ins spiel kommt gehts nicht mehr.

```
private static void startWebserver(String port) {
    try {
        SSLContextConfigurator sslContext = new SSLContextConfigurator();
        sslContext.setKeyStoreFile("./cert/keystore_server");
        sslContext.setKeyStorePass("PW");
        sslContext.setTrustStoreFile("./cert/truststore_server");
        sslContext.setTrustStorePass("PW");

        final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(UriBuilder.fromUri("https://localhost/").port(Integer.valueOf(port)).build(),
                createBotApp(), true, new SSLEngineConfigurator(sslContext).setClientMode(false).setNeedClientAuth(true));
        System.out.println(String.format("Application started.%nHit enter to stop it..."));
        System.in.read();
        server.shutdownNow();
    } catch (IOException ex) {
        System.out.println(ex.toString());
    }
}

public static ResourceConfig createBotApp() {
    return new ResourceConfig()
            .packages("ch.geniali.Webservices")
            .register(Webservice.class);
}
```

Da das Projekt nie aus meiner Hand gehen wird habe ich ein Selfsignet Cert gemacht.



> Generate client key and store it into keystore:
> keytool -genkey -keystore ./keystore_client -alias clientKey -dname "CN=Client, OU=GENiALi, O=GENiALi, L=SWISS, ST=SWITZERLAND, C=CH"
> 
> Generate client certificate (this will generate self-signed certificate; if you have certification authority and want generate certificate request, use keytool -certreq):
> ...



Die Frage: Sieht jemand was fehlt damit der Aufruf mit h**ps://localhost:<port>/ tut?


----------

