input/ca-certificates.spec
raw · 8.7 KiB
%bcond_with bootstrap
%global ssl_certs_dir %{_sysconfdir}/ssl/certs
%global crt_dir %{_sysconfdir}/pki/tls/certs
%global _ca_trust_dir %{_sysconfdir}/pki/ca-trust
%global __requires_exclude perl
Name: ca-certificates
Version: 1.16.1
Release: 3%{?dist}
Summary: Utilities for managing CA certificates
Summary(ru): Утилиты для управления сертификатами CA
License: MPL-2.0 AND (MIT OR GPL-3.0-or-later)
URL: https://niceos.ru/packages/%{name}
Source0: https://github.com/lfs-book/make-ca/archive/refs/tags/v%{version}.tar.gz
# RU: Источники российских доверенных сертификатов (используются подпакетом в %post).
# EN: Russian CA sources (used by the subpackage in %post).
Source1: https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt
Source2: https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt
# RU: Базовый bundle + вспомогательные файлы.
# EN: Base bundle + helper files.
Source3: ca-bundle.crt
Source4: remove-expired-certs.sh
Source5: pythoncerts.sh
Packager: NICE SOFT GROUP LLC (ООО "НАЙС СОФТ ГРУПП") 5024245440 <niceos@ncsgp.ru>
Vendor: NiceSOFT
Distribution: NiceOS.Core
BugURL: https://bugs.niceos.ru/
VCS: https://specs.niceos.ru/rpms/%{name}
BuildRequires: openssl
BuildRequires: p11-kit
Requires: openssl-libs
Requires: p11-kit
Requires: nss
Requires: sed
Requires: p11-kit-trust
Requires: /usr/bin/trust
Requires: /usr/bin/update-ca-trust
Requires: update-ca-trust
Requires: %{name}-pki = %{version}-%{release}
Requires(posttrans): /usr/bin/ln
Provides: %{name}-mozilla = %{version}-%{release}
Provides: %{name}-pki
Provides: make-ca
%description
The ca-certificates package provides the tools and baseline certificate bundle
used to validate SSL/TLS connections system-wide. It installs the make-ca
utility, a base CA bundle, and helper scripts to maintain the system trust
store on NiceOS.
%description -l ru
Пакет ca-certificates содержит инструменты и базовый набор корневых сертификатов,
которые используются для проверки подлинности SSL/TLS-соединений в системе.
Он устанавливает утилиту make-ca, базовый CA-bundle и вспомогательные скрипты
для обслуживания системного хранилища доверия в NiceOS.
%package russian-ca
Summary: Russian trusted root CAs
Summary(ru): Российские доверенные корневые сертификаты
Requires: %{name} = %{version}-%{release}
Requires: openssl
Requires: p11-kit-trust
Requires: /usr/bin/update-ca-trust
%description -n %{name}-russian-ca
This subpackage adds Russian trusted CA certificates to the system trust store
by generating OpenSSL trusted PEM files in /etc/ssl/local and running
update-ca-trust. Installation and removal automatically rebuild the trust store.
%description -l ru -n %{name}-russian-ca
Подпакет добавляет российские доверенные сертификаты в системное хранилище доверия
через генерацию OpenSSL trusted PEM-файлов в /etc/ssl/local и последующий
update-ca-trust. Установка и удаление подпакета автоматически пересобирают trust store.
%prep
%autosetup -p1 -n make-ca-%{version}
%build
# RU: Upstream make-ca не модифицируем через cat >>; симлинк создаётся в %posttrans.
# EN: Do not modify upstream make-ca via cat >>; the symlink is created in %posttrans.
:
%install
rm -rf %{buildroot}
# Install make-ca (base)
make install DESTDIR=%{buildroot}
# Base bundle
install -vdm 0755 %{buildroot}%{crt_dir}
install -m 0644 %{SOURCE3} %{buildroot}%{crt_dir}/ca-bundle.crt
# Helper script
install -vdm 0755 %{buildroot}%{_bindir}
install -m 0755 %{SOURCE4} %{buildroot}%{_bindir}/remove-expired-certs.sh
# python cert env hint (ship as config)
install -vdm 0755 %{buildroot}%{_sysconfdir}/profile.d
install -m 0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/profile.d/pythoncerts.sh
# RU: russian-ca: сохраняем исходные сертификаты в ФС, используем их в %post.
# EN: russian-ca: install raw input certs into the filesystem for use in %post.
install -vdm 0755 %{buildroot}%{_datadir}/%{name}/niceos
install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/%{name}/niceos/russian_trusted_root_ca_pem.crt
install -m 0644 %{SOURCE2} %{buildroot}%{_datadir}/%{name}/niceos/russian_trusted_sub_ca_pem.crt
%post
%systemd_post update-pki.service
%systemd_post update-pki.timer
# RU: Активируем таймер обновления сертификатов (без фейла в chroot/контейнере).
# EN: Activate the certificate update timer (do not fail in chroot/containers).
systemctl enable --now update-pki.timer >/dev/null 2>&1 || :
%{_bindir}/remove-expired-certs.sh || :
/usr/bin/update-ca-trust || :
%posttrans
ln -sf %{crt_dir}/ca-bundle.crt %{ssl_certs_dir}/ca-certificates.crt || :
# RU: Не удаляем широкими масками файлы в /etc/pki/anchors (могут принадлежать другим пакетам/пользователю).
# EN: Do not remove files from /etc/pki/anchors with broad globs (may belong to other packages/user).
/usr/sbin/make-ca -g --force >/dev/null 2>&1 || :
/usr/bin/update-ca-trust || :
systemctl try-restart update-pki.timer >/dev/null 2>&1 || :
%preun
%systemd_preun update-pki.timer
%postun
%systemd_postun update-pki.timer
/usr/bin/update-ca-trust || :
%post -n %{name}-russian-ca
# RU: Генерируем доверенные PEM в /etc/ssl/local, затем обновляем trust store.
# EN: Generate trusted PEMs in /etc/ssl/local, then rebuild the trust store.
install -d -m 0755 /etc/ssl/local || :
# RU: Важно: генерируем именно PEM (без -text/-fingerprint), чтобы make-ca/openssl корректно парсили файл.
# EN: Important: generate PEM only (no -text/-fingerprint) so make-ca/openssl can parse the file correctly.
openssl x509 -in %{_datadir}/%{name}/niceos/russian_trusted_root_ca_pem.crt \
-setalias "Russian Trusted Root CA" \
-addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
-out /etc/ssl/local/Russian_Trusted_Root_CA.pem || :
openssl x509 -in %{_datadir}/%{name}/niceos/russian_trusted_sub_ca_pem.crt \
-setalias "Russian Trusted Sub CA" \
-addtrust serverAuth -addtrust emailProtection -addtrust codeSigning \
-out /etc/ssl/local/Russian_Trusted_Sub_CA.pem || :
/usr/bin/update-ca-trust || :
systemctl try-restart update-pki.timer >/dev/null 2>&1 || :
%postun -n %{name}-russian-ca
rm -f /etc/ssl/local/Russian_Trusted_Root_CA.pem /etc/ssl/local/Russian_Trusted_Sub_CA.pem || :
/usr/bin/update-ca-trust || :
systemctl try-restart update-pki.timer >/dev/null 2>&1 || :
%files
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/make-ca/CS.txt
%config(noreplace) %{_sysconfdir}/make-ca/make-ca.conf.dist
%config(noreplace) %{_sysconfdir}/make-ca/ISRG_Root_X1.pem
%{crt_dir}/ca-bundle.crt
%{_bindir}/remove-expired-certs.sh
%{_libexecdir}/make-ca/copy-trust-modifications
%{_sbindir}/make-ca
%{_mandir}/man8/make-ca.8*
%{_unitdir}/update-pki.service
%{_unitdir}/update-pki.timer
%config(noreplace) %{_sysconfdir}/profile.d/pythoncerts.sh
%files russian-ca
%defattr(-,root,root)
%{_datadir}/%{name}/niceos/russian_trusted_root_ca_pem.crt
%{_datadir}/%{name}/niceos/russian_trusted_sub_ca_pem.crt
# RU: /etc/ssl/local/Russian_Trusted_*.pem создаются в %post, в %files не перечисляем.
# EN: /etc/ssl/local/Russian_Trusted_*.pem are generated in %post, do NOT list them in %files.
%changelog
* Sat May 02 2026 NiceOS Team <niceos@ncsgp.ru> - 1.16.1-3
- Enable and start update-pki.timer (Включён и запущен update-pki.timer)
- Fix russian-ca cleanup and generate PEM-only outputs (Исправлено удаление russian-ca и генерация чистых PEM)
* Thu Dec 18 2025 Stanislav Belikov <sbelikov@ncsgp.ru> - 1.16.1-2
- Split Russian trusted CAs into ca-certificates-russian-ca subpackage
- Generate /etc/ssl/local/Russian_Trusted_*.pem in %post as trusted PEMs via openssl x509 -addtrust
- Remove generated PEMs in %postun and rebuild trust store
- Add postun hooks for trust store rebuild
* Sat May 10 2025 NiceOS Team <niceos@ncsgp.ru> - 1.16.1-1
- Initial build for NiceOS (Первая сборка для НАЙС.ОС)