Cloudflare changelogs | SSL/TLSCloudflare changelogs for SSL/TLShttps://developers.cloudflare.com/changelog/SSL/TLS - Certificate Transparency Monitoring is now Generally Availablehttps://developers.cloudflare.com/changelog/post/2026-08-13-ct-monitoring-ga/https://developers.cloudflare.com/changelog/post/2026-08-13-ct-monitoring-ga/<p>Certificate Transparency Monitoring is now <a href="https://blog.cloudflare.com/certificate-transparency-monitoring-ga" target="_blank" rel="noopener">generally available<span class="external-link"> ↗</span></a> across all Cloudflare plans.</p> <p>Alerts for certificates Cloudflare issues on your behalf (Universal SSL renewals, backup certificates, Advanced Certificate Manager, Total TLS) are now automatically filtered out. Alert emails are also clearer and more actionable, with structured certificate details and a direct link to manage CT Monitoring in the Cloudflare dashboard.</p> <p>Learn more in the <a href="https://blog.cloudflare.com/certificate-transparency-monitoring-ga" target="_blank" rel="noopener">launch blog post<span class="external-link"> ↗</span></a> or the <a href="https://developers.cloudflare.com/ssl/edge-certificates/additional-options/certificate-transparency-monitoring/">CT Monitoring docs</a>.</p>Thu, 13 Aug 2026 00:00:00 GMTSSL/TLSSSL/TLSSSL/TLS - Faster and more secure TLS handshakes to your origins, automaticallyhttps://developers.cloudflare.com/changelog/post/2026-07-21-automatic-origin-key-exchange/https://developers.cloudflare.com/changelog/post/2026-07-21-automatic-origin-key-exchange/<p>Cloudflare now takes the guesswork out of TLS 1.3 key agreement with your origins. Automatic key exchange predicts the preferred algorithm and sends its key share in the first <code>ClientHello</code>, helping avoid a <code>HelloRetryRequest</code> and one extra network round trip.</p> <p>Automatic key exchange is on for all existing zones and on by default for new zones. When an origin supports both classical and post-quantum key agreements, Cloudflare prefers the post-quantum <code>X25519MLKEM768</code> hybrid key agreement.</p> <p>To change this behavior, go to <strong>SSL/TLS</strong> &gt; <strong>Overview</strong> &gt; <strong>Origin connection &amp; post-quantum encryption</strong>. Turn off <strong>Automatic key exchange</strong> to stop automatic scans and preference updates. Turning it off does not change your compliance requirements.</p> <p><strong>Compliance requirements</strong> apply only to TLS 1.3 connections. The <strong>Post-quantum hybrid</strong> option requires hybrid post-quantum key agreements support on your origin server. The <strong>Federal Information Processing Standards (FIPS)</strong> option requires FIPS-compliant key agreements. Select both to require key agreements that satisfy both, or leave both unselected to allow all supported key agreements.</p> <p>For requirements, configuration options, and rollout details, refer to <a href="https://developers.cloudflare.com/ssl/origin-configuration/automatic-key-exchange/">Automatic key exchange to origins</a>.</p>Tue, 21 Jul 2026 00:00:00 GMTSSL/TLSSSL/TLSSSL/TLS - Post-quantum ML-DSA certificates for Authenticated Origin Pulls and Custom Origin Trust Storehttps://developers.cloudflare.com/changelog/post/2026-06-17-pqc-mldsa-aop-cots/https://developers.cloudflare.com/changelog/post/2026-06-17-pqc-mldsa-aop-cots/<p>Cloudflare now accepts <a href="https://csrc.nist.gov/pubs/fips/204/final" target="_blank" rel="noopener">ML-DSA<span class="external-link"> ↗</span></a> (FIPS 204) post-quantum certificates on the connection between Cloudflare's edge and your origin server. Combined with our existing <a href="https://developers.cloudflare.com/ssl/post-quantum-cryptography/#hybrid-key-agreement">X25519MLKEM768</a> key agreement, this lets you establish end-to-end post-quantum authentication on the Cloudflare-to-origin connection.</p> <p>ML-DSA is supported in two origin-facing features:</p> <ul> <li><a href="https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/">Authenticated Origin Pulls</a> (AOP) — upload an ML-DSA client certificate that Cloudflare will present during the mTLS handshake to your origin. Available at both zone-level and per-hostname scopes.</li> <li><a href="https://developers.cloudflare.com/ssl/origin-configuration/custom-origin-trust-store/">Custom Origin Trust Store</a> (COTS) — upload an ML-DSA certificate authority that Cloudflare will trust when validating your origin server certificate under <a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full-strict/">Full (strict) encryption mode</a>.</li> </ul> <p>Refer to <a href="https://developers.cloudflare.com/ssl/post-quantum-cryptography/pqc-to-origin/#post-quantum-signatures">Post-quantum signatures</a> for certificate generation and setup guidance, and to <a href="https://developers.cloudflare.com/ssl/post-quantum-cryptography/pqc-cloudflare-products/">PQC in Cloudflare products</a> for the current post-quantum deployment status across Cloudflare.</p>Wed, 17 Jun 2026 00:00:00 GMTSSL/TLSSSL/TLSSSL/TLS - Manage mTLS and BYO CA certificates from the Cloudflare dashboardhttps://developers.cloudflare.com/changelog/post/2026-04-07-mtls-byoca-dashboard/https://developers.cloudflare.com/changelog/post/2026-04-07-mtls-byoca-dashboard/<p>You can now manage mutual TLS (mTLS) and Bring Your Own Certificate Authority (BYO CA) configurations directly from the Cloudflare dashboard — no API required.</p> <p>Previously, these advanced workflows required the Cloudflare API. The following are now available in the dashboard:</p> <ul> <li><strong>AOP certificate management</strong> — Upload and manage your own certificate authorities for <a href="https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/">Authenticated Origin Pulls (AOP)</a> directly from the dashboard.</li> <li><strong>BYO Client mTLS certificate management</strong> — Upload and manage your own CA certificates for <a href="https://developers.cloudflare.com/ssl/client-certificates/byo-ca/">client mTLS enforcement</a> without needing API access.</li> <li><strong>CDN hostname to client mTLS certificate mapping</strong> — Associate client mTLS certificates with specific hostnames directly from the dashboard.</li> </ul>Tue, 07 Apr 2026 00:00:00 GMTSSL/TLSSSL/TLSSecrets Store, AI Gateway, SSL/TLS - Manage and deploy your AI provider keys through Bring Your Own Key (BYOK) with AI Gateway, now powered by Cloudflare Secrets Storehttps://developers.cloudflare.com/changelog/post/2025-08-25-secrets-store-ai-gateway/https://developers.cloudflare.com/changelog/post/2025-08-25-secrets-store-ai-gateway/ <p>Cloudflare Secrets Store is now integrated with AI Gateway, allowing you to store, manage, and deploy your AI provider keys in a secure and seamless configuration through <a href="https://developers.cloudflare.com/ai-gateway/configuration/bring-your-own-keys/" target="_blank" rel="noopener">Bring Your Own Key<span class="external-link"> ↗</span></a>. Instead of passing your AI provider keys directly in every request header, you can centrally manage each key with Secrets Store and deploy in your gateway configuration using only a reference, rather than passing the value in plain text.</p> <p>You can now create a secret directly from your AI Gateway <a href="http://dash.cloudflare.com/?to=/:account/ai-gateway" target="_blank" rel="noopener">in the dashboard<span class="external-link"> ↗</span></a> by navigating into your gateway -&gt; <strong>Provider Keys</strong> -&gt; <strong>Add</strong>.</p> <img src="https://developers.cloudflare.com/cdn-cgi/image/onerror=redirect,width=2410,height=1842,format=webp/_astro/add-secret-ai-gateway.B-SIPr6s.png" alt="Import repo or choose template" loading="lazy" decoding="async" width="2410" height="1842"> <p>You can also create your secret with the newly available <strong>ai_gateway</strong> scope via <a href="https://developers.cloudflare.com/workers/wrangler/commands/" target="_blank" rel="noopener">wrangler<span class="external-link"> ↗</span></a>, the <a href="http://dash.cloudflare.com/?to=/:account/secrets-store" target="_blank" rel="noopener">Secrets Store dashboard<span class="external-link"> ↗</span></a>, or the <a href="https://developers.cloudflare.com/api/resources/secrets_store/" target="_blank" rel="noopener">API<span class="external-link"> ↗</span></a>.</p> <p>Then, pass the key in the request header using its Secrets Store reference:</p> <figure class="nb-code-figure" data-nb-lang="bash"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="bash" data-nb-lang="bash"><code><span class="line"><span class="nb-shiki-1t8gfj">curl</span><span class="nb-shiki-dzsirb"> -X</span><span class="nb-shiki-mdbnqw"> POST</span><span class="nb-shiki-mdbnqw"> https://gateway.ai.cloudflare.com/v1/</span><span class="nb-shiki-1itgoe">&lt;</span><span class="nb-shiki-mdbnqw">ACCOUNT_I</span><span class="nb-shiki-140thh">D</span><span class="nb-shiki-1itgoe">&gt;</span><span class="nb-shiki-mdbnqw">/my-gateway/anthropic/v1/messages</span><span class="nb-shiki-dzsirb"> \</span></span> <span class="line"><span class="nb-shiki-dzsirb"> --header</span><span class="nb-shiki-mdbnqw"> 'cf-aig-authorization: ANTHROPIC_KEY_1 \</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> --header 'anthropic-version:</span><span class="nb-shiki-mdbnqw"> 2023-06-01' \</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> --header 'Content-Type:</span><span class="nb-shiki-mdbnqw"> application/json' \</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> --data '{"model":</span><span class="nb-shiki-mdbnqw"> "claude-3-opus-20240229",</span><span class="nb-shiki-mdbnqw"> "messages":</span><span class="nb-shiki-140thh"> [{</span><span class="nb-shiki-1t8gfj">"role"</span><span class="nb-shiki-dzsirb">:</span><span class="nb-shiki-mdbnqw"> "user",</span><span class="nb-shiki-mdbnqw"> "content":</span><span class="nb-shiki-mdbnqw"> "What is Cloudflare?"}]}'</span></span></code></pre></figure> <p>Or, using Javascript:</p> <figure class="nb-code-figure" data-nb-lang="plaintext"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="plaintext" data-nb-lang="plaintext"><code><span class="line"><span class="nb-shiki-wvjl67">import Anthropic from '@anthropic-ai/sdk';</span></span> <span class="line"><span class="nb-shiki-wvjl67"></span></span> <span class="line"><span class="nb-shiki-wvjl67"></span></span> <span class="line"><span class="nb-shiki-wvjl67">const anthropic = new Anthropic({</span></span> <span class="line"><span class="nb-shiki-wvjl67"> apiKey: "ANTHROPIC_KEY_1",</span></span> <span class="line"><span class="nb-shiki-wvjl67"> baseURL: "https://gateway.ai.cloudflare.com/v1/&lt;ACCOUNT_ID&gt;/my-gateway/anthropic",</span></span> <span class="line"><span class="nb-shiki-wvjl67">});</span></span> <span class="line"><span class="nb-shiki-wvjl67"></span></span> <span class="line"><span class="nb-shiki-wvjl67"></span></span> <span class="line"><span class="nb-shiki-wvjl67">const message = await anthropic.messages.create({</span></span> <span class="line"><span class="nb-shiki-wvjl67"> model: 'claude-3-opus-20240229',</span></span> <span class="line"><span class="nb-shiki-wvjl67"> messages: [{role: "user", content: "What is Cloudflare?"}],</span></span> <span class="line"><span class="nb-shiki-wvjl67"> max_tokens: 1024</span></span> <span class="line"><span class="nb-shiki-wvjl67">});</span></span></code></pre></figure> <p>For more information, check out the <a href="https://blog.cloudflare.com/ai-gateway-aug-2025-refresh" target="_blank" rel="noopener">blog<span class="external-link"> ↗</span></a>!</p>Mon, 25 Aug 2025 11:00:00 GMTSecrets StoreSecrets StoreAI GatewaySSL/TLSSSL/TLS, Cloudflare for SaaS, Secrets Store - Increased limits for Cloudflare for SaaS and Secrets Store free and Pay-as-you-go planshttps://developers.cloudflare.com/changelog/post/2025-05-19-paygo-updates/https://developers.cloudflare.com/changelog/post/2025-05-19-paygo-updates/ <p>With upgraded limits to <a href="https://www.cloudflare.com/plans/" target="_blank" rel="noopener">all free and paid plans<span class="external-link"> ↗</span></a>, you can now scale more easily with <a href="https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/" target="_blank" rel="noopener">Cloudflare for SaaS<span class="external-link"> ↗</span></a> and <a href="https://developers.cloudflare.com/secrets-store/" target="_blank" rel="noopener">Secrets Store<span class="external-link"> ↗</span></a>.</p> <p><a href="https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/" target="_blank" rel="noopener">Cloudflare for SaaS<span class="external-link"> ↗</span></a> allows you to extend the benefits of Cloudflare to your customers via their own custom or vanity domains. Now, the <a href="https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/plans/" target="_blank" rel="noopener">limit for custom hostnames<span class="external-link"> ↗</span></a> on a Cloudflare for SaaS Pay-as-you-go plan has been <strong>raised from 5,000 custom hostnames to 50,000 custom hostnames.</strong></p> <p>With custom origin server -- previously an enterprise-only feature -- you can route traffic from one or more custom hostnames somewhere other than your default proxy fallback. <a href="https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/advanced-settings/custom-origin/" target="_blank" rel="noopener">Custom origin server<span class="external-link"> ↗</span></a> is now available to Cloudflare for SaaS customers on Free, Pro, and Business plans.</p> <p>You can enable custom origin server on a per-custom hostname basis <a href="https://developers.cloudflare.com/api/resources/custom_hostnames/methods/edit/" target="_blank" rel="noopener">via the API<span class="external-link"> ↗</span></a> or the UI:</p> <img src="https://developers.cloudflare.com/cdn-cgi/image/onerror=redirect,width=1896,height=1636,format=webp/_astro/custom-origin-server.B-BXcG-1.png" alt="Import repo or choose template" loading="lazy" decoding="async" width="1896" height="1636"> <p>Currently <a href="https://blog.cloudflare.com/secrets-store-beta/" target="_blank" rel="noopener">in beta with a Workers integration<span class="external-link"> ↗</span></a>, <a href="https://developers.cloudflare.com/secrets-store/" target="_blank" rel="noopener">Cloudflare Secrets Store<span class="external-link"> ↗</span></a> allows you to store, manage, and deploy account level secrets from a secure, centralized platform your <a href="https://developers.cloudflare.com/workers/" target="_blank" rel="noopener">Cloudflare Workers<span class="external-link"> ↗</span></a>. Now, you can create and deploy <strong>100 secrets per account</strong>. Try it out <a href="http://dash.cloudflare.com/?to=/:account/secrets-store" target="_blank" rel="noopener">in the dashboard<span class="external-link"> ↗</span></a>, with <a href="https://developers.cloudflare.com/secrets-store/integrations/workers/" target="_blank" rel="noopener">Wrangler<span class="external-link"> ↗</span></a>, or <a href="https://developers.cloudflare.com/api/resources/secrets_store/" target="_blank" rel="noopener">via the API<span class="external-link"> ↗</span></a> today.</p>Tue, 27 May 2025 11:00:00 GMTSSL/TLSSSL/TLSCloudflare for SaaSSecrets StoreSecrets Store, SSL/TLS - Cloudflare Secrets Store now available in Betahttps://developers.cloudflare.com/changelog/post/2025-04-09-secrets-store-beta/https://developers.cloudflare.com/changelog/post/2025-04-09-secrets-store-beta/<p>Cloudflare Secrets Store is available today in Beta. You can now store, manage, and deploy account level secrets from a secure, centralized platform to your Workers.</p> <img src="https://developers.cloudflare.com/cdn-cgi/image/onerror=redirect,width=1914,height=1536,format=webp/_astro/secrets-store-landing-page.BQoEWsq8.png" alt="Import repo or choose template" loading="lazy" decoding="async" width="1914" height="1536"> <p>To spin up your Cloudflare Secrets Store, simply click the new Secrets Store tab <a href="http://dash.cloudflare.com/?to=/:account/secrets-store" target="_blank" rel="noopener">in the dashboard<span class="external-link"> ↗</span></a> or use this Wrangler command:</p> <figure class="nb-code-figure" data-nb-lang="sh"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="sh" data-nb-lang="sh"><code><span class="line"><span class="nb-shiki-1t8gfj">wrangler</span><span class="nb-shiki-mdbnqw"> secrets-store</span><span class="nb-shiki-mdbnqw"> store</span><span class="nb-shiki-mdbnqw"> create</span><span class="nb-shiki-1itgoe"> &lt;</span><span class="nb-shiki-mdbnqw">nam</span><span class="nb-shiki-140thh">e</span><span class="nb-shiki-1itgoe">&gt;</span><span class="nb-shiki-dzsirb"> --remote</span></span></code></pre></figure> <p>The following are supported in the Secrets Store beta:</p> <ul> <li>Secrets Store UI &amp; API: create your store &amp; create, duplicate, update, scope, and delete a secret</li> <li>Workers UI: bind a new or existing account level secret to a Worker and deploy in code</li> <li>Wrangler: create your store &amp; create, duplicate, update, scope, and delete a secret</li> <li>Account Management UI &amp; API: assign Secrets Store permissions roles &amp; view audit logs for actions taken in Secrets Store core platform</li> </ul> <p>For instructions on how to get started, visit our <a href="https://developers.cloudflare.com/secrets-store/">developer documentation</a>.</p>Wed, 09 Apr 2025 00:00:00 GMTSecrets StoreSecrets StoreSSL/TLSSSL/TLS - Upload a certificate bundle with an RSA and ECDSA certificate per custom hostnamehttps://developers.cloudflare.com/changelog/post/2025-02-14-cert-bundling-for-custom-hostnames/https://developers.cloudflare.com/changelog/post/2025-02-14-cert-bundling-for-custom-hostnames/ <p>Cloudflare has supported both RSA and ECDSA certificates across our platform for a number of years. Both certificates offer the same security, but ECDSA is more performant due to a smaller key size. However, RSA is more widely adopted and ensures compatibility with legacy clients. Instead of choosing between them, you may want both – that way, ECDSA is used when clients support it, but RSA is available if not.</p> <p>Now, you can upload both an RSA and ECDSA certificate on a custom hostname via the API.</p> <figure class="nb-code-figure" data-nb-lang="plaintext"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="plaintext" data-nb-lang="plaintext"><code><span class="line"><span class="nb-shiki-wvjl67">curl -X POST https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames \</span></span> <span class="line"><span class="nb-shiki-wvjl67"> -H 'Content-Type: application/json' \</span></span> <span class="line"><span class="nb-shiki-wvjl67"> -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \</span></span> <span class="line"><span class="nb-shiki-wvjl67"> -H "X-Auth-Key: $CLOUDFLARE_API_KEY" \</span></span> <span class="line"><span class="nb-shiki-wvjl67"> -d '{</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "hostname": "hostname",</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "ssl": {</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "custom_cert_bundle": [</span></span> <span class="line"><span class="nb-shiki-wvjl67"> {</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "custom_certificate": "RSA Cert",</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "custom_key": "RSA Key"</span></span> <span class="line"><span class="nb-shiki-wvjl67"> },</span></span> <span class="line"><span class="nb-shiki-wvjl67"> {</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "custom_certificate": "ECDSA Cert",</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "custom_key": "ECDSA Key"</span></span> <span class="line"><span class="nb-shiki-wvjl67"> }</span></span> <span class="line"><span class="nb-shiki-wvjl67"> ],</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "bundle_method": "force",</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "wildcard": false,</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "settings": {</span></span> <span class="line"><span class="nb-shiki-wvjl67"> "min_tls_version": "1.0"</span></span> <span class="line"><span class="nb-shiki-wvjl67"> }</span></span> <span class="line"><span class="nb-shiki-wvjl67"> }</span></span> <span class="line"><span class="nb-shiki-wvjl67">}’</span></span></code></pre></figure> <p>You can also:</p> <ul> <li> <p><a href="https://developers.cloudflare.com/api/resources/custom_hostnames/methods/create/">Upload</a> an RSA or ECDSA certificate to a custom hostname with an existing ECDSA or RSA certificate, respectively.</p> </li> <li> <p><a href="https://developers.cloudflare.com/api/resources/custom_hostnames/subresources/certificate_pack/subresources/certificates/methods/update/">Replace</a> the RSA or ECDSA certificate with a certificate of its same type.</p> </li> <li> <p><a href="https://developers.cloudflare.com/api/resources/custom_hostnames/subresources/certificate_pack/subresources/certificates/methods/delete/">Delete</a> the RSA or ECDSA certificate (if the custom hostname has both an RSA and ECDSA uploaded).</p> </li> </ul> <p>This feature is available for Business and Enterprise customers who have purchased custom certificates.</p>Fri, 14 Feb 2025 00:00:00 GMTSSL/TLSSSL/TLS