Revert "Add notBefore and notAfter to SSL cert info display"
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Thu, 20 Jul 2023 15:18:12 +0000 (17:18 +0200)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Thu, 20 Jul 2023 15:18:12 +0000 (17:18 +0200)
Due to an oversight in reviewing, this used functionality not
compatible with old versions of OpenSSL.

This reverts commit 75ec5e7bec700577d39d653c316e3ae6c505842c.

18 files changed:
contrib/sslinfo/Makefile
contrib/sslinfo/meson.build
contrib/sslinfo/sslinfo--1.2--1.3.sql [deleted file]
contrib/sslinfo/sslinfo.c
contrib/sslinfo/sslinfo.control
doc/src/sgml/monitoring.sgml
doc/src/sgml/sslinfo.sgml
src/backend/catalog/system_views.sql
src/backend/libpq/be-secure-openssl.c
src/backend/utils/activity/backend_status.c
src/backend/utils/adt/pgstatfuncs.c
src/include/catalog/catversion.h
src/include/catalog/pg_proc.dat
src/include/libpq/libpq-be.h
src/include/utils/backend_status.h
src/test/regress/expected/rules.out
src/test/ssl/t/001_ssltests.pl
src/test/ssl/t/003_sslinfo.pl

index 78a5a83d5c45e44e6132388b46dd81b5f4d09655..dd1ff83b16d19adddd42806bec68b6ada3eabbd1 100644 (file)
@@ -6,7 +6,7 @@ OBJS = \
        sslinfo.o
 
 EXTENSION = sslinfo
-DATA = sslinfo--1.2--1.3.sql sslinfo--1.2.sql sslinfo--1.1--1.2.sql sslinfo--1.0--1.1.sql
+DATA = sslinfo--1.2.sql sslinfo--1.1--1.2.sql sslinfo--1.0--1.1.sql
 PGFILEDESC = "sslinfo - information about client SSL certificate"
 
 ifdef USE_PGXS
index 215b01daffde9aa9c3530db5173842678d79598c..999456d3a42b32a677d06cd15322740c54d6c53a 100644 (file)
@@ -26,7 +26,6 @@ install_data(
   'sslinfo--1.0--1.1.sql',
   'sslinfo--1.1--1.2.sql',
   'sslinfo--1.2.sql',
-  'sslinfo--1.2--1.3.sql',
   'sslinfo.control',
   kwargs: contrib_data_args,
 )
diff --git a/contrib/sslinfo/sslinfo--1.2--1.3.sql b/contrib/sslinfo/sslinfo--1.2--1.3.sql
deleted file mode 100644 (file)
index 9d64d2b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* contrib/sslinfo/sslinfo--1.2--1.3.sql */
-
--- complain if script is sourced in psql, rather than via CREATE EXTENSION
-\echo Use "CREATE EXTENSION sslinfo" to load this file. \quit
-
-CREATE FUNCTION ssl_client_get_notbefore() RETURNS timestamp
-AS 'MODULE_PATHNAME', 'ssl_client_get_notbefore'
-LANGUAGE C STRICT PARALLEL RESTRICTED;
-
-CREATE FUNCTION ssl_client_get_notafter() RETURNS timestamp
-AS 'MODULE_PATHNAME', 'ssl_client_get_notafter'
-LANGUAGE C STRICT PARALLEL RESTRICTED;
index e4ecf78889f6e223355a8373f4f2037ddbcef885..5fd46b9874138d407bc97cbff627153b4a336162 100644 (file)
@@ -18,7 +18,6 @@
 #include "libpq/libpq-be.h"
 #include "miscadmin.h"
 #include "utils/builtins.h"
-#include "utils/timestamp.h"
 
 /*
  * On Windows, <wincrypt.h> includes a #define for X509_NAME, which breaks our
@@ -35,7 +34,6 @@ PG_MODULE_MAGIC;
 
 static Datum X509_NAME_field_to_text(X509_NAME *name, text *fieldName);
 static Datum ASN1_STRING_to_text(ASN1_STRING *str);
-static Datum ASN1_TIME_to_timestamp(ASN1_TIME *time);
 
 /*
  * Function context for data persisting over repeated calls.
@@ -227,39 +225,6 @@ X509_NAME_field_to_text(X509_NAME *name, text *fieldName)
 }
 
 
-/*
- * Converts OpenSSL ASN1_TIME structure into timestamp
- *
- * Parameter: time - OpenSSL ASN1_TIME structure.
- *
- * Returns Datum, which can be directly returned from a C language SQL
- * function.
- */
-static Datum
-ASN1_TIME_to_timestamp(ASN1_TIME * time)
-{
-       struct tm       tm_time;
-       struct pg_tm pgtm_time;
-       Timestamp       ts;
-
-       ASN1_TIME_to_tm(time, &tm_time);
-
-       pgtm_time.tm_sec = tm_time.tm_sec;
-       pgtm_time.tm_min = tm_time.tm_min;
-       pgtm_time.tm_hour = tm_time.tm_hour;
-       pgtm_time.tm_mday = tm_time.tm_mday;
-       pgtm_time.tm_mon = tm_time.tm_mon + 1;
-       pgtm_time.tm_year = tm_time.tm_year + 1900;
-
-       if (tm2timestamp(&pgtm_time, 0, NULL, &ts))
-               ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                                errmsg("failed to convert tm to timestamp")));
-
-       PG_RETURN_TIMESTAMP(ts);
-}
-
-
 /*
  * Returns specified field of client certificate distinguished name
  *
@@ -517,35 +482,3 @@ ssl_extension_info(PG_FUNCTION_ARGS)
        /* All done */
        SRF_RETURN_DONE(funcctx);
 }
-
-/*
- * Returns current client certificate notBefore timestamp in
- * timestamp data type
- */
-PG_FUNCTION_INFO_V1(ssl_client_get_notbefore);
-Datum
-ssl_client_get_notbefore(PG_FUNCTION_ARGS)
-{
-       X509       *cert = MyProcPort->peer;
-
-       if (!MyProcPort->ssl_in_use || !MyProcPort->peer_cert_valid)
-               PG_RETURN_NULL();
-
-       return ASN1_TIME_to_timestamp(X509_get_notBefore(cert));
-}
-
-/*
- * Returns current client certificate notAfter timestamp in
- * timestamp data type
- */
-PG_FUNCTION_INFO_V1(ssl_client_get_notafter);
-Datum
-ssl_client_get_notafter(PG_FUNCTION_ARGS)
-{
-       X509       *cert = MyProcPort->peer;
-
-       if (!MyProcPort->ssl_in_use || !MyProcPort->peer_cert_valid)
-               PG_RETURN_NULL();
-
-       return ASN1_TIME_to_timestamp(X509_get_notAfter(cert));
-}
index b53e95b7da8f4804fc78afc9a1e8ac0bbf3e14a8..c7754f924cf440d9111c5b376ea88c2df85434bc 100644 (file)
@@ -1,5 +1,5 @@
 # sslinfo extension
 comment = 'information about SSL certificates'
-default_version = '1.3'
+default_version = '1.2'
 module_pathname = '$libdir/sslinfo'
 relocatable = true
index 42c7808f50501bf55cf8c0a89ea639f88a1d81d9..588b720f57e3f93be7c8f887a8da87eb73ad86ea 100644 (file)
@@ -2257,26 +2257,6 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
        This field is truncated like <structfield>client_dn</structfield>.
       </para></entry>
      </row>
-
-     <row>
-      <entry role="catalog_table_entry"><para role="column_definition">
-       <structfield>not_before</structfield> <type>text</type>
-      </para>
-      <para>
-       Not before UTC timestamp of the client certificate, or NULL if no client
-       certificate was supplied.
-      </para></entry>
-     </row>
-
-     <row>
-      <entry role="catalog_table_entry"><para role="column_definition">
-       <structfield>not_after</structfield> <type>text</type>
-      </para>
-      <para>
-       Not after UTC timestamp of the client certificate, or NULL if no client
-       certificate was supplied.
-      </para></entry>
-     </row>
     </tbody>
    </tgroup>
   </table>
index 06f5728096e95b4797f061d18da95cac5fbec355..85d49f66537cf03dec6801f8ff16500bfc4bd9b0 100644 (file)
@@ -240,36 +240,6 @@ emailAddress
     </para>
     </listitem>
    </varlistentry>
-
-   <varlistentry>
-    <term>
-     <function>ssl_client_get_notbefore() returns text</function>
-     <indexterm>
-      <primary>ssl_client_get_notbefore</primary>
-     </indexterm>
-    </term>
-    <listitem>
-    <para>
-     Return the <structfield>not before</structfield> UTC timestamp of the client
-     certificate.
-    </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     <function>ssl_client_get_notafter() returns text</function>
-     <indexterm>
-      <primary>ssl_client_get_notafter</primary>
-     </indexterm>
-    </term>
-    <listitem>
-    <para>
-     Return the <structfield>not after</structfield> UTC timestamp of the client
-     certificate.
-    </para>
-    </listitem>
-   </varlistentry>
   </variablelist>
  </sect2>
 
index f7c2cfb8cd53612ac5787b650c8724c8c18a716d..af65af6bdd5c2f21a4c50bb0896a1ccda61525dd 100644 (file)
@@ -970,9 +970,7 @@ CREATE VIEW pg_stat_ssl AS
             S.sslbits AS bits,
             S.ssl_client_dn AS client_dn,
             S.ssl_client_serial AS client_serial,
-            S.ssl_issuer_dn AS issuer_dn,
-            S.ssl_not_before AS not_before,
-            S.ssl_not_after AS not_after
+            S.ssl_issuer_dn AS issuer_dn
     FROM pg_stat_get_activity(NULL) AS S
     WHERE S.client_port IS NOT NULL;
 
index b3bbfb3c0823ed338e2f688edecaee945f40b4c2..658b09988d6c9eaca5b5a5201d4a3f3563f72409 100644 (file)
@@ -36,7 +36,6 @@
 #include "tcop/tcopprot.h"
 #include "utils/builtins.h"
 #include "utils/memutils.h"
-#include "utils/timestamp.h"
 
 /*
  * These SSL-related #includes must come after all system-provided headers.
@@ -73,7 +72,6 @@ static bool initialize_ecdh(SSL_CTX *context, bool isServerStart);
 static const char *SSLerrmessage(unsigned long ecode);
 
 static char *X509_NAME_to_cstring(X509_NAME *name);
-static Timestamp ASN1_TIME_to_timestamp(ASN1_TIME *time);
 
 static SSL_CTX *SSL_context = NULL;
 static bool SSL_initialized = false;
@@ -1408,24 +1406,6 @@ be_tls_get_peer_issuer_name(Port *port, char *ptr, size_t len)
                ptr[0] = '\0';
 }
 
-void
-be_tls_get_peer_not_before(Port *port, Timestamp *ptr)
-{
-       if (port->peer)
-               *ptr = ASN1_TIME_to_timestamp(X509_get_notBefore(port->peer));
-       else
-               *ptr = 0;
-}
-
-void
-be_tls_get_peer_not_after(Port *port, Timestamp *ptr)
-{
-       if (port->peer)
-               *ptr = ASN1_TIME_to_timestamp(X509_get_notAfter(port->peer));
-       else
-               *ptr = 0;
-}
-
 void
 be_tls_get_peer_serial(Port *port, char *ptr, size_t len)
 {
@@ -1569,33 +1549,6 @@ X509_NAME_to_cstring(X509_NAME *name)
        return result;
 }
 
-/*
- * Convert an ASN1_TIME to a Timestamp
- */
-static Timestamp
-ASN1_TIME_to_timestamp(ASN1_TIME * time)
-{
-       struct tm       tm_time;
-       struct pg_tm pgtm_time;
-       Timestamp       ts;
-
-       ASN1_TIME_to_tm(time, &tm_time);
-
-       pgtm_time.tm_sec = tm_time.tm_sec;
-       pgtm_time.tm_min = tm_time.tm_min;
-       pgtm_time.tm_hour = tm_time.tm_hour;
-       pgtm_time.tm_mday = tm_time.tm_mday;
-       pgtm_time.tm_mon = tm_time.tm_mon + 1;
-       pgtm_time.tm_year = tm_time.tm_year + 1900;
-
-       if (tm2timestamp(&pgtm_time, 0, NULL, &ts))
-               ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                                errmsg("timestamp out of range")));
-
-       return ts;
-}
-
 /*
  * Convert TLS protocol version GUC enum to OpenSSL values
  *
index 02dc9d7931ffe80a8584af9397ae13a485090bd6..38f91a495b8eabf28299e56e610fc2febd518aa0 100644 (file)
@@ -367,8 +367,6 @@ pgstat_bestart(void)
                be_tls_get_peer_subject_name(MyProcPort, lsslstatus.ssl_client_dn, NAMEDATALEN);
                be_tls_get_peer_serial(MyProcPort, lsslstatus.ssl_client_serial, NAMEDATALEN);
                be_tls_get_peer_issuer_name(MyProcPort, lsslstatus.ssl_issuer_dn, NAMEDATALEN);
-               be_tls_get_peer_not_before(MyProcPort, &lsslstatus.ssl_not_before);
-               be_tls_get_peer_not_after(MyProcPort, &lsslstatus.ssl_not_after);
        }
        else
        {
index 9071981f98552d3b5bd2955f0c5914dfe55fc8c2..2a4c8ef87ff4e5a5d85ca83852ef2c01ff35eed2 100644 (file)
@@ -303,7 +303,7 @@ pg_stat_get_progress_info(PG_FUNCTION_ARGS)
 Datum
 pg_stat_get_activity(PG_FUNCTION_ARGS)
 {
-#define PG_STAT_GET_ACTIVITY_COLS      33
+#define PG_STAT_GET_ACTIVITY_COLS      31
        int                     num_backends = pgstat_fetch_stat_numbackends();
        int                     curr_backend;
        int                     pid = PG_ARGISNULL(0) ? -1 : PG_GETARG_INT32(0);
@@ -395,7 +395,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
                        pfree(clipped_activity);
 
                        /* leader_pid */
-                       nulls[31] = true;
+                       nulls[29] = true;
 
                        proc = BackendPidGetProc(beentry->st_procpid);
 
@@ -432,8 +432,8 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
                                 */
                                if (leader && leader->pid != beentry->st_procpid)
                                {
-                                       values[31] = Int32GetDatum(leader->pid);
-                                       nulls[31] = false;
+                                       values[29] = Int32GetDatum(leader->pid);
+                                       nulls[29] = false;
                                }
                                else if (beentry->st_backendType == B_BG_WORKER)
                                {
@@ -441,8 +441,8 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
 
                                        if (leader_pid != InvalidPid)
                                        {
-                                               values[31] = Int32GetDatum(leader_pid);
-                                               nulls[31] = false;
+                                               values[29] = Int32GetDatum(leader_pid);
+                                               nulls[29] = false;
                                        }
                                }
                        }
@@ -587,45 +587,35 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
                                        values[24] = CStringGetTextDatum(beentry->st_sslstatus->ssl_issuer_dn);
                                else
                                        nulls[24] = true;
