diff --git a/docs/guides/postgres-ssl.md b/docs/guides/postgres-ssl.md
new file mode 100644
index 0000000000000..f1934b60e907d
--- /dev/null
+++ b/docs/guides/postgres-ssl.md
@@ -0,0 +1,77 @@
+# Configure Coder to connect to PostgreSQL using SSL
+
+
+February 24, 2024
+
+---
+
+Your organization may require connecting to the database instance over SSL. To
+supply Coder with the appropriate certificates, and have it connect over SSL,
+follow the steps below:
+
+## Client verification (server verifies the client)
+
+1. Create the certificate as a secret in your Kubernetes cluster, if not already
+ present:
+
+```shell
+kubectl create secret tls postgres-certs -n coder --key="postgres.key" --cert="postgres.crt"
+```
+
+1. Define the secret volume and volumeMounts in the Helm chart:
+
+```yaml
+coder:
+ volumes:
+ - name: "pg-certs-mount"
+ secret:
+ secretName: "postgres-certs"
+ volumeMounts:
+ - name: "pg-certs-mount"
+ mountPath: "$HOME/.postgresql"
+ readOnly: true
+```
+
+1. Lastly, your PG connection URL will look like:
+
+```shell
+postgres://:@databasehost:/?sslmode=require&sslcert="$HOME/.postgresql/postgres.crt&sslkey=$HOME/.postgresql/postgres.key"
+```
+
+## Server verification (client verifies the server)
+
+1. Download the CA certificate chain for your database instance, and create it
+ as a secret in your Kubernetes cluster, if not already present:
+
+```shell
+kubectl create secret tls postgres-certs -n coder --key="postgres-root.key" --cert="postgres-root.crt"
+```
+
+1. Define the secret volume and volumeMounts in the Helm chart:
+
+```yaml
+coder:
+ volumes:
+ - name: "pg-certs-mount"
+ secret:
+ secretName: "postgres-certs"
+ volumeMounts:
+ - name: "pg-certs-mount"
+ mountPath: "$HOME/.postgresql/postgres-root.crt"
+ readOnly: true
+```
+
+1. Lastly, your PG connection URL will look like:
+
+```shell
+postgres://:@databasehost:/?sslmode=verify-full&sslrootcert="/home/coder/.postgresql/postgres-root.crt"
+```
+
+> More information on connecting to PostgreSQL databases using certificates can
+> be found
+> [here](https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-CLIENTCERT).
diff --git a/docs/install/kubernetes.md b/docs/install/kubernetes.md
index 4458ae17b7ab6..654b902aa983a 100644
--- a/docs/install/kubernetes.md
+++ b/docs/install/kubernetes.md
@@ -198,6 +198,8 @@ Your organization may require connecting to the database instance over SSL. To
supply Coder with the appropriate certificates, and have it connect over SSL,
follow the steps below:
+### Client verification (server verifies the client)
+
1. Create the certificate as a secret in your Kubernetes cluster, if not already
present:
@@ -222,7 +224,36 @@ coder:
1. Lastly, your PG connection URL will look like:
```shell
-postgres://:@databasehost:/?sslmode=require&sslcert=$HOME/.postgresql/postgres.crt&sslkey=$HOME/.postgresql/postgres.key"
+postgres://:@databasehost:/?sslmode=require&sslcert="$HOME/.postgresql/postgres.crt&sslkey=$HOME/.postgresql/postgres.key"
+```
+
+### Server verification (client verifies the server)
+
+1. Download the CA certificate chain for your database instance, and create it
+ as a secret in your Kubernetes cluster, if not already present:
+
+```shell
+kubectl create secret tls postgres-certs -n coder --key="postgres-root.key" --cert="postgres-root.crt"
+```
+
+1. Define the secret volume and volumeMounts in the Helm chart:
+
+```yaml
+coder:
+ volumes:
+ - name: "pg-certs-mount"
+ secret:
+ secretName: "postgres-certs"
+ volumeMounts:
+ - name: "pg-certs-mount"
+ mountPath: "$HOME/.postgresql/postgres-root.crt"
+ readOnly: true
+```
+
+1. Lastly, your PG connection URL will look like:
+
+```shell
+postgres://:@databasehost:/?sslmode=verify-full&sslrootcert="/home/coder/.postgresql/postgres-root.crt"
```
> More information on connecting to PostgreSQL databases using certificates can
diff --git a/docs/manifest.json b/docs/manifest.json
index 4bfaf6aadb64a..1b70f9147d950 100644
--- a/docs/manifest.json
+++ b/docs/manifest.json
@@ -1060,6 +1060,11 @@
"description": "Creating ImagePullSecrets for private registries",
"path": "./guides/image-pull-secret.md"
},
+ {
+ "title": "Postgres SSL",
+ "description": "Configure Coder to connect to Postgres over SSL",
+ "path": "./guides/postgres-ssl.md"
+ },
{
"title": "Azure Federation",
"description": "Federating Coder to Azure",