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
@@ -820,6 +821,31 @@ Profiles are forwarded to the CA only if the provider reports `supportsProfiles(
820
821
821
822
---
822
823
824
+
## Preferred chain selection
825
+
826
+
Some CAs offer multiple certificate chains via `Link: rel="alternate"` headers (RFC 8555 §7.4.2). Let's Encrypt uses this to serve both the ISRG Root X1 chain and older cross-signed chains.
827
+
828
+
Use `->preferredChain()` to request a specific chain by matching against the Common Name or Organisation of the intermediate certificates. The match is a case-insensitive substring, so partial names work fine.
829
+
830
+
```php
831
+
// Prefer the ISRG Root X1 chain (shorter, no DST cross-signature)
832
+
CoyoteCert::with(new LetsEncrypt())
833
+
->identifiers('example.com')
834
+
->challenge(new Http01Handler('/var/www/html'))
835
+
->preferredChain('ISRG Root X1')
836
+
->issueOrRenew();
837
+
```
838
+
839
+
If no alternate chain matches, CoyoteCert falls back to the default chain returned by the CA — so this call is always safe to include even when the CA offers only one chain.
840
+
841
+
When using the low-level API directly, pass the preference as a second argument to `getBundle()`:
0 commit comments