-
Notifications
You must be signed in to change notification settings - Fork 183
Certificate changes for 7.6 #3477
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
Conversation
… information, and other issues.
More cleanup in Certificates.
…certificates page.
…grading. Added TLS version removal as a potential concern.
…ing PKCS #12 for cluster certificates.
| One certificate _issues_ another certificate — thereby letting the new certificate inherit its own authority and occupy the tier immediately below itself — by the process of _certificate signing_. | ||
| A Couchbase Server cluster organizes certificates in a hierarchy. | ||
| The certificate with overall authority for the cluster is at the top of the hierarchy. | ||
| This certificate is the root certificate, also called the cluster certificate, because it is the certificate for the cluster as a whole. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The terminology has changed a bit since we introduced multiple ca support. Since you are rewriting it maybe we should not use obsolete terminology.
For example, we don't actually have cluster certificate anymore. We used to have a single root cert for the cluster, and all node certs were supposed to be signed by that cert, but it has changed.
Now every node can be issued by a separate ca and that will be fine. In this case it is not really clear what to call the cluster certificate. I suggest we get rid of this term as it seems confusing.
Instead of "the cluster certificate" we now have the trust store which is basically a list of root and intermediate certificates that are considered trusted by the cluster (it is cluster wide). The meaning of it is simple: we trust any certificate that was signed by a certificate from the trust store.
Basically any node certificate chain should end with a certificate from the trust store.
| By default, Couchbase Server provides minimally defined _root_ and _entity_ certificates to protect cluster and individual nodes. | ||
| Administrators can replace these, with customized or externally acquired certificates, and with corresponding certificate-chains. | ||
| All certificates and certificate-chains for client-side use need to be explicitly created and/or deployed by administrators, as appropriate. | ||
| The private key of the default self-signed cluster certificate is not available. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The private key of the default self-signed cluster certificate is not available.
I think it would be better to say "default self-signed root certificate"
| Couchbase Server provides a default self-signed cluster certificate which it generates and deploys while creating the first node in a cluster. | ||
| You can deploy a new replacement cluster certificate on the cluster using the Couchbase REST API or command line interface. | ||
| For example, you can replace the certificate with one supplied by a well-known CA to make authentication with third parties easier. | ||
| The current cluster certificate is always visible on the *Root Certificate* panel of the *Security* screen of Couchbase Server Web Console. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couchbase Server provides a default self-signed cluster certificate which it generates and deploys while creating the first node in a cluster.
You can deploy a new replacement cluster certificate on the cluster using the Couchbase REST API or command line interface.
For example, you can replace the certificate with one supplied by a well-known CA to make authentication with third parties easier.
The current cluster certificate is always visible on the Root Certificate panel of the Security screen of Couchbase Server Web Console.
This paragraph seems to be obsolete. There is no root certificate panel in UI anymore.
I think we can write about the trust store here instead.
Main points:
- This is a list of trusted certificates that is used for peer verification when (1) TLS connections are established between couchbase-nodes, and (2) when clients authenticate using client certificates.
- It is cluster wide
- the default self-signed root certificate (which is generated while creating the first node in a cluster) is added to the trust store automatically. It can be removed from the trust store if all nodes use custom certificates.
- Trusted certificates are visible on Certificates panel of the Security screen
| * If the two nodes do _not_ have the same CA, the CA of each must be loaded onto the other; after which, connection and node-addition (or node-joining) can occur. | ||
| When a cluster using custom certificates adds or joins a new node to itself, the new node must interact with an existing node. | ||
| This interaction requires both the existing node and the new node to verify each other's identity using their chains of trust. | ||
| Therefore, certificates of the existing and new node must have a common CA in their trust chain. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Therefore, certificates of the existing and new node must have a common CA in their trust chain.
They don't have to have common CA.
But rather cluster and the-node-to-be-added should have each others root (CA) certificates added to their trust store. Basically they should trust each other.
Say A joins B. Then A should have B's root certificate added to A's trusted store. And B should have A's root certificate added to B's trusted store.
In most cases it is satisfied automatically because usually all certs are issued by the same CA (so root cert is the same). But in some cases CA can be different (CA certs are rotated periodically, users also can switch from one CA to abother, etc...)
| Therefore, certificates of the existing and new node must have a common CA in their trust chain. | ||
| In most cases, you make sure the nodes can identify each other by signing them with the cluster certificate or the same intermediate certificate. | ||
| If, for some reason, you cannot use the same certificate to sign the node's certificates, you must concatenate the intermediate certificates to each node's certificate. | ||
| This concatenation make sure the nodes can find a common CA in their chain of trust to identify each other. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If, for some reason, you cannot use the same certificate to sign the node's certificates, you must concatenate the intermediate certificates to each node's certificate.
This concatenation make sure the nodes can find a common CA in their chain of trust to identify each other.
I am not sure I understand these phrases. Probably we need to discuss it.
Or we can remove it.
bfavini
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job! Looks good.
… to another branch.
Moved indexing improvement out from under XDCR.
bryandmc
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So the sections I looked at specifically were the ones regarding change of ciphers, change of available tlsMinVersion numbers and gave the rest a quick read and it seems fine to me. Please have other's finish their reviews since I didn't go into detail into sections I didn't cover originally.
* Added setting to cause second-level headings to appear in the What's New topic, to allow for easier navigation. * Fixed some Vale-flagged issues in What's New.
This PR covers several certificate/encryption-related features:
Overview of changes, with links to the preview site: