LIBRESSL-SSL_CTX_ADD_EXTRA_CHAIN_CERT(3)
π NAME β the squad π
Okay so bestie, this is the SSL_CTX_ADD_EXTRA_CHAIN_(3) page from the Library Functions Manual, and it is giving βcertificate chain management but make it group chat.β β¨ The main characters are SSL_CTX_add_extra_chain_cert, SSL_CTX_get_extra_chain_certs_only, SSL_CTX_get_extra_chain_certs, and SSL_CTX_clear_extra_chain_certs β they add, retrieve, and clear extra chain certificates. Periodt. π
πΈ SYNOPSIS β the call sheet πΈ
No cap, here is exactly how these look:
library βlibsslβ libcrypto #include <openssl/ssl.h>
long
SSL_CTX_add_extra_chain_cert(SSL_CTX *ctx, X509 *x509);
long
SSL_CTX_get_extra_chain_certs_only(SSL_CTX *ctx,
STACK_OF(X509) **certs);
long
SSL_CTX_get_extra_chain_certs(SSL_CTX *ctx, STACK_OF(X509) **certs);
long
SSL_CTX_clear_extra_chain_certs(SSL_CTX *ctx);
π¦ DESCRIPTION β the tea π¦
SSL_CTX_add_extra_chain_cert()β adds the certificatex509to the extra chain certificates associated withctx. Several certificates can be added one after another, like stacking cute little charms on a bracelet. πSSL_CTX_get_extra_chain_certs_only()β retrieves an internal pointer to the stack of extra chain certificates associated withctx, or set*certstoNULLif there are none. Very βhere is the pointer, bestieβ energy. π«ΆSSL_CTX_get_extra_chain_certs()β does the same except that it retrieves an internal pointer to the chain associated with the certificate if there are no extra chain certificates. Lowkey the fallback friend. πSSL_CTX_clear_extra_chain_certs()β clears all extra chain certificates associated withctx. Poof, gone, iconic cleanup. β¨
Plot twist: these functions are implemented as macros. πͺ
When sending a certificate chain, extra chain certificates are sent in order following the end entity certificate. So the order matters, bestie β no chaotic random shuffle. π
If no chain is specified, the library will try to complete the chain from the available CA certificates in the trusted CA storage, see SSL_CTX_load_verify_locations(3).
Memory tea β: the x509 certificate provided to SSL_CTX_add_extra_chain_cert() will be freed by the library when the SSL_CTX is destroyed. An application should not free the x509 object, nor the *certs object retrieved by SSL_CTX_get_extra_chain_certs(). Do not be the friend who double-frees. π
π₯ RETURN VALUES β the vibe check π₯
These functions return 1 on success or 0 for failure. Check out the error stack to find out the reason for failure. Bestie, 0 is not the slay outcome β go read the error stack. π
π SEE ALSO β go read these next π
ssl(3)SSL_CTX_add1_chain_cert(3)SSL_CTX_ctrl(3)SSL_CTX_load_verify_locations(3)SSL_CTX_set_client_cert_cb(3)SSL_CTX_use_certificate(3)
π HISTORY β the lore π
SSL_CTX_add_extra_chain_cert()β first appeared inSSLeay 0.9.1and has been available sinceOpenBSD 2.6.SSL_CTX_get_extra_chain_certs()andSSL_CTX_clear_extra_chain_certs()β first appeared inOpenSSL 1.0.1and have been available sinceOpenBSD 5.3.SSL_CTX_get_extra_chain_certs_only()β first appeared inOpenSSL 1.0.2and has been available sinceOpenBSD 6.7.
β οΈ CAVEATS β real talk β οΈ
Certificates added with SSL_CTX_add_extra_chain_cert() are ignored when certificates are also available that have been added using the functions documented in SSL_CTX_set1_chain(3). That is a big βnot me being ignoredβ moment. π
Only one set of extra chain certificates can be specified per SSL_CTX structure using SSL_CTX_add_extra_chain_cert(). Different chains for different certificates (for example if both RSA and ECDSA certificates are specified by the same server) or different SSL structures with the same parent SSL_CTX require using the functions documented in SSL_CTX_set1_chain(3) instead. So if you need multiple chains, this single-set situation is not it β use the SSL_CTX_set1_chain(3) functions. π
Okay that is the whole page, bestie π«Ά β this one is from Debian, dated June 8, 2025, and the footer tag is SSL_CTX_ADD_EXTRA_CHAIN_CERT(3). Stay iconic and chain on. ππ
π¦ where this page comes from
- alpine 3.24: libressl-doc 4.3.1-r0 Β· custom
- arch rolling: libressl 4.4.0-1 Β· ISC AND custom:OpenSSL
- Copyright (c) 2000, 2002, 2013, 2015 The OpenSSL Project
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms