Module Name:    src
Committed By:   martin
Date:           Mon Oct  2 13:26:04 UTC 2023

Modified Files:
        src/distrib/amd64/liveimage/emuimage [netbsd-10]: rc.conf.emuimage
        src/distrib/evbarm/liveimage/armimage [netbsd-10]: rc.conf.armimage
        src/distrib/sets/lists/etc [netbsd-10]: mi
        src/distrib/utils/embedded/conf [netbsd-10]: evbarm.conf evbmips.conf
            usermode.conf x86.conf
        src/etc/defaults [netbsd-10]: rc.conf
        src/etc/rc.d [netbsd-10]: Makefile
Added Files:
        src/etc/rc.d [netbsd-10]: certctl_init

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #381):

        distrib/utils/embedded/conf/evbarm.conf: revision 1.42
        distrib/sets/lists/etc/mi: revision 1.273
        etc/rc.d/Makefile: revision 1.118
        distrib/utils/embedded/conf/usermode.conf: revision 1.7
        etc/rc.d/certctl_init: revision 1.1
        distrib/evbarm/liveimage/armimage/rc.conf.armimage: revision 1.2
        etc/defaults/rc.conf: revision 1.166
        distrib/amd64/liveimage/emuimage/rc.conf.emuimage: revision 1.3
        distrib/utils/embedded/conf/x86.conf: revision 1.11
        distrib/utils/embedded/conf/evbmips.conf: revision 1.4

/etc/rc.d/cerctl_init: New script for certctl rehash in live images.

This is very limited -- it does not supplant postinstall to rehash
certificates on upgrade; it only runs certctl rehash if
/etc/openssl/certs is an empty directory, as you get in live images
not created with sysinst.

We could also have a more general-purpose way to run postinstall(8)
on first boot of an image, but that has a lot more moving parts to
think about, so let's start with this limited-scope low-risk
approach.

PR install/57629

/etc/rc.d/certctl_init: Default off.
Otherwise in systems without certctl_init=YES, such as systems
installed with sysinst(8) where it's unnecessary because the rehash
has already happened at install time, you'll get spurious warnings.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.2.1 \
    src/distrib/amd64/liveimage/emuimage/rc.conf.emuimage
cvs rdiff -u -r1.1 -r1.1.2.1 \
    src/distrib/evbarm/liveimage/armimage/rc.conf.armimage
