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
- Replace fabricated failure-category strings (EXPIRED_CERT,
HOSTNAME_MISMATCH, HANDSHAKE_TIMEOUT) with the six real runner
categories: dns, connect, timeout, handshake, hostname, chain.
Note that an expired cert is a failure state (daysUntilExpiry < 0),
not a separate category.
- Fix accordion titles to describe behavior rather than invented enums.
- Clarify security baseline runs only on a successful handshake and
certificate verification, not on hostname/chain failure.
- Fix ">= threshold" wording: "above which" → "at or above which" for
degradedResponseTime and maxResponseTime; add 0–30,000 ms range.
- Add sslClientCertificateId as an explicit SslConfig ResponseField
in the construct reference.
- Expand weak-signature algorithm list to include MD2-RSA and
ECDSA-SHA1 (matching baseline.go isWeakSignature).
TLS handshake time in milliseconds above which the monitor is marked as degraded (warning state). Must be ≤ `maxResponseTime`.
140
+
TLS handshake time in milliseconds at or above which the monitor is marked as degraded (warning state). Range: 0–30,000 ms. Must be ≤ `maxResponseTime`.
The ID of the stored client certificate to present during the TLS handshake. Required when `clientCertificateMode` is `'explicit'`. Client certificates are managed under **Settings → Client Certificates** in the Checkly dashboard.
Copy file name to clipboardExpand all lines: detect/uptime-monitoring/ssl-monitors/configuration.mdx
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,7 @@ Client certificates are stored at the account level under **Settings → Client
41
41
42
42
### Security Baseline
43
43
44
-
The security baseline is a configurable rule set that evaluates the negotiated TLS session against best-practice requirements. It runs automatically on every check and produces a **verdict** (`pass` / `warn` / `fail`) and a **grade** (`A-`, `B`, or `F`).
44
+
The security baseline is a configurable rule set that evaluates the negotiated TLS session against best-practice requirements. It runs on each successful handshake and certificate verification, and produces a **verdict** (`pass` / `warn` / `fail`) and a **grade** (`A-`, `B`, or `F`). It is skipped when an earlier step fails (e.g. hostname mismatch or chain untrusted).
45
45
46
46
You can override the default severity for each rule:
47
47
@@ -92,8 +92,8 @@ For more details, see our documentation on [Assertions](/detect/assertions).
92
92
93
93
Set performance thresholds based on the TLS handshake duration:
94
94
95
-
***Degraded After:** Handshake time (in milliseconds) above which the monitor is marked as degraded but not failed. Default: 3,000 ms.
96
-
***Failed After:** Handshake time above which the monitor fails. Must be greater than or equal to the degraded threshold. Default: 10,000 ms.
95
+
***Degraded After:** Handshake time (in milliseconds) at or above which the monitor is marked as degraded but not failed. Range: 0–30,000 ms. Default: 3,000 ms.
96
+
***Failed After:** Handshake time at or above which the monitor fails. Must be greater than or equal to the degraded threshold. Range: 0–30,000 ms. Default: 10,000 ms.
Copy file name to clipboardExpand all lines: detect/uptime-monitoring/ssl-monitors/overview.mdx
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ Each SSL monitor run performs the following steps:
26
26
2.**TCP connect** — A TCP connection is opened to the target host and port (default: 443)
27
27
3.**TLS handshake** — A full TLS handshake is performed; an optional SNI server name override can be sent during this step
28
28
4.**Certificate inspection** — The leaf certificate and chain are examined: expiry date, hostname verification, chain trust, signature algorithm, key size, SANs, and fingerprints are all captured
29
-
5.**Security baseline evaluation** — A configurable rule set evaluates the negotiated protocol (TLS version, cipher suite, CA trust) and produces a per-rule verdict plus an overall **grade** and **verdict** (`pass` / `warn` / `fail`)
29
+
5.**Security baseline evaluation** — On a successful handshake and certificate verification, a configurable rule set evaluates the negotiated protocol (TLS version, cipher suite, CA trust) and produces a per-rule verdict plus an overall **grade** and **verdict** (`pass` / `warn` / `fail`). The baseline is skipped when an earlier step fails (e.g. hostname mismatch or chain untrusted).
30
30
6.**Assertions** — Optional assertions are evaluated against the certificate and handshake data
31
31
32
32
## SSL Monitor Results
@@ -35,7 +35,7 @@ Select a specific check run to inspect its results:
35
35
36
36
***Summary:** Shows the target hostname and port, the monitor state (passed, degraded, or failed), and the TLS handshake time
37
37
38
-
***Error details:** If the run failed, the error category and message explain what went wrong (e.g., `EXPIRED_CERT`, `HOSTNAME_MISMATCH`, `HANDSHAKE_TIMEOUT`)
38
+
***Error details:** If the run failed, the error category and message explain what went wrong. Categories map to the stage where the failure occurred: `dns` (name resolution), `connect` (TCP connection), `timeout` or `handshake` (TLS handshake), `hostname` (certificate does not cover the monitored hostname), or `chain` (certificate chain not trusted). An expired certificate surfaces as a failure via a negative `daysUntilExpiry` value rather than a separate category.
39
39
40
40
***Handshake data:** The negotiated TLS version, cipher suite, and handshake duration in milliseconds
41
41
@@ -49,13 +49,13 @@ Learn more in our documentation on [Results](/concepts/results).
49
49
50
50
## The Security Baseline
51
51
52
-
The security baseline is a built-in rule set that evaluates each handshake against current best practices without requiring explicit assertions. Rules cover:
52
+
The security baseline is a built-in rule set that evaluates each successful handshake and certificate verification against current best practices without requiring explicit assertions. Rules cover:
53
53
54
54
| Rule | Default severity | What it checks |
55
55
|------|-----------------|----------------|
56
56
|`minTLSVersion`|`fail`| Negotiated TLS version is at or above the required minimum |
57
57
|`minKeySizeBits`|`fail`| RSA key size meets the required minimum |
58
-
|`weakSignatureAlgorithm`|`fail`| No non-root certificate in the chain uses MD2, MD5, SHA-1, or DSA-SHA1 |
58
+
|`weakSignatureAlgorithm`|`fail`| No non-root certificate in the chain uses MD2-RSA, MD5-RSA, SHA1-RSA, DSA-SHA1, or ECDSA-SHA1 |
59
59
|`weakCipherSuite`|`fail`| The negotiated cipher suite is not in the known-weak list |
60
60
|`knownBadCA`|`fail`| No certificate in the chain was issued by a distrusted CA |
61
61
|`recommendedTLSVersion`|`ignore` (advisory) | Negotiated version meets the recommended minimum |
@@ -75,14 +75,14 @@ You can override the default severity for each rule or disable the baseline enti
75
75
76
76
## Troubleshooting Common Issues
77
77
78
-
<Accordiontitle="The monitor fails with HOSTNAME_MISMATCH but the site loads fine in a browser">
79
-
This can happen when a server hosts multiple certificates and the default certificate served to Checkly does not cover the monitored hostname. Use the **SNI server name** (`serverName`) option in the SSL config to explicitly request the certificate for your hostname.
78
+
<Accordiontitle="Hostname verification failed but the site loads fine in a browser">
79
+
This can happen when a server hosts multiple certificates and the default certificate served to Checkly does not cover the monitored hostname. The runner reports this as failure category `hostname`. Use the **SNI server name** (`serverName`) option in the SSL config to explicitly request the certificate for your hostname.
80
80
81
81
If the certificate is legitimately shared across hostnames (e.g. a wildcard `*.example.com` that covers `api.example.com`) and hostname verification still fails, confirm the SAN list on the certificate contains the monitored hostname.
82
82
</Accordion>
83
83
84
-
<Accordiontitle="The monitor fails with CHAIN_UNTRUSTED">
85
-
A chain trust failure means one or more intermediate certificates are missing or the root is not trusted. Common causes:
84
+
<Accordiontitle="Certificate chain is not trusted">
85
+
A chain trust failure (failure category `chain`) means one or more intermediate certificates are missing or the root is not trusted. Common causes:
86
86
87
87
* The server is not sending the full intermediate chain — verify with `openssl s_client -connect hostname:443 -showcerts`
88
88
* The certificate was issued by a CA whose root was recently distrusted (e.g. Entrust 2024)
0 commit comments