I did not find an optional setting to allow ".invalid" root domain extension. But I checked the leafnode (1.11.11) source code and found the following validatefqdn.c
(see below).
So I fear, that leafnode (at least at default? Did not find an option to disable this check) always ignores RFC 2606 root domain extensions?
`/** Check the supplied FQDN for validity.
\return 0 if invalid, 1 if valid
*/
int is_validfqdn(const char f) {
/ do not let us fool by trailing dots */
char *fqdn = strdup(f);
if (!fqdn) return 0;
while (fqdn[strlen(fqdn)-1] == '.')
fqdn[strlen(fqdn)-1] = '\0';
if (/* reject unqualified names */
!(strchr(fqdn, '.'))
/* Red Hat list the FQDN on the same line as localhost, thus,
* the qualification returns two "localhost*" aliases */
|| 0 == strncasecmp(fqdn, "localhost", 9)
/* protect against broken hosts or DNS */
|| 0 == strncmp(fqdn, "127.", 4)
/* SuSE default hostname on some installs is linux.local */
|| 0 == strcasecmp(fqdn, "linux.local")
/* kill RFC 2606 second- and top-level domains */
|| 0 == strcasecmpsuffix(fqdn, "example.org")
|| 0 == strcasecmpsuffix(fqdn, "example.com")
|| 0 == strcasecmpsuffix(fqdn, "example.net")
|| 0 == strcasecmpsuffix(fqdn, ".example")
|| 0 == strcasecmpsuffix(fqdn, ".invalid")
|| 0 == strcasecmpsuffix(fqdn, ".local")
|| 0 == strcasecmpsuffix(fqdn, ".localdomain")
|| 0 == strcasecmpsuffix(fqdn, ".localhost")
|| 0 == strcasecmpsuffix(fqdn, ".test")
|| 0 == strcasecmpsuffix(fqdn, ".site")
)
{
free(fqdn);
return 0;
}`