| Hello World Example with TLS | |
| ============================================== | |
| The example require grpc-java to already be built. You are strongly encouraged | |
| to **check out a git release tag**, since there will already be a build of grpc | |
| available: | |
| ``` | |
| git checkout v<major>.<minor>.<patch> | |
| ``` | |
| Otherwise you must follow [COMPILING](../COMPILING.md). | |
| To build the example, | |
| 1. **[Install gRPC Java library SNAPSHOT locally, including code generation plugin](../../COMPILING.md) (Only need this step for non-released versions, e.g. master HEAD).** | |
| 2. Run in this directory: | |
| ``` | |
| $ ../gradlew installDist | |
| ``` | |
| This creates the scripts `hello-world-tls-server`, `hello-world-tls-client`, | |
| in the | |
| `build/install/example-tls/bin/` directory that run the example. The | |
| example requires the server to be running before starting the client. | |
| Running the hello world with TLS is the same as the normal hello world, but takes additional args: | |
| **hello-world-tls-server**: | |
| ```text | |
| USAGE: HelloWorldServerTls port certChainFilePath privateKeyFilePath [trustCertCollectionFilePath] | |
| Note: You only need to supply trustCertCollectionFilePath if you want to enable Mutual TLS. | |
| ``` | |
| **hello-world-tls-client**: | |
| ```text | |
| USAGE: HelloWorldClientTls host port [trustCertCollectionFilePath [clientCertChainFilePath clientPrivateKeyFilePath]] | |
| Note: clientCertChainFilePath and clientPrivateKeyFilePath are only needed if mutual auth is desired. | |
| ``` | |
| - Note `trustCertCollectionFilePath` is not needed if you are using system default certificate authority. | |
| You can run this example with our [test credentials](../../testing/src/main/resources/certs) with | |
| `.overrideAuthority("foo.test.google.fr")` for `ManagedChannelBuilder` to match the Subject Alternative Names | |
| in the test certificates. You can generate your own self-signed certificates with commands in the test certs | |
| [README](../../testing/src/main/resources/certs/README). | |
| - Note you can use system default certificate authority if you are using a real server certificate. | |
| #### Hello world example with TLS (no mutual auth): | |
| ```bash | |
| # Run the server: | |
| ./build/install/example-tls/bin/hello-world-tls-server 50440 ../../testing/src/main/resources/certs/server1.pem ../../testing/src/main/resources/certs/server1.key | |
| # In another terminal run the client | |
| ./build/install/example-tls/bin/hello-world-tls-client localhost 50440 ../../testing/src/main/resources/certs/ca.pem | |
| ``` | |
| #### Hello world example with TLS with mutual auth: | |
| ```bash | |
| # Run the server: | |
| ./build/install/example-tls/bin/hello-world-tls-server 50440 ../../testing/src/main/resources/certs/server1.pem ../../testing/src/main/resources/certs/server1.key ../../testing/src/main/resources/certs/ca.pem | |
| # In another terminal run the client | |
| ./build/install/example-tls/bin/hello-world-tls-client localhost 50440 ../../testing/src/main/resources/certs/ca.pem ../../testing/src/main/resources/certs/client.pem ../../testing/src/main/resources/certs/client.key | |
| ``` | |
| That's it! | |
| ## Maven | |
| If you prefer to use Maven: | |
| 1. **[Install gRPC Java library SNAPSHOT locally, including code generation plugin](../../COMPILING.md) (Only need this step for non-released versions, e.g. master HEAD).** | |
| 2. Run in this directory: | |
| ``` | |
| $ mvn verify | |
| $ # Run the server | |
| $ mvn exec:java -Dexec.mainClass=io.grpc.examples.helloworldtls.HelloWorldServerTls -Dexec.args="50440 ../../testing/src/main/resources/certs/server1.pem ../../testing/src/main/resources/certs/server1.key" | |
| $ # In another terminal run the client | |
| $ mvn exec:java -Dexec.mainClass=io.grpc.examples.helloworldtls.HelloWorldClientTls -Dexec.args="localhost 50440 ../../testing/src/main/resources/certs/ca.pem" | |
| ``` | |
| ## Bazel | |
| If you prefer to use Bazel: | |
| ``` | |
| $ bazel build :hello-world-tls-server :hello-world-tls-client | |
| $ # Run the server | |
| $ ../bazel-bin/hello-world-tls-server 50440 ../../testing/src/main/resources/certs/server1.pem ../../testing/src/main/resources/certs/server1.key | |
| $ # In another terminal run the client | |
| $ ../bazel-bin/hello-world-tls-client localhost 50440 ../../testing/src/main/resources/certs/ca.pem | |
| ``` |