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: doc/content/design/trusted-certificates.md
+10-17Lines changed: 10 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -72,25 +72,20 @@ This is an existing API to install a trusted certificate into the pool with its
72
72
73
73
Prior to this design, the API's name parameter represents the certificate file name as persisted on the dom0 file system.
74
74
In this design, this API will be deprecated because it exposes implementation details that should remain internal and hidden from users.
75
-
The new "pool.install_root_certificate" should be used instead.
75
+
The new "pool.install_trusted_certificate" should be used instead.
76
76
77
-
### pool.install_root_certificate
77
+
### pool.install_trusted_certificate
78
78
This is a new API introduced in this design with its arguments being defined as:
79
79
* session (ref session_id): reference to a valid session;
80
80
* self (ref Pool): reference to the pool;
81
-
* cert (string): the trusted root CA certificate in PEM format;
82
-
* purpose (string list): the purposes of the trusted root CA certificate; it stands for a general purpose when it is an empty set.
81
+
* kind (string): the kind of the certificate; it can be either "ca" or "peer";
82
+
* cert (string): the trusted certificate in PEM format;
83
+
* purpose (string list): the purposes of the trusted certificate.
83
84
84
-
This new API is used to install trusted root CA certificates only.
85
-
86
-
### pool.install_peer_certificate
87
-
This is a new API introduced in this design with its arguments being defined as:
88
-
* session (ref session_id): reference to a valid session;
89
-
* self (ref Pool): reference to the pool;
90
-
* cert (string): the trusted peer certificate in PEM format;
91
-
* purpose (string list): the purposes of the trusted peer certificate; can't be an empty set.
92
-
93
-
This new API is used to install trusted peer certificates only.
85
+
This new API is used to install trusted certificate.
86
+
The value of *kind* can be "ca", which stands for root CA certificate, or "peer" which stands for peer certificate.
87
+
When *purpose* is an empty set, it stands for a root CA certificate for general purpose.
88
+
The *purpose* can not be an empty set when the *kind* is "peer", because each peer certificate is specific to a single server and therefore unsuitable for a shared trusted certificate for general purpose.
94
89
95
90
### pool.uninstall_certificate
96
91
This is a new API introduced in this design to uninstall a trusted certificate with its arguments being defined as:
@@ -124,7 +119,7 @@ This design doesn't change this for backwards compatibility. But the API "pool.i
124
119
125
120
The pool "Trusted Pool" and "Pool Bundle" are for host-to-host TLS communications within a pool. This design doesn't change them.
126
121
127
-
The stores for the certificates installed via "pool.install_root_certificate" or "pool.install_peer_certificate" are defined as:
122
+
The stores for the certificates installed via "pool.install_trusted_certificate" are defined as:
128
123
| Name | Filesystem location | Used for |
129
124
| ---- | ------------------- | -------- |
130
125
| Trusted General CA | /etc/trusted-certs/ca-general/ | Trusted root CA certificates that users can install to validate a peer’s identity when establishing a TLS connection for general purpose.
@@ -137,8 +132,6 @@ The stores for the certificates installed via "pool.install_root_certificate" or
137
132
The filesystem location is derived from the \<PURPOSE\>. Each \<PURPOSE\> string corresponds to a predefined value of the "purpose" type in the database, implemented as predefined constants.
138
133
The certificate file names under filesystem locations of "Trusted General CA", "Trusted Peer" and "Trusted CA" will be the UUIDs of the *Certificate* objects.
139
134
140
-
There is no general‑purpose store for trusted peer certificates, because each peer certificate is specific to a single server and therefore unsuitable for a shared trust bundle for general purpose.
141
-
142
135
## Precedence order of choosing trust stores
143
136
The "Peer Bundle", "CA Bundle", and "Default Bundle" can be directly used when establishing TLS connections.
144
137
The endpoint to validate the peer's identity must unambiguously choose only one non-empty bundle from them with the following precedence order:
0 commit comments