changed how to support multiple domains and support client authentication directly by rustls using split server_config
This commit is contained in:
parent
42c0e9474e
commit
512690fce5
11 changed files with 218 additions and 184 deletions
31
README.md
31
README.md
|
|
@ -226,6 +226,33 @@ Other than them, all you need is to mount your `config.toml` as `/etc/rpxy.toml`
|
|||
|
||||
[`./bench`](./bench/) directory could be a very simple example of configuration of `rpxy`. This can also be an example of an example of docker use case.
|
||||
|
||||
## Experimental Features and Caveats
|
||||
|
||||
### HTTP/3
|
||||
|
||||
`rpxy` can serves HTTP/3 requests thanks to `quinn` and `hyperium/h3`. To enable this experimental feature, add an entry `experimental.h3` in your `config.toml` like follows. Any values in the entry like `alt_svc_max_age` are optional.
|
||||
|
||||
```toml
|
||||
[experimental.h3]
|
||||
alt_svc_max_age = 3600
|
||||
request_max_body_size = 65536
|
||||
max_concurrent_connections = 10000
|
||||
max_concurrent_bidistream = 100
|
||||
max_concurrent_unistream = 100
|
||||
```
|
||||
|
||||
### Client Authentication via Client Certificates
|
||||
|
||||
Client authentication is enabled when `apps."app_name".tls.client_ca_cert_path` is set for the domain specified by `"app_name"` like
|
||||
|
||||
```toml
|
||||
[apps.localhost]
|
||||
server_name = 'localhost' # Domain name
|
||||
tls = { https_redirection = true, tls_cert_path = './server.crt', tls_cert_key_path = './server.key', client_ca_cert_path = './client_cert.ca.crt' }
|
||||
```
|
||||
|
||||
However, currently we have a limitation on HTTP/3 support for applications that enables client authentication. If an application is set with client authentication, HTTP/3 doesn't work for the application.
|
||||
|
||||
## TIPS
|
||||
|
||||
### Using Private Key Issued by Let's Encrypt
|
||||
|
|
@ -284,12 +311,14 @@ First, you need to prepare a CA certificate used to verify client certificate. I
|
|||
% openssl x509 -req -days 365 -sha256 -in client.csr -CA client.ca.crt -CAkey client.ca.key -CAcreateserial -out client.crt -extfile client.ext
|
||||
```
|
||||
|
||||
Now you have a client key `client.key` and certificate `client.crt` (version 3). `p12` file can be retrieved as
|
||||
Now you have a client key `client.key` and certificate `client.crt` (version 3). `pfx` (`p12`) file can be retrieved as
|
||||
|
||||
```bash
|
||||
% openssl pkcs12 -export -inkey client.key -in client.crt -certfile client.ca.crt -out client.pfx
|
||||
```
|
||||
|
||||
Note that on MacOS, a `pfx` generated by `OpenSSL 3.0.6` cannot be imported to MacOS KeyChain Access. We generated the sample `pfx` using `LibreSSL 2.8.3` instead `OpenSSL`.
|
||||
|
||||
All of sample certificate files are found in `./example-certs/` directory.
|
||||
|
||||
### (Work Around) Deployment on Ubuntu 22.04LTS using docker behind `ufw`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue