The branch, master has been updated
       via  499656a0501 s4:lib/tls: add additional dns hostnames as 
GNUTLS_SAN_DNSNAME for self-signed certificates
       via  49e179963f5 s4:lib/tls: set GNUTLS_SAN_DNSNAME for self-signed 
certificates
       via  6116bc64961 s4:lib/tls: let tstream_tls_params_server_lpcfg() use 
lpcfg_dns_hostname() internally
      from  ddac5c999f4 winbindd: CID 1508963 Fixing print statement for time_t

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 499656a05011a462b2e44faea7318a02c847de5e
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Aug 26 15:22:10 2025 +0200

    s4:lib/tls: add additional dns hostnames as GNUTLS_SAN_DNSNAME for 
self-signed certificates
    
    It's better to include X509v3 Subject Alternative Name with
    DNS names also for additional dns hostnames.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15899
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <me...@samba.org>
    Autobuild-Date(master): Tue Aug 26 22:00:26 UTC 2025 on atb-devel-224

commit 49e179963f56e749dac4e20284dc567e382ccdb2
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Aug 26 11:55:40 2025 +0200

    s4:lib/tls: set GNUTLS_SAN_DNSNAME for self-signed certificates
    
    It's better to include X509v3 Subject Alternative Name with
    DNS names in the self-signed certificate...
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15899
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 6116bc64961fb2330df5ff4256b4ef75dca08cf0
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Aug 26 11:22:43 2025 +0200

    s4:lib/tls: let tstream_tls_params_server_lpcfg() use lpcfg_dns_hostname() 
