From 052ec335651a679a0729be32f2db5b5b13c58486 Mon Sep 17 00:00:00 2001 From: Valentin Rentschler Date: Thu, 2 Mar 2023 11:08:02 +0100 Subject: [PATCH 1/2] Add example for vanilla java client --- docs/java/config.yaml | 12 ++++++++ docs/java/logo.png | Bin 0 -> 24686 bytes docs/java/topics/client.md | 56 +++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 docs/java/config.yaml create mode 100644 docs/java/logo.png create mode 100644 docs/java/topics/client.md diff --git a/docs/java/config.yaml b/docs/java/config.yaml new file mode 100644 index 0000000..a3796d4 --- /dev/null +++ b/docs/java/config.yaml @@ -0,0 +1,12 @@ +name: Java +protocol: https +server_port: 443 +topics: + client: + links: + - text: Java Key Store format + url: https://docs.oracle.com/cd/E19509-01/820-3503/ggfen/index.html + - text: "PKCS #12" + url: https://en.wikipedia.org/wiki/PKCS_12 + - text: Introduction to the Java HTTP Client + url: https://openjdk.org/groups/net/httpclient/intro.html diff --git a/docs/java/logo.png b/docs/java/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..43dd906015f452d0d0aea18bbc0ce0a3ad64ccf6 GIT binary patch literal 24686 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 Il1;?_07$)0LI3~& literal 0 HcmV?d00001 diff --git a/docs/java/topics/client.md b/docs/java/topics/client.md new file mode 100644 index 0000000..223da36 --- /dev/null +++ b/docs/java/topics/client.md @@ -0,0 +1,56 @@ +This example assumes only Java 11 or newer and does not require any libraries. + +There are multiple ways to convert certificate, private key and root CA certificate to a format that java can digest. +Java works with "key stores" which can be in the (java proprietary) `JKS` or `PKCS #12` format (among others), +and can also be created at runtime. But here we will use only `step` and a minimal amount of code. + +Trust store and key store can also be configured on a JVM level, but on the client we probably want to configure +them on a per-connection basis, so this is what we will do here. + +Make sure to set a password for trust and key store in the next steps: + +1. Package the root CA certificate: `step certificate p12 truststore.p12 --ca {{ ca_cert }}` +2. Package certificate and key: `step certificate p12 keystore.p12 {{ client_cert }} {{ client_key }} --ca {{ ca_cert }}` + +You can now put these files on your classpath or read them from the file system: + +```java +// imports omitted + +public class HelloMtlsClient { + public static void main(String[] args) throws Exception { + var keyStore = KeyStore.getInstance("PKCS12"); + var trustStore = KeyStore.getInstance("PKCS12"); + var keyStorePassword = "changeit"; + var trustStorePassword = "changeit"; + + try (var keystoreFile = Files.newInputStream(Path.of("keystore.p12")); + var truststoreFile = Files.newInputStream(Path.of("truststore.p12"))) { + keyStore.load(keystoreFile, keyStorePassword.toCharArray()); + trustStore.load(truststoreFile, trustStorePassword.toCharArray()); + } + + var keyManager = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + keyManager.init(keyStore, keyStorePassword.toCharArray()); + + var trustManager = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManager.init(trustStore); + + var sslContext = SSLContext.getInstance("TLSv1.3"); + sslContext.init(keyManager.getKeyManagers(), trustManager.getTrustManagers(), null); + + SSLParameters sslParameters = new SSLParameters(); + sslParameters.setNeedClientAuth(true); + + var httpClient = HttpClient.newBuilder() + .sslContext(sslContext) + .sslParameters(sslParameters) + .build(); + + var request = HttpRequest.newBuilder(URI.create("https://{{ server_name }}:{{ server_port }}")).GET().build(); + var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + + // Do something with the response + } +} +``` From f99d778ac6a8387539629fefd10ff9af46695836 Mon Sep 17 00:00:00 2001 From: Valentin Rentschler Date: Thu, 2 Mar 2023 11:08:18 +0100 Subject: [PATCH 2/2] Document node and yarn version --- .gitignore | 3 ++- .nvmrc | 1 + README.md | 3 ++- package.json | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 .nvmrc diff --git a/.gitignore b/.gitignore index 0b4d90a..8f61835 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules .next yarn-error.log dist -assets \ No newline at end of file +assets +.yarnrc.yml \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..5edcff0 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16 \ No newline at end of file diff --git a/README.md b/README.md index 55b5d75..5a46853 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ If you notice any outdated, missing, or errant docs, pull requests are strongly Documentation for each technology lives in its corresponding directory in the [docs/](docs/) folder. -To get rolling on local development, clone this repository and start the local dev server: +To get rolling on local development, clone this repository, have yarn ready (`yarn set version classic` if you have yarn 3 installed) +and use Node 16 (`nvm use`) and start the local dev server: ``` $ yarn install diff --git a/package.json b/package.json index 9d61722..eebe115 100644 --- a/package.json +++ b/package.json @@ -42,5 +42,6 @@ "peerDependencies": { "react": "^16.9.0", "react-dom": "^16.9.0" - } + }, + "packageManager": "yarn@1.22.19" }