-
-                               if (beentry->st_sslstatus->ssl_not_before != 0)
-                                       values[25] = TimestampGetDatum(beentry->st_sslstatus->ssl_not_before);
-                               else
-                                       nulls[25] = true;
-
-                               if (beentry->st_sslstatus->ssl_not_after != 0)
-                                       values[26] = TimestampGetDatum(beentry->st_sslstatus->ssl_not_after);
-                               else
-                                       nulls[26] = true;
                        }
                        else
                        {
                                values[18] = BoolGetDatum(false);       /* ssl */
-                               nulls[19] = nulls[20] = nulls[21] = nulls[22] = nulls[23] = nulls[24] = nulls[25] = nulls[26] = true;
+                               nulls[19] = nulls[20] = nulls[21] = nulls[22] = nulls[23] = nulls[24] = true;
                        }
 
                        /* GSSAPI information */
                        if (beentry->st_gss)
                        {
-                               values[27] = BoolGetDatum(beentry->st_gssstatus->gss_auth); /* gss_auth */
-                               values[28] = CStringGetTextDatum(beentry->st_gssstatus->gss_princ);
-                               values[29] = BoolGetDatum(beentry->st_gssstatus->gss_enc);      /* GSS Encryption in use */
-                               values[30] = BoolGetDatum(beentry->st_gssstatus->gss_delegation);       /* GSS credentials
+                               values[25] = BoolGetDatum(beentry->st_gssstatus->gss_auth); /* gss_auth */
+                               values[26] = CStringGetTextDatum(beentry->st_gssstatus->gss_princ);
+                               values[27] = BoolGetDatum(beentry->st_gssstatus->gss_enc);      /* GSS Encryption in use */
+                               values[28] = BoolGetDatum(beentry->st_gssstatus->gss_delegation);       /* GSS credentials
                                                                                                                                                                         * delegated */
                        }
                        else
                        {
-                               values[27] = BoolGetDatum(false);       /* gss_auth */
-                               nulls[28] = true;       /* No GSS principal */
-                               values[29] = BoolGetDatum(false);       /* GSS Encryption not in
+                               values[25] = BoolGetDatum(false);       /* gss_auth */
+                               nulls[26] = true;       /* No GSS principal */
+                               values[27] = BoolGetDatum(false);       /* GSS Encryption not in
                                                                                                         * use */
-                               values[30] = BoolGetDatum(false);       /* GSS credentials not
+                               values[28] = BoolGetDatum(false);       /* GSS credentials not
                                                                                                         * delegated */
                        }
                        if (beentry->st_query_id == 0)
-                               nulls[32] = true;
+                               nulls[30] = true;
                        else
-                               values[32] = UInt64GetDatum(beentry->st_query_id);
+                               values[30] = UInt64GetDatum(beentry->st_query_id);
                }
                else
                {
@@ -655,8 +645,6 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
                        nulls[28] = true;
                        nulls[29] = true;
                        nulls[30] = true;
-                       nulls[31] = true;
-                       nulls[32] = true;
                }
 
                tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc, values, nulls);
index d17b1d8f9a1eea0ef3a48f2c362fa884d24f9bb2..d5969e6aea2fc23a6b0d57ce8da5951171706f76 100644 (file)
@@ -57,6 +57,6 @@
  */
 
 /*                                                     yyyymmddN */
-#define CATALOG_VERSION_NO     202307201
+#define CATALOG_VERSION_NO     202307111
 
 #endif
index 878c997e8767bddeab674d1e03606bfbf82c834c..6996073989a5dda2244f77f0320b26f16a46906f 100644 (file)
   proname => 'pg_stat_get_activity', prorows => '100', proisstrict => 'f',
   proretset => 't', provolatile => 's', proparallel => 'r',
   prorettype => 'record', proargtypes => 'int4',
