Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mTLS and AuthorizedGroups support #3

Merged
merged 19 commits into from
Mar 8, 2024
Merged

Add mTLS and AuthorizedGroups support #3

merged 19 commits into from
Mar 8, 2024

Conversation

joshbranham
Copy link
Owner

@joshbranham joshbranham commented Mar 1, 2024

This configures the proxy to listen with TLS, with mutual TLS between it and the client, and vice versa.

  • Provided certificates with the repo to make it easy to run and connect to the proxy.
  • Two user certificates provided, with two different groups, with tests confirming unauthorized clients have their connection closed.
  • Certificates are generated with SAN that supports localhost and 127.0.0.1 for the server name.
  • Modified design and config to load certificates from a filepath for better UX.

joshbranham and others added 14 commits February 27, 2024 16:31
…and a least-connection load balancer.

Yet to be implemented: mTLS authn/z and RateLimiting
- Comments and consolidation of Config
- Simplify connection handling in proxy with less channels + goroutines
…setting a sleep in the echo server,

and confirmed the tests failed, logging the i/o timeout. It is possible this doesn't work exactly how I think,
in that long-lived connections that don't send some type of heartbeat might expire. Will test that once I have
the server component.

```
❯ make test
go test ./...
2024/02/28 21:27:59 INFO proxy ready listening=127.0.0.1:61459 targets=127.0.0.1:61458
2024/02/28 21:28:01 ERROR idle timeout exceeded error="readfrom tcp 127.0.0.1:61459->127.0.0.1:61460: read tcp 127.0.0.1:61461->127.0.0.1:61458: i/o timeout"
2024/02/28 21:28:01 ERROR copying data error="readfrom tcp 127.0.0.1:61459->127.0.0.1:61460: read tcp 127.0.0.1:61461->127.0.0.1:61458: i/o timeout"
2024/02/28 21:28:01 ERROR idle timeout exceeded error="readfrom tcp 127.0.0.1:61461->127.0.0.1:61458: read tcp 127.0.0.1:61459->127.0.0.1:61460: i/o timeout"
2024/02/28 21:28:01 ERROR copying data error="readfrom tcp 127.0.0.1:61461->127.0.0.1:61458: read tcp 127.0.0.1:61459->127.0.0.1:61460: i/o timeout"
```
… on connection closing to prevent

a goroutine from getting stuck. Simplify the public API.
This configures the proxy to listen with TLS, with mutual TLS between it and the client, and vice versa.

* Provided certificates with the repo to make it easy to run and connect to the proxy.

* Two user certificates provided, with two different groups, with tests confirming unauthorized clients have their connection closed.

* Certificates are generated with SAN that supports `localhost` and `127.0.0.1` for the server name.
@joshbranham joshbranham self-assigned this Mar 1, 2024
@joshbranham joshbranham changed the title Feature/mtls Add mTLS and AuthorizedGroups support Mar 1, 2024
Base automatically changed from initial-library to main March 8, 2024 03:38
@joshbranham joshbranham merged commit 3e31fdf into main Mar 8, 2024
2 checks passed
@joshbranham joshbranham deleted the feature/mtls branch March 8, 2024 03:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant