Skip to main content

Connecting your domain to LXP Learn

How to host LXP Learn on your domain name, with SSL

Overview

Today, LemonadeLXP uses Cloudflare’s web application firewall (WAF) and advanced DDoS attack protection services to ramp up security, and the Cloudflare network and managed DNS service to achieve better speed and performance.

We have three setup options, all of which stand on Cloudflare and AWS. It's important to note that none of these packages are "security upgrades" to one another; they are simply different ways of wiring the connection.



⚠️ Before you begin: the only valid configurations

There are exactly two supported ways to wire a LemonadeLXP hostname, and they are architecturally different — not two flavors of the same thing. The approach depends on the package you select:

Package

Cloudflare mode

What you create

Target

One / Two

(Standard Package)

Full setup — Cloudflare becomes authoritative for the hostname

Two NS records

The two Cloudflare nameservers we assign you, e.g. josh.ns.cloudflare.com and sue.ns.cloudflare.com

Three

(CNAME package)

Partial setup (Cloudflare's term: CNAME setup) — you remain authoritative

One CNAME record, plus one TXT record

{your-hostname}.cdn.cloudflare.net — for example, understand.firstbank.comunderstand.firstbank.com.cdn.cloudflare.net

In Package One and Two you hand the hostname over to Cloudflare's nameservers. In Package Three you keep it and point it at Cloudflare's proxy. These are Cloudflare's own full and partial zone setups respectively, and your DNS team can read Cloudflare's documentation for either under those names.

Nothing else is supported. Specifically, the following will not work, even if they appear to work at first:

❌ Do not

Why

Create an A record pointing to any IP address

Addresses in this architecture rotate constantly. See FAQ below.

Create a CNAME pointing to one of the nameservers we gave you — e.g. josh.ns.cloudflare.com or sue.ns.cloudflare.com

Nameservers answer DNS queries. They are not web endpoints and cannot serve your site. Doing this will eventually result in an Error 1034 at the edge.

Resolve a nameserver hostname to an IP address and pin that address in an A record

Same problem as above, one step removed.

Mix the two packages — an NS delegation and a CNAME for the same hostname

The two modes are mutually exclusive. Use one.

Substitute your own Cloudflare account, proxy, or CDN in front of ours

See FAQ below.

Two Cloudflare hostnames, two completely different jobs

These look similar and are not interchangeable. This is the single most common source of misconfiguration we see.

Hostname pattern

What it is

Where it belongs

*.ns.cloudflare.com

An authoritative nameserver

NS records only. Packages One and Two.

{your-hostname}.cdn.cloudflare.net

A proxy endpoint for your specific hostname

CNAME record only. Package Three.

The .ns.cloudflare.com hostnames are shared across an enormous number of unrelated Cloudflare zones. That is precisely why none of them can be authorised to serve your specific hostname over HTTPS, and why pointing a web record at one produces Error 1034 — Edge IP Restricted.

Quick test before you save a record: if you are creating a CNAME and the target ends in .ns.cloudflare.com, stop. That value belongs in an NS record, or you are on the wrong package.

A configuration pointing a web record at a nameserver may return your site correctly for a period of time. It is still incorrect, and it will fail without warning. We have seen this happen.


Three Setup Packages

Package One: Standard

  1. You choose a subdomain (that you own) on which LemonadeLXP resides. For example, if you are https://firstbank.com, you could choose https://understand.firstbank.com.

  2. If you also have Academy, a second domain must be similarly chosen.

  3. Once you have chosen your domains, we will give you two NS addresses for each domain

  4. Your tech team creates NS records only — one per nameserver — on your DNS. Both are required.

  5. Cloudflare detects domain resolution (this can take a bit of time)

  6. We take it from here!

Package Two: Custom SSL Package

Our standard package provides Cloudflare Secure SSL. If you would like to personalize your SSL certificate, we must complete all of the steps in package one, plus:

  1. You must supply us with CSR details (we will help you with this)

  2. We generate a CSR and provide it to you

  3. You purchase the SSL cert from your approved vendor

  4. You remit the SSL certificate to us, and we install it

This package incurs additional costs per domain:

  • A monthly fee applies, as this requires a more expensive Cloudflare plan.

  • SSL installation costs apply.

Package Three: CNAME package

If you have internal red tape that prohibits NS delegation, we can resort to a more complex CNAME setup. This is Cloudflare's partial zone setup, also called CNAME setup in their documentation. You remain the authoritative DNS provider for your domain and proxy only the LemonadeLXP hostname through Cloudflare.

We will guide you through the process; this type of setup adds 2–3 days to the onboarding procedure.

Two records are required at your authoritative DNS provider:

  1. A CNAME for your LemonadeLXP hostname, pointing to that same hostname with .cdn.cloudflare.net appended. For understand.firstbank.com, the record is:

    understand.firstbank.com  CNAME  understand.firstbank.com.cdn.cloudflare.net
  2. A verification TXT record, which we supply. This proves domain ownership and activates the zone. It must remain in place for as long as your LemonadeLXP hostname is active. Removing it during a DNS cleanup or scavenging pass will deactivate the zone. Please make sure it is documented internally as a permanent record.

Also note:

  • Remove any pre-existing A, AAAA, or CNAME records for that hostname. Only the .cdn.cloudflare.net CNAME should remain.

  • Do not construct the CNAME target from a nameserver hostname. .cdn.cloudflare.net and .ns.cloudflare.com are different systems.

  • Partial setup requires a Cloudflare Business or Enterprise plan, which is why this package carries a monthly fee.

This package supports Custom SSL.

This package incurs additional costs per domain:

  • A monthly fee applies, as this requires a more expensive Cloudflare plan.

  • If a custom SSL certificate is required, SSL installation costs apply.

  • Additional engineering costs are incurred while wiring your CNAME to our infrastructure.


Internal DNS (split-horizon environments)

This section applies to most banks and credit unions. Please read it even if your external DNS is already configured.

If your organization runs internal DNS that is authoritative for your own domain — commonly an Active Directory–integrated zone — then machines on your corporate network do not use public DNS to resolve your domain. They use your internal zone. Public DNS being correct does not help them.

This means:

  • The delegation must exist in both your external and internal DNS. Configuring only one will leave one population of users broken.

  • The internal record must follow the same rules as the external one. NS delegation for Packages One and Two; the {your-hostname}.cdn.cloudflare.net CNAME for Package Three. The prohibitions above apply identically inside your network.

  • An internal A record or a CNAME to a nameserver is the single most common misconfiguration we encounter, and it is the reason a site can work perfectly from a mobile phone and fail from every desktop in the building.

For Active Directory environments, follow our step-by-step guide: Zone Delegation with Microsoft DNS.

If your internal DNS team cannot sub-delegate the hostname, forwarding that specific hostname to a public resolver is an acceptable alternative — a conditional forwarder in Windows DNS, or a zone "<hostname>" { type forward; ... }; stanza in BIND. Tell us if you plan to do this so we can note it on your account.


Verifying your configuration

Please run these checks after making the change, and send us the output. We verify delegation as part of onboarding and will ask for it.

Each check is given for both Windows DNS and BIND/Linux environments. Run whichever matches your platform.

0. Clear caches first

A correct change that appears not to work is almost always a stale cache. Clear the resolver cache before concluding anything.

Windows — on each domain controller, then on a test workstation:

Clear-DnsServerCache
ipconfig /flushdns

BIND / Linux — on the DNS server, then on a test client:

sudo rndc flush                              # BIND 
sudo unbound-control flush_zone <yourdomain> # Unbound sudo resolvectl flush-caches # systemd-resolved client

Note that a CNAME or A record you are replacing may have been cached downstream with a long TTL. Allow for the original record's TTL to expire before escalating.

1. Read the authoritative zone directly

This is the definitive check. It reads the record as configured, with no resolver caching or fallback behaviour in the way.

Windows — on a domain controller:

Get-DnsServerResourceRecord -ZoneName <yourdomain> -Name <lemonade-hostname-label>

BIND / Linux — query the authoritative server itself, bypassing recursion:

dig @<internal-dns-server-ip> <your-lemonade-hostname> NS +norecurse dig @<internal-dns-server-ip> <your-lemonade-hostname> CNAME +norecurse dig @<internal-dns-server-ip> <your-lemonade-hostname> A +norecurse

+norecurse matters — without it the server may return a cached or recursively resolved answer rather than what your zone actually contains. You can also inspect the zone file directly, or dump it with rndc dumpdb -zones.

Expected result. Packages One and Two: NS records listing both nameservers we assigned. Package Three: a single CNAME to {your-hostname}.cdn.cloudflare.net.

Anything else — particularly an A record, or a CNAME to .ns.cloudflare.comis a finding.

2. Resolve from a workstation on the corporate network

Windows:

Resolve-DnsName <your-lemonade-hostname> -Type NS -DnsOnly

Linux / macOS:

dig <your-lemonade-hostname> NS

-DnsOnly on Windows skips the hosts file, LLMNR, and NetBIOS, so you see the DNS answer rather than a local override. dig never consults those sources, so no equivalent flag is needed.

3. Confirm public resolution from outside the corporate network

Windows:

Resolve-DnsName <your-lemonade-hostname> -Type NS -Server 1.1.1.1 -DnsOnly

Linux / macOS:

dig @1.1.1.1 <your-lemonade-hostname> NS

If this succeeds and check 2 does not, the problem is in your internal zone rather than in public DNS (assuming that your internal network permits connections to Cloudflare NS on port 53, TCP).


Notes

  • If you have the Academy add-on for LLXP, the setup effort doubles because it requires its own (second) domain. You'll need to select a setup package for your Academy domain.

  • A records cannot be used under any circumstance, in internal or external DNS.

  • CNAME records pointing at a Cloudflare nameserver (*.ns.cloudflare.com) cannot be used under any circumstance, in internal or external DNS. This includes the nameservers we assign you. The only valid CNAME target is {your-hostname}.cdn.cloudflare.net, and only on Package Three.

  • Packages One/Two and Package Three are mutually exclusive zone modes. Do not create both NS and CNAME records for the same hostname.

  • If your business has both external and internal DNS servers, you must create the correct records in both places. See the Internal DNS section above.

  • ⚠️ If you have modified, or plan to modify your DNS to add CAA records, you must heed the instructions in this article.


Bringing Your Own SSL Certificate

If you chose a package with Custom SSL, there are a few things to be aware of:

  • Imported certificates do not automatically renew. We will have to repeat the certificate-exchange exercise before your certificate expires.

  • Certificate expiry will have to be actively monitored and catalogued by your IT staff. When the certificate is near expiry, they need to send us a new certificate to replace the old.

  • A fee applies to each certificate manipulation, be it for installation, or renewal.


Frequently Asked Questions

Q. How long does setup take?

Packages one and two take approximately 2 business days to setup past the point of domain resolution. Our systems need for the domain to resolve before we can complete our setup.

For package three, please plan for about 4-5 days of setup time with your DNS team on standby to handle small DNS record creation requests.

Q. I have Internal and External DNS in my workplace. Can I limit the domain records (NS, or CNAME) to internal DNS only?

No. There are two independent reasons, and both must be satisfied.

Reason one — our origin addresses are dynamic. When you access a LemonadeLXP domain:

  1. You type subdomain.yourdomain.com into your browser, which queries the authoritative DNS for yourdomain.com.

  2. Authoritative DNS returns delegated NS records for Cloudflare.

  3. Cloudflare is a reverse proxy that then queries the AWS ALB by DNS name, not by IP.

  4. The AWS ALB returns its dynamic IP addresses (these change often) to Cloudflare.

  5. Cloudflare reverse-proxies the connection and pipes the results to the browser.

Behind the scenes, the ALB does the same thing: it receives a hostname request and translates traffic to the right application fleet and its private subnets. IP addresses, in other words, change very often and can't be used as a beacon. Because there are two layers of dynamic addressing across two private networks, address translation can't meet connection requirements. We also prohibit traffic that is not signed from Cloudflare, and the rotating IP addresses of the fleet appliances sit in a private network. Direct addressing cannot solve this requirement.

Reason two — Cloudflare validates hostnames against edge addresses. Independently of the above, Cloudflare checks that the hostname in an incoming request is authorised on the specific edge address that request arrived at. A request sent to an address that does not serve your hostname is rejected at the edge with Error 1034 — Edge IP Restricted, before it reaches us at all.

This second reason is why an A record can appear to work and then stop. If you pointed at an address that happened to serve your hostname, the request succeeded. When that stops being true — and it will — every request fails at once, with no change on your side and nothing in our logs. Delegation is the only configuration immune to this.

Q. Can I CNAME to the nameservers you sent me?

No. This is a common and understandable mistake, so it is worth being explicit.

The hostnames ending in .ns.cloudflare.com are authoritative nameservers. Their job is to answer DNS queries about your hostname. They are not web servers, they do not serve your site, and they are shared across a very large number of unrelated Cloudflare zones — which is precisely why none of them can be authorised to serve your specific hostname over HTTPS.

Pointing a CNAME or an A record at one produces Error 1034 — Edge IP Restricted, either immediately or at some unpredictable point in the future.

If you are on Package One or Two, those hostnames belong in NS records and nowhere else. If you are on Package Three, you will not use them at all — your CNAME target is {your-hostname}.cdn.cloudflare.net, which is a proxy endpoint scoped to your specific hostname and is an entirely different system.

Q. Our DNS platform won't let me create an NS delegation. What are my options?

Tell us, and we will work through it with you. Depending on your environment:

  • Forwarding just that hostname to a public resolver is often the simplest path — a conditional forwarder in Active Directory, or a type forward zone in BIND.

  • Package Three (CNAME) exists for exactly this situation.

What we ask is that you not improvise a substitute. Every failure of this kind we have investigated originated in a well-intentioned workaround that appeared to work.

Q. I have Internal and External DNS in my workplace. Can I limit the domain records (NS, or CNAME) to internal DNS only?

No — records are required in both places, and for different reasons.

The hostnames used in the request are a core component of instance identification. Where an internal record satisfies humans accessing the application servers, many microservice callbacks that depend on resolution would fail if the records weren't public. For example, if Lambda attempts to leverage a reprocessing callback for the target instance, it will get DNS resolution failures when trying to invoke any instance-level APIs.

Conversely, external records alone will not serve your corporate users, because machines on your network resolve your domain through your internal zone rather than public DNS.

If the intention is to limit access to employees, we can use Cloudflare rules to restrict access to specific ingress points. It remains that the domain name must be visible to all parts of our infrastructure. Let us know if you'd like to explore this approach.

Q. I want Academy, but for internal use only — is that possible?

Yes. Under this circumstance, every learner that accesses Academy will need to register into LemonadeLXP, and visit the academy internally through the LemonadeLXP header. In this type of setup, we do not need to complete the DNS component that yields the standard public view.

Q. Do I need Cloudflare? Can I use my own firewall instead — we much prefer (insert other solution here)

Unfortunately that wouldn't be an option. We need to govern our firewall rules as the application evolves. We also need to manage the firewall in response to threat events in realtime, and to be able to corroborate firewall data to SIEM data. Losing this corroboration would significantly compromise our security posture.

We're open to adding IP-based rules to conform to your organization's needs if you'd like to limit IP access, but we must govern the security appliance that protects our infrastructure.

Q. We already have a Cloudflare account. Can I just proxy your domain using our account?

No. Our implementation requires us to maintain control of the WAF (Web Application Firewall) and ingress points for all our tenants. This is a crucial security requirement that allows us to provide consistent protection and management across our entire platform (and is also a component for SOC). It's necessary for your tenant zone to exist under our purview.

Q. Why should I get onto Cloudflare?

The short answer is: it's required.

The longer answer is that after an exhaustive and careful review of all available cloud-based security appliances, we chose Cloudflare to be an integral component of our network security stack. Beyond being what we believe is the best WAF on the market, it also provides a breadth of network optimization features that we've enmeshed with our service stack.

The combination of Cloudflare, AWS Shield, and AWS GuardDuty is integral to our security posture. Protecting your instance and data is of the utmost importance. Cloudflare's principal tasks are to:

  • Centralize the view of our first line of defense across all our instances.

  • Provide zero-day vulnerability detection.

  • Provide DDoS protection. Cloudflare was named a leader in the GigaOm Radar Report for DDoS Protection and has also received the highest number of 'high' ratings with Gartner when compared to 6 other DDoS vendors.

  • Provide a beachhead for our WAF requirements (read more about what Cloudflare's WAF does here). "Fuzzing" and unauthorized scanning of our infrastructure has increased drastically over the years — and it's only getting worse. So far, Cloudflare has been the only solution to reliably detect and mitigate every DDoS and WAF surface attack we've witnessed.

  • Provide advanced bot management. Bot-based attacks are increasing year over year, and Cloudflare reliably stops them in their tracks without impeding valid traffic.

  • PageShield is leveraged to prevent software supply chain attacks.

  • Cloudflare Rate Limiting is also used to prevent attacks on authentication endpoints.

  • We also rely on Cloudflare to negotiate SSL for LemonadeLXP, in an E2E encryption configuration all the way to the application fleet using Authenticated Origin Pulls.

  • The Cloudflare Security Center is integral to our asset enumeration policies. It also performs regular scans on our behalf to ensure that network-level configurations match required baselines.

  • Cloudflare Analytics are integral to our security posture, with SOPs wired to have our teams react to what Cloudflare detects with its advanced detection capabilities.

That's just the tip of the iceberg — it does so much more, such as connection resumption, lossless image compression, automatic minification, 0-RTT, and HTTP/2 prioritization.

Did this answer your question?