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: docs/core/config/auth/passdb.md
+39Lines changed: 39 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,9 @@ dovecotlinks:
18
18
passdb_result_values:
19
19
hash: result-values
20
20
text: "passdb: Result Values"
21
+
passdb_check_client_fp:
22
+
hash: check-client-fp
23
+
text: "passdb: check_client_fp Extra field"
21
24
---
22
25
23
26
# Password Databases (`passdb`)
@@ -442,6 +445,42 @@ a load spike of everybody getting logged in at exactly the same time.
442
445
443
446
Do not perform any authentication, just store extra fields if user is found.
444
447
448
+
##### `check_client_fp`
449
+
450
+
Match client certificate or public key fingerprint.
451
+
452
+
This is intended to replace CA certificates with verifying client certificates using fingerprints, or to enforce
453
+
that particular public key or certificate is being used.
454
+
455
+
To enable this feature, you need to configure:
456
+
457
+
*[[setting,auth_ssl_require_client_cert,yes]]
458
+
*[[setting,ssl_peer_certificate_fingerprint_hash,sha256]], or some other valid hash
459
+
*[[setting,ssl_server_request_client_cert,any-cert]] if you don't want to validate cert against certificate authority
460
+
461
+
::warning If CA certificates are not used, a passdb must provide a valid check_client_fp (or variant) to validate the
462
+
client certificate. If none is provided, the authentication will fail.
463
+
464
+
When feature is enabled, and certificate has not been validated by certificate authority (or is self-signed), at least one passdb must successfully match the fingerprint, otherwise the whole authentication will fail with "Client didn't present valid SSL certificate".
465
+
466
+
If your certificate is authenticated by certificate authority, using any of the fingerprint matching keywords will fail that passdb if the fingerprint does not match, but next password database can still authenticate the user. Note though that none of the passdbs are required to successfully match the fingerprint in this case.
467
+
468
+
##### `check_client_cert_fp`
469
+
470
+
Match client certificate fingerprint. See [[setting,ssl_peer_certificate_fingerprint_hash]].
471
+
472
+
Certificate fingerprint is calculated by taking hash value of DER encoded X509 client certificate.
473
+
474
+
See [[link,passdb_check_client_fp]]
475
+
476
+
##### `check_client_pubkey_fp
477
+
`
478
+
Match client public key fingerprint (but not certificate). See [[setting,ssl_peer_certificate_fingerprint_hash]].
479
+
480
+
Public key fingerprint is calculated by taking hash value of DER encoded certificate public key.
481
+
482
+
See [[link,passdb_check_client_fp]]
483
+
445
484
#### `forward_<anything>`
446
485
447
486
In a proxy, pass the variable to the next hop (backend) as
Copy file name to clipboardExpand all lines: docs/core/settings/variables.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -287,6 +287,8 @@ See also:
287
287
|`ssl_security`| TLS session security string. If HAProxy is configured and it terminated the TLS connection, contains "(proxied)". |
288
288
|`ssl_ja3`|[[link,ssl_ja3]] composed from TLS Client Hello. |
289
289
|`ssl_ja3_hash`| MD5 hash from [[link,ssl_ja3]] composed from TLS Client Hello. |
290
+
|`ssl_client_cert_fp`|[[setting,ssl_peer_certificate_fingerprint_hash]] of client certificate. |
291
+
|`ssl_client_cert_pubkey_fp`|[[setting,ssl_peer_certificate_fingerprint_hash]] of client certificate public key. |
290
292
|`mail_pid`| PID for process that handles the mail session post-login. |
291
293
|`original_user`| Same as `user`, except using the original username the client sent before any changes by auth process. With master user logins (also with [[setting,auth_master_user_separator]] based logins),this contains only the original master username. |
292
294
|`listener`| Socket listener name as specified in config file, which accepted the client connection. |
@@ -322,6 +324,8 @@ See also:
322
324
|`password`| Cleartext password from cleartext authentication mechanism. |
323
325
|`secured`| "TLS" with established SSL/TLS connections, "secured" with secured connections (see: [[setting,ssl]]). Otherwise empty. |
324
326
|`ssl_ja3_hash`| MD5 hash from JA3 string composed from TLS Client Hello. |
327
+
|`ssl_client_cert_fp`|[[setting,ssl_peer_certificate_fingerprint_hash]] of client certificate. |
328
+
|`ssl_client_cert_pubkey_fp`|[[setting,ssl_peer_certificate_fingerprint_hash]] of client certificate public key. |
325
329
|`cert`| "valid" if client had sent a valid client certificate, otherwise empty. |
326
330
|`login_user`| For master user logins: Logged in user@domain. |
327
331
|`master_user`| For master user logins: The master username. |
0 commit comments