cvs rdiff -u -r1.270.2.1 -r1.270.2.2 src/distrib/sets/lists/etc/mi
cvs rdiff -u -r1.41 -r1.41.2.1 src/distrib/utils/embedded/conf/evbarm.conf
cvs rdiff -u -r1.3 -r1.3.2.1 src/distrib/utils/embedded/conf/evbmips.conf
cvs rdiff -u -r1.6 -r1.6.2.1 src/distrib/utils/embedded/conf/usermode.conf
cvs rdiff -u -r1.10 -r1.10.2.1 src/distrib/utils/embedded/conf/x86.conf
cvs rdiff -u -r1.162.2.1 -r1.162.2.2 src/etc/defaults/rc.conf
cvs rdiff -u -r1.116 -r1.116.2.1 src/etc/rc.d/Makefile
cvs rdiff -u -r0 -r1.1.2.2 src/etc/rc.d/certctl_init

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/amd64/liveimage/emuimage/rc.conf.emuimage
diff -u src/distrib/amd64/liveimage/emuimage/rc.conf.emuimage:1.2 src/distrib/amd64/liveimage/emuimage/rc.conf.emuimage:1.2.2.1
--- src/distrib/amd64/liveimage/emuimage/rc.conf.emuimage:1.2	Wed Jul 13 18:51:03 2022
+++ src/distrib/amd64/liveimage/emuimage/rc.conf.emuimage	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-# $NetBSD: rc.conf.emuimage,v 1.2 2022/07/13 18:51:03 hgutch Exp $
+# $NetBSD: rc.conf.emuimage,v 1.2.2.1 2023/10/02 13:26:04 martin Exp $
 
 is_ec2() {
 	val=NO
@@ -24,6 +24,7 @@ is_ec2() {
 	printf $val
 }
 
+certctl_init=YES
 resize_disklabel=YES
 resize_root=YES
 resize_root_flags="-p"

Index: src/distrib/evbarm/liveimage/armimage/rc.conf.armimage
diff -u src/distrib/evbarm/liveimage/armimage/rc.conf.armimage:1.1 src/distrib/evbarm/liveimage/armimage/rc.conf.armimage:1.1.2.1
--- src/distrib/evbarm/liveimage/armimage/rc.conf.armimage:1.1	Sat Jul 24 14:00:08 2021
+++ src/distrib/evbarm/liveimage/armimage/rc.conf.armimage	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-# $NetBSD: rc.conf.armimage,v 1.1 2021/07/24 14:00:08 jmcneill Exp $
+# $NetBSD: rc.conf.armimage,v 1.1.2.1 2023/10/02 13:26:04 martin Exp $
 
 is_ec2() {
 	val=NO
@@ -23,6 +23,7 @@ is_ec2() {
 	printf $val
 }
 
+certctl_init=YES
 resize_gpt=YES
 resize_root=YES
 resize_root_flags="-p"

Index: src/distrib/sets/lists/etc/mi
diff -u src/distrib/sets/lists/etc/mi:1.270.2.1 src/distrib/sets/lists/etc/mi:1.270.2.2
--- src/distrib/sets/lists/etc/mi:1.270.2.1	Mon Sep  4 17:33:27 2023
+++ src/distrib/sets/lists/etc/mi	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.270.2.1 2023/09/04 17:33:27 martin Exp $
+# $NetBSD: mi,v 1.270.2.2 2023/10/02 13:26:04 martin Exp $
 #
 # Note: end-user configuration files that are moved to another location
 #	should not be marked "obsolete"; they should just be removed from
@@ -203,6 +203,7 @@
 ./etc/rc.d/bthcid				etc-obsolete		obsolete
 ./etc/rc.d/btuartd				etc-obsolete		obsolete
 ./etc/rc.d/ccd					etc-sys-rc
+./etc/rc.d/certctl_init				etc-sys-rc
 ./etc/rc.d/cgd					etc-sys-rc
 ./etc/rc.d/clearcritlocal				etc-sys-rc
 ./etc/rc.d/cleartmp				etc-sys-rc

Index: src/distrib/utils/embedded/conf/evbarm.conf
diff -u src/distrib/utils/embedded/conf/evbarm.conf:1.41 src/distrib/utils/embedded/conf/evbarm.conf:1.41.2.1
--- src/distrib/utils/embedded/conf/evbarm.conf:1.41	Sun Oct 30 15:08:50 2022
+++ src/distrib/utils/embedded/conf/evbarm.conf	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-# $NetBSD: evbarm.conf,v 1.41 2022/10/30 15:08:50 jmcneill Exp $
+# $NetBSD: evbarm.conf,v 1.41.2.1 2023/10/02 13:26:04 martin Exp $
 # evbarm shared config
 #
 image=$HOME/${board}.img
@@ -173,6 +173,7 @@ ntpd=YES
 ntpd_flags="-g"
 creds_msdos=YES
 creds_msdos_partition=/boot
+certctl_init=YES
 EOF
 
 	if $resize; then

Index: src/distrib/utils/embedded/conf/evbmips.conf
diff -u src/distrib/utils/embedded/conf/evbmips.conf:1.3 src/distrib/utils/embedded/conf/evbmips.conf:1.3.2.1
--- src/distrib/utils/embedded/conf/evbmips.conf:1.3	Tue Jul  6 11:49:36 2021
+++ src/distrib/utils/embedded/conf/evbmips.conf	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-# $NetBSD: evbmips.conf,v 1.3 2021/07/06 11:49:36 jmcneill Exp $
+# $NetBSD: evbmips.conf,v 1.3.2.1 2023/10/02 13:26:04 martin Exp $
 # evbmips shared config
 #
 image=$HOME/${board}.img
@@ -155,6 +155,7 @@ ntpd=YES
 ntpd_flags="-g"
 creds_msdos=YES
 creds_msdos_partition=/boot
+certctl_init=YES
 EOF
 
 	if $resize; then

Index: src/distrib/utils/embedded/conf/usermode.conf
diff -u src/distrib/utils/embedded/conf/usermode.conf:1.6 src/distrib/utils/embedded/conf/usermode.conf:1.6.2.1
--- src/distrib/utils/embedded/conf/usermode.conf:1.6	Tue Jul  6 11:49:36 2021
+++ src/distrib/utils/embedded/conf/usermode.conf	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-# $NetBSD: usermode.conf,v 1.6 2021/07/06 11:49:36 jmcneill Exp $
+# $NetBSD: usermode.conf,v 1.6.2.1 2023/10/02 13:26:04 martin Exp $
 # NetBSD/usermode customization script used by mkimage
 
 # XXX: BROKEN, needs to be converted to makefs
@@ -40,6 +40,7 @@ critical_filesystems_local="/var.cow /va
 #
 dhcpcd=YES
 sshd=YES
+certctl_init=YES
 EOF
 
 echo "${bar} making extra directories ${bar}"

Index: src/distrib/utils/embedded/conf/x86.conf
diff -u src/distrib/utils/embedded/conf/x86.conf:1.10 src/distrib/utils/embedded/conf/x86.conf:1.10.2.1
--- src/distrib/utils/embedded/conf/x86.conf:1.10	Tue Jul  6 11:49:36 2021
+++ src/distrib/utils/embedded/conf/x86.conf	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-# $NetBSD: x86.conf,v 1.10 2021/07/06 11:49:36 jmcneill Exp $
+# $NetBSD: x86.conf,v 1.10.2.1 2023/10/02 13:26:04 martin Exp $
 # x86 shared config
 #
 
@@ -111,6 +111,7 @@ sshd=YES
 dhcpcd=YES
 wscons=YES
 devpubd=YES
+certctl_init=YES
 EOF
 	echo "./etc/rc.conf type=file uname=root gname=wheel mode=0644" \
 	    >> "$tmp/selected_sets"

Index: src/etc/defaults/rc.conf
diff -u src/etc/defaults/rc.conf:1.162.2.1 src/etc/defaults/rc.conf:1.162.2.2
--- src/etc/defaults/rc.conf:1.162.2.1	Fri Aug 11 14:35:25 2023
+++ src/etc/defaults/rc.conf	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-#	$NetBSD: rc.conf,v 1.162.2.1 2023/08/11 14:35:25 martin Exp $
+#	$NetBSD: rc.conf,v 1.162.2.2 2023/10/02 13:26:04 martin Exp $
 #
 # /etc/defaults/rc.conf --
 #	default configuration of /etc/rc.conf
@@ -144,6 +144,7 @@ sysdb=YES					# build system databases
 rndctl=NO		rndctl_flags=""		# configure rndctl(8)
 gpio=NO						# configure GPIO devices
 modules=YES					# process /etc/modules.conf
+certctl_init=NO					# rehash /etc/openssl/certs
 
 # cope with other OSes using the real time clock at localtime on this
 # machine (by adjusting kern.rtc_offset at boot)

Index: src/etc/rc.d/Makefile
diff -u src/etc/rc.d/Makefile:1.116 src/etc/rc.d/Makefile:1.116.2.1
--- src/etc/rc.d/Makefile:1.116	Mon Jun  6 10:56:28 2022
+++ src/etc/rc.d/Makefile	Mon Oct  2 13:26:04 2023
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.116 2022/06/06 10:56:28 nia Exp $
+# $NetBSD: Makefile,v 1.116.2.1 2023/10/02 13:26:04 martin Exp $
 
 .include <bsd.own.mk>
 
@@ -17,7 +17,7 @@ CONFIGFILES=\
 		CRITLOCALMOUNTED DAEMON DISKS LOGIN NETWORKING SERVERS \
 		accounting altqd amd apmd automount automountd autounmountd \
 		bluetooth bootconf.sh bootparams \
-		ccd cgd clearcritlocal cleartmp cron \
+		ccd certctl_init cgd clearcritlocal cleartmp cron \
 		devpubd dhcpcd dhcpd dhcpd6 dhcrelay dmesg \
 		downinterfaces \
 		entropy envsys \

Added files:

Index: src/etc/rc.d/certctl_init
diff -u /dev/null src/etc/rc.d/certctl_init:1.1.2.2
--- /dev/null	Mon Oct  2 13:26:04 2023
+++ src/etc/rc.d/certctl_init	Mon Oct  2 13:26:04 2023
@@ -0,0 +1,54 @@
+#!/bin/sh
+#
+# $NetBSD: certctl_init,v 1.1.2.2 2023/10/02 13:26:04 martin Exp $
+#
+# PROVIDE: certctl_init
+# REQUIRE: mountcritremote
+#
+# This script ensures that we run `certctl rehash' on first boot of a
+# live image to configure TLS trust anchors for OpenSSL in
+# /etc/openssl/certs.  We do this only on first boot by testing whether
+# /etc/openssl/certs is an empty directory.
+#
+# Requires mountcritremote for /usr/sbin/certctl.
+#
+# This is a stop-gap measure to ensure we get TLS trust anchors with
+# live images, which we can't prepare at build time because the
+# preparation requires running openssl(1) as a tool.  This stop-gap
+# measure should perhaps be replaced by a more general-purpose way to
+# run postinstall on first boot of the image, but that's a riskier
+# proposition to implement on short notice for netbsd-10.
+
+$_rc_subr_loaded . /etc/rc.subr
+
+name="certctl_init"
+rcvar=${name}
+start_cmd="certctl_init"
+stop_cmd=":"
+
+certctl_init()
+{
+	local certsdir
+
+	certsdir=/etc/openssl/certs
+
+	# If /etc/openssl/certs is a symlink, or exists but is not a
+	# directory, or is a directory but is nonempty, then we're not
+	# in the first boot's initial configuration.  So do nothing.
+	if [ -h "$certsdir" ] ||
+	    [ -e "$certsdir" -a ! -d "$certsdir" ] ||
+	    ([ -d "$certsdir" ] &&
+		find -f "$certsdir" -- \
+		    -maxdepth 0 -type d -empty -exit 1)
+        then
+		return
+	fi
+
+	# Otherwise, if /etc/openssl/certs is nonexistent or is an
+	# empty directory, run `certctl rehash'.
+	echo "Configuring TLS trust anchors."
+	certctl rehash
+}
+
+load_rc_config $name
+run_rc_command "$1"

Reply via email to