You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+14-6Lines changed: 14 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,12 +20,14 @@ Both the client-side and the server-side TLS termination can be separately confi
20
20
## Modes of operation
21
21
22
22
Server
23
+
- TCP/HTTP server with regular TLS on the server side, to allow the client to verify the server's TLS certificate.
23
24
- TCP/HTTP server with aTLS on the server side, to allow client verify the server measurement.
24
-
- TCP/HTTP server that verifies the client (via client-side aTLS certificate). The measurement is passed along to the proxy target as header.
25
+
- TCP/HTTP server that verifies the client (via client-side aTLS certificate). The measurement is passed along to the proxy target as header. Valid for both server-side TLS and aTLS.
25
26
- TCP/HTTP server that performs mutual attestation, that is it both provides its own attestation, and verifies the client. The *client's* measurement is forwarded as a header.
26
27
27
28
Client
28
-
- Client making a request, verifying server aTLS (supporting one or multiple whitelisted measurements). The *server's* measurement is returned as a header.
29
+
- Client making a request, verifying server's TLS certificate.
30
+
- Client making a request, verifying server aTLS certificate (supporting one or multiple whitelisted measurements). The *server's* measurement is returned as a header.
29
31
- Client making a request with a client-side aTLS cert.
30
32
- Client making a request mutual attestation, both verifying server aTLS and providing the client-side aTLS handshake. The *sever's* measurement is returned as a header.
31
33
@@ -38,6 +40,8 @@ Client
38
40
-`--listen-addr`: address to listen on (default: "127.0.0.1:8080")
39
41
-`--target-addr`: address to proxy requests to (default: "https://localhost:80")
40
42
-`--server-attestation-type`: type of attestation to present (none, azure-tdx) (default: "azure-tdx")
43
+
-`--tls-certificate`: Certificate to present (PEM). Only valid for --server-attestation-type=none and with --tls-private-key.
44
+
-`--tls-private-key`: "Private key for the certificate (PEM). Only valid with --tls-certificate.
41
45
-`--client-attestation-type`: type of attestation to expect and verify (none, azure-tdx) (default: "none")
42
46
-`--client-measurements`: optional path to JSON measurements enforced on the client
43
47
-`--log-json`: log in JSON format (default: false)
By default the server will present Azure TDX attestation, and you can modify that via the `--server-attestation-type` flag.
64
+
By default the server will present Azure TDX attestation, and you can modify that via the `--server-attestation-type` flag.
65
+
The server can be made to present a regular TLS certificate through `--tls-certificate` and `--tls-private-key` flags instead of aTLS one.
61
66
62
-
By default the server will not verify client attestations, you can change that via `--client-attestation-type` and `--client-measurements` flags.
67
+
By default the server will not verify client attestations, you can change that via `--client-attestation-type` and `--client-measurements` flags. Valid for both aTLS and regular TLS.
63
68
64
69
65
70
This repository contains a [dummy http server](./cmd/dummy-server/main.go) that you can use for testing the server. Simply run `go run ./cmd/dummy-server/main.go` and point your `--target-addr=http://127.0.0.1:8085`. You can also use the sample [measurements.json](./measurements.json).
@@ -72,6 +77,8 @@ This repository contains a [dummy http server](./cmd/dummy-server/main.go) that
72
77
-`--target-addr`: address to proxy requests to (default: "https://localhost:80")
73
78
-`--server-attestation-type`: type of attestation to expect and verify (none, azure-tdx) (default: "azure-tdx")
74
79
-`--server-measurements`: optional path to JSON measurements enforced on the server
80
+
-`--verify-tls`: verify server's TLS certificate instead of server's attestation. Only valid for server-attestation-type=none.
81
+
-`--tls-ca-certificate`: additional CA certificate to verify against (PEM) [default=no additional TLS certs]. Only valid with --verify-tls.
75
82
-`--client-attestation-type`: type of attestation to present (none, azure-tdx) (default: "none")
76
83
-`--log-json`: log in JSON format (default: false)
By default the client will expect the server to present an Azure TDX attestation, and you can modify that via the `--server-attestation-type` and `--server-measurements` flags.
100
+
By default the client will expect the server to present an Azure TDX attestation, and you can modify that via the `--server-attestation-type` and `--server-measurements` flags.
101
+
The server can also be a regular TLS server, which you can configure with the `--verify-tls` flag, which is only valid in combination with `--server-attestation-type=none`. Non-standard CA for the server can also be configured with `--tls-ca-certificate`.
94
102
95
-
By default the client will not present client attestations, you can change that via `--client-attestation-type` flag.
103
+
By default the client will not present client attestations, you can change that via `--client-attestation-type` flag. Valid for both aTLS and TLS server proxies.
96
104
97
105
This repository contains a sample [measurements.json](./measurements.json) file that you can use. The client will (correctly) complain about unexpected measurements that you can then correct.
0 commit comments