-  proallargtypes => '{int4,oid,int4,oid,text,text,text,text,text,timestamptz,timestamptz,timestamptz,timestamptz,inet,text,int4,xid,xid,text,bool,text,text,int4,text,numeric,text,timestamp,timestamp,bool,text,bool,bool,int4,int8}',
-  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
-  proargnames => '{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,ssl_client_dn,ssl_client_serial,ssl_issuer_dn,ssl_not_before,ssl_not_after,gss_auth,gss_princ,gss_enc,gss_delegation,leader_pid,query_id}',
+  proallargtypes => '{int4,oid,int4,oid,text,text,text,text,text,timestamptz,timestamptz,timestamptz,timestamptz,inet,text,int4,xid,xid,text,bool,text,text,int4,text,numeric,text,bool,text,bool,bool,int4,int8}',
+  proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}',
+  proargnames => '{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,ssl_client_dn,ssl_client_serial,ssl_issuer_dn,gss_auth,gss_princ,gss_enc,gss_delegation,leader_pid,query_id}',
   prosrc => 'pg_stat_get_activity' },
 { oid => '3318',
   descr => 'statistics: information about progress of backends running maintenance command',
index 02765ba9d9d4316333ebea619b02913df3035277..a0b74c8095fe879c2ece29a7ed09abf3746f88de 100644 (file)
@@ -298,8 +298,6 @@ extern const char *be_tls_get_cipher(Port *port);
 extern void be_tls_get_peer_subject_name(Port *port, char *ptr, size_t len);
 extern void be_tls_get_peer_issuer_name(Port *port, char *ptr, size_t len);
 extern void be_tls_get_peer_serial(Port *port, char *ptr, size_t len);
-extern void be_tls_get_peer_not_before(Port *port, Timestamp *ptr);
-extern void be_tls_get_peer_not_after(Port *port, Timestamp *ptr);
 
 /*
  * Get the server certificate hash for SCRAM channel binding type
index 1e4fedb661486f18959dfbf471df858686b41975..77939a0aedea3b946ba5cad99528e8b8b06a71bf 100644 (file)
@@ -61,8 +61,6 @@ typedef struct PgBackendSSLStatus
        char            ssl_client_serial[NAMEDATALEN];
 
        char            ssl_issuer_dn[NAMEDATALEN];
-       Timestamp       ssl_not_before;
-       Timestamp       ssl_not_after;
 } PgBackendSSLStatus;
 
 /*
index 30108846c17ebfca1d72429cd899229e35dcf484..e07afcd4aa62eaab6084782789df05df835d3ef6 100644 (file)
@@ -1760,7 +1760,7 @@ pg_stat_activity| SELECT s.datid,
     s.query_id,
     s.query,
     s.backend_type
-   FROM ((pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, ssl_not_before, ssl_not_after, gss_auth, gss_princ, gss_enc, gss_delegation, leader_pid, query_id)
+   FROM ((pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, gss_delegation, leader_pid, query_id)
      LEFT JOIN pg_database d ON ((s.datid = d.oid)))
      LEFT JOIN pg_authid u ON ((s.usesysid = u.oid)));
 pg_stat_all_indexes| SELECT c.oid AS relid,
@@ -1878,7 +1878,7 @@ pg_stat_gssapi| SELECT pid,
     gss_princ AS principal,
     gss_enc AS encrypted,
     gss_delegation AS credentials_delegated
-   FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, ssl_not_before, ssl_not_after, gss_auth, gss_princ, gss_enc, gss_delegation, leader_pid, query_id)
+   FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, gss_delegation, leader_pid, query_id)
   WHERE (client_port IS NOT NULL);
 pg_stat_io| SELECT backend_type,
     object,
@@ -2080,7 +2080,7 @@ pg_stat_replication| SELECT s.pid,
     w.sync_priority,
     w.sync_state,
     w.reply_time
-   FROM ((pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, ssl_not_before, ssl_not_after, gss_auth, gss_princ, gss_enc, gss_delegation, leader_pid, query_id)
+   FROM ((pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, gss_delegation, leader_pid, query_id)
      JOIN pg_stat_get_wal_senders() w(pid, state, sent_lsn, write_lsn, flush_lsn, replay_lsn, write_lag, flush_lag, replay_lag, sync_priority, sync_state, reply_time) ON ((s.pid = w.pid)))
      LEFT JOIN pg_authid u ON ((s.usesysid = u.oid)));
 pg_stat_replication_slots| SELECT s.slot_name,
@@ -2113,10 +2113,8 @@ pg_stat_ssl| SELECT pid,
     sslbits AS bits,
     ssl_client_dn AS client_dn,
     ssl_client_serial AS client_serial,
-    ssl_issuer_dn AS issuer_dn,
-    ssl_not_before AS not_before,
-    ssl_not_after AS not_after
-   FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, ssl_not_before, ssl_not_after, gss_auth, gss_princ, gss_enc, gss_delegation, leader_pid, query_id)
+    ssl_issuer_dn AS issuer_dn
+   FROM pg_stat_get_activity(NULL::integer) s(datid, pid, usesysid, application_name, state, query, wait_event_type, wait_event, xact_start, query_start, backend_start, state_change, client_addr, client_hostname, client_port, backend_xid, backend_xmin, backend_type, ssl, sslversion, sslcipher, sslbits, ssl_client_dn, ssl_client_serial, ssl_issuer_dn, gss_auth, gss_princ, gss_enc, gss_delegation, leader_pid, query_id)
   WHERE (client_port IS NOT NULL);
 pg_stat_subscription| SELECT su.oid AS subid,
     su.subname,
index bad41cacc8ab612ca833022ca0fa3e57a69f8035..76442de063f17670217178f15356da6a1223b85f 100644 (file)
@@ -543,8 +543,8 @@ command_like(
                "$common_connstr sslrootcert=invalid", '-c',
                "SELECT * FROM pg_stat_ssl WHERE pid = pg_backend_pid()"
        ],
-       qr{^pid,ssl,version,cipher,bits,client_dn,client_serial,issuer_dn,not_before,not_after\r?\n
-                               ^\d+,t,TLSv[\d.]+,[\w-]+,\d+,_null_,_null_,_null_,_null_,_null_\r?$}mx,
+       qr{^pid,ssl,version,cipher,bits,client_dn,client_serial,issuer_dn\r?\n
+                               ^\d+,t,TLSv[\d.]+,[\w-]+,\d+,_null_,_null_,_null_\r?$}mx,
        'pg_stat_ssl view without client certificate');
 
 # Test min/max SSL protocol versions.
@@ -745,8 +745,8 @@ command_like(
                '-c',
                "SELECT * FROM pg_stat_ssl WHERE pid = pg_backend_pid()"
        ],
-       qr{^pid,ssl,version,cipher,bits,client_dn,client_serial,issuer_dn,not_before,not_after\r?\n
-                               ^\d+,t,TLSv[\d.]+,[\w-]+,\d+,/?CN=ssltestuser,$serialno,/?\QCN=Test CA for PostgreSQL SSL regression test client certs\E,\Q2023-06-29 01:01:01\E,\Q2050-01-01 01:01:01\E\r?$}mx,
+       qr{^pid,ssl,version,cipher,bits,client_dn,client_serial,issuer_dn\r?\n
+                               ^\d+,t,TLSv[\d.]+,[\w-]+,\d+,/?CN=ssltestuser,$serialno,/?\QCN=Test CA for PostgreSQL SSL regression test client certs\E\r?$}mx,
        'pg_stat_ssl with client certificate');
 
 # client key with wrong permissions
index f050a6f4f961e123e441e883fac16cf9c73f21f7..5306aad8023d25ba786fbf91aea49c5f22dfbfd9 100644 (file)
@@ -165,20 +165,6 @@ $result = $node->safe_psql(
        connstr => $common_connstr);
 is($result, 't', "ssl_issuer_field() for commonName");
 
-$result = $node->safe_psql(
-       "certdb",
-       "SELECT ssl_client_get_notbefore() = not_before, "
-         . "not_before = '2023-06-29 01:01:01' FROM pg_stat_ssl WHERE pid = pg_backend_pid();",
-       connstr => $common_connstr);
-is($result, 't|t', "ssl_client_get_notbefore() for not_before timestamp");
-
-$result = $node->safe_psql(
-       "certdb",
-       "SELECT ssl_client_get_notafter() = not_after, "
-         . "not_after = '2050-01-01 01:01:01' FROM pg_stat_ssl WHERE pid = pg_backend_pid();",
-       connstr => $common_connstr);
-is($result, 't|t', "ssl_client_get_notafter() for not_after timestamp");
-
 $result = $node->safe_psql(
        "certdb",
        "SELECT value, critical FROM ssl_extension_info() WHERE name = 'basicConstraints';",