diff --git a/.gitignore b/.gitignore index 861db796b3ae4ae0c2e53c823d05f43ca3ae4c1e..3c98739db35a846ed127f542ec836846b97d4fb0 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,5 @@ proguard/ *.ear% .DS_Store +/websocketClient/src/main/resources/localhost.der +/websocketClient/src/main/resources/mycert-pub.jks diff --git a/README.md b/README.md index 4935b3ed090a4a651601537e02300697a8e38a92..772f67712697bfde79b9ce1587a61596418ed39f 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,9 @@ http://localhost:8080/restApp/sample/persons 6. curl http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample/persons/843c8236-6c6b-450e-9aa3-211a9b897403 7. curl -H "Accept: text/xml" http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample/persons + ## Import "real" certificate - openssl x509 -outform der -in localhost.pem -out localhost.der + openssl s_client -showcerts -servername localhost -connect localhost:8181 </dev/null | openssl x509 -outform DER > localhost.der keytool -import -noprompt -trustcacerts -storepass storepass -alias localhost -keystore mycert-pub.jks -file localhost.der diff --git a/docker-compose.yml b/docker-compose.yml index 096bec6825d66fd01b7ab16c76be6c20018fcfcf..8f7e82db441f24e457f8056f36092cf17753211f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,6 +23,13 @@ services: H2_OPTIONS: '-ifNotExists -webAllowOthers -tcpAllowOthers -pgAllowOthers -ifNotExists' volumes: - h2data:/h2-data - + reverse-proxy: + environment: + - NGINX_HOST=localhost + build: docker/nginx + volumes: + - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf + ports: + - "8888:443" volumes: h2data: \ No newline at end of file diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..656ee95b24dae039519089b0341c0e590b31346f --- /dev/null +++ b/docker/nginx/Dockerfile @@ -0,0 +1,9 @@ +FROM nginx:1.20.2-alpine +RUN apk add openssl +RUN openssl req -x509 -nodes \ + -days 365 \ + -subj "/C=CA/ST=QC/O=Company, Inc./CN=localhost" \ + -addext "subjectAltName=DNS:localhost" \ + -newkey rsa:2048 \ + -keyout /etc/ssl/private/nginx-selfsigned.key \ + -out /etc/ssl/certs/nginx-selfsigned.crt; \ No newline at end of file diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf new file mode 100644 index 0000000000000000000000000000000000000000..c54e65465079ee1d7f16a3c4034dc3cd6d933077 --- /dev/null +++ b/docker/nginx/nginx.conf @@ -0,0 +1,24 @@ +events { + +} + +http { + server { + listen 80; + + listen 443 ssl; + ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; + ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; + + location /wsapp/ { + proxy_pass http://jakartaEE:8686; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + location / { + proxy_pass http://jakartaEE:8080; + } + } +} \ No newline at end of file diff --git a/jee/wsApp/src/main/java/fr/univtln/bruno/samples/jee91/ws/WSServer.java b/jee/wsApp/src/main/java/fr/univtln/bruno/samples/jee91/ws/WSServer.java index eacbdf6085d1d708af0a5e9b48bcf2aca643c092..bea8ec0223a929f9a865d11ac5f56bedc870ddda 100644 --- a/jee/wsApp/src/main/java/fr/univtln/bruno/samples/jee91/ws/WSServer.java +++ b/jee/wsApp/src/main/java/fr/univtln/bruno/samples/jee91/ws/WSServer.java @@ -20,10 +20,11 @@ import java.io.IOException; @Log public class WSServer { - @Inject + @Inject @SpokenLanguage(SpokenLanguage.Language.ENGLISH) Hello hello; + @Inject MainDAO dao1; @@ -36,8 +37,8 @@ public class WSServer { } @OnMessage - public void onMessage(Session session, - String message) throws IOException { + public void onMessage(String message, Session session + ) throws IOException { session.getBasicRemote().sendText("Echo :" + message); } } diff --git a/websocketClient/src/main/java/fr/univtln/bruno/samples/jee91/wsclient/WsClient.java b/websocketClient/src/main/java/fr/univtln/bruno/samples/jee91/wsclient/WsClient.java index 3ed86072a8b712266064df3c3a186a1b4103f61f..30201cc79d97e9b44afd2f8ca8a5017afbf18396 100644 --- a/websocketClient/src/main/java/fr/univtln/bruno/samples/jee91/wsclient/WsClient.java +++ b/websocketClient/src/main/java/fr/univtln/bruno/samples/jee91/wsclient/WsClient.java @@ -41,7 +41,7 @@ public class WsClient { public static void main(String[] args) { try { - final WsClient clientEndPoint = new WsClient(new URI("ws://localhost:8686/wsApp/hellows")); + final WsClient clientEndPoint = new WsClient(new URI("wss://localhost:8181/wsApp/hellows")); clientEndPoint.sendMessage("Hello 1 !"); Thread.sleep(5000); clientEndPoint.sendMessage("Hello 2 !"); diff --git a/websocketClient/src/main/resources/META-INF/log4j.properties b/websocketClient/src/main/resources/log4j.properties similarity index 100% rename from websocketClient/src/main/resources/META-INF/log4j.properties rename to websocketClient/src/main/resources/log4j.properties diff --git a/websocketClient/src/main/resources/updateKeystore.sh b/websocketClient/src/main/resources/updateKeystore.sh new file mode 100644 index 0000000000000000000000000000000000000000..afa03d8055a0d3c40bc588b713b61d6685b42a95 --- /dev/null +++ b/websocketClient/src/main/resources/updateKeystore.sh @@ -0,0 +1,3 @@ +#!/bin/bash +openssl s_client -showcerts -servername localhost -connect localhost:8181 </dev/null | openssl x509 -outform DER > localhost.der +keytool -import -noprompt -trustcacerts -storepass storepass -alias localhost -keystore mycert-pub.jks -file localhost.der