[GH-ISSUE #5386] Support Custom TLS Certificates per Reverse Proxy Domain #11143

Open
opened 2026-08-05 01:28:38 -04:00 by saavagebueno · 4 comments
Owner

Originally created by @ScarsTRF on GitHub (Feb 18, 2026).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/5386

Is your feature request related to a problem? Please describe.
The built-in reverse proxy automatically issues certs for every domain via ACME HTTP-01 challenge with no way to opt out. When Cloudflare's proxy is enabled, this challenge always fails because Cloudflare intercepts the request before it reaches the origin. Even when the cert does issue, Cloudflare Full (Strict) mode can still reject it inconsistently since it can't always verify the origin cert. The only workaround is downgrading to Full (non-strict), which removes origin cert validation and opens the connection up to potential IP changes or man-in-the-middle attacks.

Describe the solution you'd like
Allow custom TLS certificates to be provided per domain. For example, you would be able to provide that when adding a custom domain under the reverse proxy on the dashboard. When a custom cert is present, the internal ACME client should skip that domain entirely. This would let users provide something like a Cloudflare Origin Certificate, making Full (Strict) mode work properly.

Describe alternatives you've considered

  • Cloudflare Full (non-strict) mode avoids the handshake error but skips origin cert validation, leaving the connection vulnerable to IP changes or man-in-the-middle attacks.
  • Disabling the Cloudflare proxy entirely loses DDoS protection, WAF, and bot filtering, which is the whole point of having it.

Additional context
Self-hosted setups often rely on Cloudflare for DDoS, bot, and vulnerability protection. The current auto-ACME behavior makes the reverse proxy incompatible with this when Full (Strict) is required. Custom cert support per domain would make this a viable option for those use cases.

Originally created by @ScarsTRF on GitHub (Feb 18, 2026). Original GitHub issue: https://github.com/netbirdio/netbird/issues/5386 **Is your feature request related to a problem? Please describe.** The built-in reverse proxy automatically issues certs for every domain via ACME HTTP-01 challenge with no way to opt out. When Cloudflare's proxy is enabled, this challenge always fails because Cloudflare intercepts the request before it reaches the origin. Even when the cert does issue, Cloudflare Full (Strict) mode can still reject it inconsistently since it can't always verify the origin cert. The only workaround is downgrading to Full (non-strict), which removes origin cert validation and opens the connection up to potential IP changes or man-in-the-middle attacks. **Describe the solution you'd like** Allow custom TLS certificates to be provided per domain. For example, you would be able to provide that when adding a custom domain under the reverse proxy on the dashboard. When a custom cert is present, the internal ACME client should skip that domain entirely. This would let users provide something like a Cloudflare Origin Certificate, making Full (Strict) mode work properly. **Describe alternatives you've considered** - Cloudflare Full (non-strict) mode avoids the handshake error but skips origin cert validation, leaving the connection vulnerable to IP changes or man-in-the-middle attacks. - Disabling the Cloudflare proxy entirely loses DDoS protection, WAF, and bot filtering, which is the whole point of having it. **Additional context** Self-hosted setups often rely on Cloudflare for DDoS, bot, and vulnerability protection. The current auto-ACME behavior makes the reverse proxy incompatible with this when Full (Strict) is required. Custom cert support per domain would make this a viable option for those use cases.
saavagebueno added the feature-request label 2026-08-05 01:28:38 -04:00
Author
Owner

@xD3adGh0stx commented on GitHub (Feb 19, 2026):

You mean like, when you enable the ->

Image

Because that is the issue that I have. When I enable it, things stop working, like domains that one time became unreachable. I couldn't add new certificates in NetBird; it kept loading
, which is very annoying since now my VPS is shown with a DNS lookup.

If i read it wrong, I am sorry my english is not the best

<!-- gh-comment-id:3925781494 --> @xD3adGh0stx commented on GitHub (Feb 19, 2026): You mean like, when you enable the -> <img width="176" height="98" alt="Image" src="https://github.com/user-attachments/assets/5697977a-1ed6-4395-a68b-22ca9380a984" /> Because that is the issue that I have. When I enable it, things stop working, like domains that one time became unreachable. I couldn't add new certificates in NetBird; it kept loading , which is very annoying since now my VPS is shown with a DNS lookup. If i read it wrong, I am sorry my english is not the best
Author
Owner

@ScarsTRF commented on GitHub (Feb 19, 2026):

@xD3adGh0stx exactly! This would be something that can fix it once setup properly. You can still temporarily get around it by setting your TLS type to Full (Non-Strict), but back to the reason this is requested in the first place, it slowly defeats the purpose of a proxy to protect you in the first place and so on.

I don't know how easily we can apply this to say the main netbird.example.com if that also worries you, because that needs to be dns only for your WireGuard connections from peers as Cloudflare doesn't support, to my knowledge, those kinds of connections. This feature request is primarily for the new Reverse Proxy feature.

<!-- gh-comment-id:3925827590 --> @ScarsTRF commented on GitHub (Feb 19, 2026): @xD3adGh0stx exactly! This would be something that can fix it once setup properly. You can still temporarily get around it by setting your TLS type to Full (Non-Strict), but back to the reason this is requested in the first place, it slowly defeats the purpose of a proxy to protect you in the first place and so on. I don't know how easily we can apply this to say the main `netbird.example.com` if that also worries you, because that needs to be dns only for your WireGuard connections from peers as Cloudflare doesn't support, to my knowledge, those kinds of connections. This feature request is primarily for the new Reverse Proxy feature.
Author
Owner

@xD3adGh0stx commented on GitHub (Feb 19, 2026):

@ScarsTRF My knowledge is not very high of how these things work. The only thing I would like to see, or find out if it already exists, is just to hide my VPS IP and have a good connection speed, and normally I use Cloudflare proxy for this. but now i have everything on DNS only, so the
cname * proxy.domein dns only
cname proxy netbird.domein dns only
A netbird vpsIP dns only

<!-- gh-comment-id:3925866898 --> @xD3adGh0stx commented on GitHub (Feb 19, 2026): @ScarsTRF My knowledge is not very high of how these things work. The only thing I would like to see, or find out if it already exists, is just to hide my VPS IP and have a good connection speed, and normally I use Cloudflare proxy for this. but now i have everything on DNS only, so the cname * proxy.domein dns only cname proxy netbird.domein dns only A netbird vpsIP dns only
Author
Owner

@ScarsTRF commented on GitHub (Feb 19, 2026):

@xD3adGh0stx No I understand, I should've stated this my issue about this clearer, was in a rush, but this is for mainly all domains such as *.proxy.example.com, proxy.example.com and if you have a custom domain e.g. selfhost.com you can have all those behind CF's proxy and use the certificate the Cloudflare provides in their TLS/SSL section so Cloudflare can trust your VPS without your NetBird Reverse Proxy trying to make a LetsEncrypt for each service you add and instead just let Cloudflare handle that on its proxy.

Right now, mainly so I can have a simpler subdomain, I have my 1 singular domain setup as such

A netbird.example.com -> VPS IP
CNAME proxy.example.com -> netbird.example.com
CNAME *.proxy.example.com -> netbird.example.com
CNAME *.example.com -> proxy.example.com

That last CNAME basically says that for me wiki.example.com works and will show up, I did this so I wouldn't have to have wiki.proxy.example.com. This whole feature request will have all of those CNAME records on Cloudflare proxied, The orange cloud icon, enabled and will have your services behind Cloudflare's perfections and will hide your VPS's IP.

The only time it won't hide your VPS IP is for the A record as I mentioned in my last comment:

I don't know how easily we can apply this to say the main netbird.example.com if that also worries you, because that needs to be dns only for your WireGuard connections from peers as Cloudflare doesn't support, to my knowledge, those kinds of connections. This feature request is primarily for the new Reverse Proxy feature.

Wireguard, which is how the peers connect to each other and to the relay, cannot go through Cloudflare's proxy network "to my knowledge".

<!-- gh-comment-id:3926001912 --> @ScarsTRF commented on GitHub (Feb 19, 2026): @xD3adGh0stx No I understand, I should've stated this my issue about this clearer, was in a rush, but this is for mainly all domains such as `*.proxy.example.com`, `proxy.example.com` and if you have a custom domain `e.g. selfhost.com` you can have all those behind CF's proxy and use the certificate the Cloudflare provides in their TLS/SSL section so Cloudflare can trust your VPS without your NetBird Reverse Proxy trying to make a LetsEncrypt for each service you add and instead just let Cloudflare handle that on its proxy. Right now, mainly so I can have a simpler subdomain, I have my 1 singular domain setup as such A `netbird.example.com` -> VPS IP CNAME `proxy.example.com` -> `netbird.example.com` CNAME `*.proxy.example.com` -> `netbird.example.com` CNAME `*.example.com` -> `proxy.example.com` That last CNAME basically says that for me `wiki.example.com` works and will show up, I did this so I wouldn't have to have `wiki.proxy.example.com`. This whole feature request will have all of those CNAME records on Cloudflare proxied, The orange cloud icon, enabled and will have your services behind Cloudflare's perfections and will hide your VPS's IP. The only time it won't hide your VPS IP is for the A record as I mentioned in my last comment: > I don't know how easily we can apply this to say the main netbird.example.com if that also worries you, because that needs to be dns only for your WireGuard connections from peers as Cloudflare doesn't support, to my knowledge, those kinds of connections. This feature request is primarily for the new Reverse Proxy feature. Wireguard, which is how the peers connect to each other and to the relay, cannot go through Cloudflare's proxy network "to my knowledge".
Sign in to join this conversation.
No Label feature-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#11143