internally
    
    This is simpler and the next step will also make use of
    lpcfg_additional_dns_hostnames() too...
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15899
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/server.c             |  8 --------
 source4/ldap_server/ldap_server.c | 10 ----------
 source4/ldap_server/ldap_server.h |  1 -
 source4/lib/tls/tls.h             |  3 ++-
 source4/lib/tls/tls_tstream.c     |  6 ++++--
 source4/lib/tls/tlscert.c         | 16 ++++++++++++++++
 6 files changed, 22 insertions(+), 22 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index f7f55420c00..f31ea894600 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -255,21 +255,13 @@ static NTSTATUS smb_parent_load_tls_certificates(struct 
smbd_parent_context *par
                                                 struct loadparm_context 
*lp_ctx)
 {
        struct tstream_tls_params *quic_tlsp = NULL;
-       const char *dns_hostname = NULL;
        NTSTATUS status;
 
        if (parent == NULL) {
                return NT_STATUS_INTERNAL_ERROR;
        }
 
-       dns_hostname = lpcfg_dns_hostname(lp_ctx);
-       if (dns_hostname == NULL) {
-               DBG_ERR("ERROR: lpcfg_dns_hostname() failed\n");
-               return NT_STATUS_INTERNAL_ERROR;
-       }
-
        status = tstream_tls_params_server_lpcfg(parent,
-                                                dns_hostname,
                                                 lp_ctx,
                                                 &quic_tlsp);
        if (!NT_STATUS_IS_OK(status)) {
diff --git a/source4/ldap_server/ldap_server.c 
b/source4/ldap_server/ldap_server.c
index bc3d7cef883..ced56aafd83 100644
--- a/source4/ldap_server/ldap_server.c
+++ b/source4/ldap_server/ldap_server.c
@@ -1324,7 +1324,6 @@ static void ldap_reload_certs(struct imessaging_context 
*msg_ctx,
 
        /* reload certificates */
        status = tstream_tls_params_server_lpcfg(ldap_service,
-                                                ldap_service->dns_host_name,
                                                 ldap_service->lp_ctx,
                                                 &new_tls_params);
        if (!NT_STATUS_IS_OK(status)) {
@@ -1432,18 +1431,9 @@ static NTSTATUS ldapsrv_task_init(struct task_server 
*task)
        ldap_service->current_ev = task->event_ctx;
        ldap_service->current_msg = task->msg_ctx;
 
-       ldap_service->dns_host_name = talloc_asprintf(ldap_service, "%s.%s",
-                                       lpcfg_netbios_name(task->lp_ctx),
-                                       lpcfg_dnsdomain(task->lp_ctx));
-       if (ldap_service->dns_host_name == NULL) {
-               status = NT_STATUS_NO_MEMORY;
-               goto failed;
-       }
-
        ldap_service->parent_pid = getpid();
 
        status = tstream_tls_params_server_lpcfg(ldap_service,
-                                                ldap_service->dns_host_name,
                                                 ldap_service->lp_ctx,
                                                 &ldap_service->tls_params);
        if (!NT_STATUS_IS_OK(status)) {
diff --git a/source4/ldap_server/ldap_server.h 
b/source4/ldap_server/ldap_server.h
index 4e833bea592..e47859d2b23 100644
--- a/source4/ldap_server/ldap_server.h
+++ b/source4/ldap_server/ldap_server.h
@@ -115,7 +115,6 @@ struct ldapsrv_call {
 #define LDAP_SERVER_MAX_CHUNK_SIZE ((size_t)(25 * 1024 * 1024))
 
 struct ldapsrv_service {
-       const char *dns_host_name;
        pid_t parent_pid;
        struct tstream_tls_params *tls_params;
        struct tevent_queue *call_queue;
diff --git a/source4/lib/tls/tls.h b/source4/lib/tls/tls.h
index 2fc74f75c29..d8354911402 100644
--- a/source4/lib/tls/tls.h
+++ b/source4/lib/tls/tls.h
@@ -28,6 +28,7 @@ struct loadparm_context;
 
 void tls_cert_generate(TALLOC_CTX *mem_ctx,
                       const char *hostname,
+                      const char * const *additional_hostnames,
                       const char *keyfile, const char *certfile,
                       const char *cafile);
 
@@ -75,6 +76,7 @@ NTSTATUS tstream_tls_params_quic_prepare(struct 
tstream_tls_params *tlsp);
 
 NTSTATUS tstream_tls_params_server(TALLOC_CTX *mem_ctx,
                                   const char *dns_host_name,
+                                  const char * const *additional_dns_hostnames,
                                   bool enabled,
                                   const char *key_file,
                                   const char *cert_file,
@@ -84,7 +86,6 @@ NTSTATUS tstream_tls_params_server(TALLOC_CTX *mem_ctx,
                                   const char *tls_priority,
                                   struct tstream_tls_params **_params);
 NTSTATUS tstream_tls_params_server_lpcfg(TALLOC_CTX *mem_ctx,
-                                        const char *dns_host_name,
                                         struct loadparm_context *lp_ctx,
                                         struct tstream_tls_params **_params);
 
diff --git a/source4/lib/tls/tls_tstream.c b/source4/lib/tls/tls_tstream.c
index 1206bbdd58e..f91388947c2 100644
--- a/source4/lib/tls/tls_tstream.c
+++ b/source4/lib/tls/tls_tstream.c
@@ -1516,6 +1516,7 @@ int tstream_tls_connect_recv(struct tevent_req *req,
 */
 NTSTATUS tstream_tls_params_server(TALLOC_CTX *mem_ctx,
                                   const char *dns_host_name,
+                                  const char * const *additional_dns_hostnames,
                                   bool enabled,
                                   const char *key_file,
                                   const char *cert_file,
@@ -1566,6 +1567,7 @@ NTSTATUS tstream_tls_params_server(TALLOC_CTX *mem_ctx,
 
        if (!file_exist(ca_file)) {
                tls_cert_generate(tlsp, dns_host_name,
+                                 additional_dns_hostnames,
                                  key_file, cert_file, ca_file);
        }
 
@@ -1680,7 +1682,6 @@ NTSTATUS tstream_tls_params_server(TALLOC_CTX *mem_ctx,
 }
 
 NTSTATUS tstream_tls_params_server_lpcfg(TALLOC_CTX *mem_ctx,
-                                        const char *dns_host_name,
                                         struct loadparm_context *lp_ctx,
                                         struct tstream_tls_params **_tlsp)
 {
@@ -1688,7 +1689,8 @@ NTSTATUS tstream_tls_params_server_lpcfg(TALLOC_CTX 
*mem_ctx,
        NTSTATUS status;
 
        status = tstream_tls_params_server(mem_ctx,
-                                          dns_host_name,
+                                          lpcfg_dns_hostname(lp_ctx),
+                                          
lpcfg_additional_dns_hostnames(lp_ctx),
                                           lpcfg_tls_enabled(lp_ctx),
                                           lpcfg_tls_keyfile(frame, lp_ctx),
                                           lpcfg_tls_certfile(frame, lp_ctx),
diff --git a/source4/lib/tls/tlscert.c b/source4/lib/tls/tlscert.c
index 69a4189dedf..08386166a55 100644
--- a/source4/lib/tls/tlscert.c
+++ b/source4/lib/tls/tlscert.c
@@ -39,6 +39,7 @@
 */
 void tls_cert_generate(TALLOC_CTX *mem_ctx, 
                       const char *hostname, 
+                      const char * const *additional_hostnames,
                       const char *keyfile, const char *certfile,
                       const char *cafile)
 {
@@ -50,6 +51,7 @@ void tls_cert_generate(TALLOC_CTX *mem_ctx,
        size_t bufsize;
        size_t keyidsize = sizeof(keyid);
        time_t activation = time(NULL), expiry = activation + LIFETIME;
+       size_t adhn_idx;
        int ret;
 
        if (file_exist(keyfile) || file_exist(certfile) || file_exist(cafile)) {
@@ -110,6 +112,20 @@ void tls_cert_generate(TALLOC_CTX *mem_ctx,
        TLSCHECK(gnutls_x509_crt_set_dn_by_oid(crt,
                                      GNUTLS_OID_X520_COMMON_NAME, 0,
                                      hostname, strlen(hostname)));
+       TLSCHECK(gnutls_x509_crt_set_subject_alt_name(crt, GNUTLS_SAN_DNSNAME,
+                                                     hostname, 
strlen(hostname),
+                                                     GNUTLS_FSAN_SET));
+       for (adhn_idx = 0;
+            additional_hostnames != NULL &&
+            additional_hostnames[adhn_idx] != NULL;
+            adhn_idx++)
+       {
+               const char *adhn = additional_hostnames[adhn_idx];
+
+               TLSCHECK(gnutls_x509_crt_set_subject_alt_name(crt, 
GNUTLS_SAN_DNSNAME,
+                                                             adhn, 
strlen(adhn),
+                                                             
GNUTLS_FSAN_APPEND));
+       }
        TLSCHECK(gnutls_x509_crt_set_key(crt, key));
        TLSCHECK(gnutls_x509_crt_set_serial(crt, &serial, sizeof(serial)));
        TLSCHECK(gnutls_x509_crt_set_activation_time(crt, activation));


-- 
Samba Shared Repository

Reply via email to