Sisyphus repositório
Última atualização: 29 julho 2021 | SRPMs: 17388 | Visitas: 21519908
en ru br
ALT Linux repositórios

Group :: Sistema/Servidores
RPM: pki-core

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

%define _unpackaged_files_terminate_build 1

%def_with check
%define nss_default_db_type sql

%define java_home           %_jvmdir/jre
%define resteasy_lib        %_javadir/resteasy
%define jaxrs_api_jar       %_javadir/jboss-jaxrs-2.0-api.jar

%define tomcatjss_version   7.6.1
%define jss_version         4.8.1
%define ldapjdk_version     4.22.0

Name: pki-core
Version: 10.10.6
Release: alt1

Summary: Certificate System - PKI Core Components
License: %gpl2only
Group: System/Servers
# Source-git:

Source: %name-%version.tar
Patch: %name-%version-alt.patch

ExcludeArch: %ix86

BuildRequires(pre): rpm-build-licenses
BuildRequires(pre): rpm-build-python3
BuildRequires(pre): rpm-macros-java

BuildRequires: java-11-devel
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: sh4
BuildRequires: apache2-devel
BuildRequires: apache-commons-cli
BuildRequires: apache-commons-httpclient
BuildRequires: apache-commons-net

BuildRequires: libnss-devel
BuildRequires: zlib-devel
BuildRequires: selinux-policy-alt

BuildRequires: jackson
BuildRequires: ldapjdk >= %ldapjdk_version
BuildRequires: resteasy-atom-provider
BuildRequires: resteasy-client
BuildRequires: resteasy-jackson2-provider
BuildRequires: tomcatjss >= %tomcatjss_version
BuildRequires: xalan-j2
BuildRequires: slf4j-jdk14
BuildRequires: idm-console-framework
BuildRequires: junit

# build dependency to build man pages

BuildRequires: go-md2man

BuildRequires: python3-module-sphinx

# healthcheck

BuildRequires: python3-module-pytest-runner
BuildRequires: freeipa-healthcheck

%if_with check
BuildRequires: /dev/shm
BuildRequires: ctest
BuildRequires: nss-utils
BuildRequires: openssl
BuildRequires: python3-module-flake8
BuildRequires: python3-module-ldap
BuildRequires: python3-module-lxml
BuildRequires: python3-module-pyflakes
BuildRequires: python3-module-pylint
BuildRequires: python3-module-selinux
BuildRequires: python3-module-tox

# mark upgrade code as Python3 code

%add_python3_path %_datadir/pki/upgrade/
%add_python3_path %_datadir/pki/server/upgrade/
%add_python3_compile_exclude %_datadir/pki/upgrade/
%add_python3_compile_exclude %_datadir/pki/server/upgrade/

#### Meta package ####

Requires: dogtag-pki-server-theme = %EVR
Requires: dogtag-pki-console-theme = %EVR
Requires: python3-module-pki-base = %EVR
Requires: pki-base-java = %EVR
Requires: pki-tools = %EVR
Requires: pki-server = %EVR
Requires: pki-acme = %EVR
Requires: pki-ca = %EVR
Requires: pki-kra = %EVR
Requires: pki-ocsp = %EVR
Requires: pki-tks = %EVR
Requires: pki-tps = %EVR
Requires: pki-console = %EVR

Dogtag PKI is an enterprise software system designed
to manage enterprise Public Key Infrastructure deployments.

PKI consists of the following components:

 * Automatic Certificate Management Environment (ACME) Responder
 * Certificate Authority (CA)
 * Key Recovery Authority (KRA)
 * Online Certificate Status Protocol (OCSP) Manager
 * Token Key Service (TKS)
 * Token Processing Service (TPS)

%package -n pki-symkey
Summary: Dogtag PKI Symmetric Key Package
Group: System/Libraries
Requires: jss >= %jss_version
Requires: javapackages-tools
Provides: symkey = %EVR
Obsoletes: symkey < %EVR

%description -n pki-symkey
The Dogtag PKI Symmetric Key Java Package supplies various native
symmetric key operations to Java programs.

%package -n pki-base
Summary: Dogtag PKI Base Package
Group: System/Base
Requires: python3-module-pki-base = %EVR
Provides: pki-common = %EVR
Provides: pki-util = %EVR
Obsoletes: pki-common < %EVR
Obsoletes: pki-util < %EVR
Requires(post): python3-module-pki-base = %EVR

%description -n pki-base
The Dogtag PKI Base Package contains the common and client libraries
and utilities written in Python.

%package -n pki-base-java
Summary: Dogtag PKI Base Java Package
Group: System/Base
Requires: pki-base = %EVR
Requires: java
Requires: xalan-j2
Requires: xml-commons-apis
Requires: xml-commons-resolver

%description -n pki-base-java
The Dogtag PKI Base Java Package contains the common and client
libraries and utilities written in Java.

%package -n python3-module-pki-base
Summary: Dogtag PKI Python3 Package
Group: Development/Python3
Requires: pki-base = %EVR

%description -n python3-module-pki-base
This package contains Dogtag PKI client library for Python3.

%package -n pki-tools
Summary: Dogtag PKI Tools Package
Group: System/Base
Requires: pki-base-java = %EVR
Requires: openldap-clients
Requires: nss-utils
Requires: p11-kit-trust
Provides: pki-native-tools = %EVR
Provides: pki-java-tools = %EVR
Obsoletes: pki-native-tools < %EVR
Obsoletes: pki-java-tools < %EVR

%description -n pki-tools
This package contains Dogtag PKI executables that can be used to help make
Certificate System into a more complete and robust PKI solution.

%package -n pki-server
Summary: Dogtag PKI Server Package
Group: System/Base
Requires: pki-symkey = %EVR
Requires: pki-tools = %EVR
Requires: openssl
Requires: tomcatjss >= %tomcatjss_version

Provides: pki-deploy = %EVR
Provides: pki-setup = %EVR
Provides: pki-silent = %EVR

Obsoletes: pki-deploy < %EVR
Obsoletes: pki-setup < %EVR
Obsoletes: pki-silent < %EVR


Conflicts: freeipa-server < 4.7.1

%description -n pki-server
The PKI Server Package contains libraries and utilities needed by other
PKI subsystems.

%package -n pki-acme
Summary: PKI ACME Package
Group: System/Base
Requires: pki-server = %EVR

%description -n pki-acme
the pki acme responder is a service that provides an automatic certificate
management via ACME v2 protocol defined in RFC 8555.

%package -n pki-ca
Summary: Dogtag PKI CA Package
Group: System/Servers
Requires: pki-server = %EVR

%description -n pki-ca
The Certificate Authority (CA) is a required PKI subsystem which issues,
renews, revokes, and publishes certificates as well as compiling and
publishing Certificate Revocation Lists (CRLs).

The Certificate Authority can be configured as a self-signing Certificate
Authority, where it is the root CA, or it can act as a subordinate CA,
where it obtains its own signing certificate from a public CA.

%package -n pki-kra
Summary: Dogtag PKI KRA Package
Group: System/Servers
Requires: pki-server = %EVR

%description -n pki-kra
The Key Recovery Authority (KRA) is an optional PKI subsystem that can act
as a key archival facility.  When configured in conjunction with the
Certificate Authority (CA), the KRA stores private encryption keys as part of
the certificate enrollment process.  The key archival mechanism is triggered
when a user enrolls in the PKI and creates the certificate request.  Using the
Certificate Request Message Format (CRMF) request format, a request is
generated for the user's private encryption key.  This key is then stored in
the KRA which is configured to store keys in an encrypted format that can only
be decrypted by several agents requesting the key at one time, providing for
protection of the public encryption keys for the users in the PKI deployment.

Note that the KRA archives encryption keys; it does NOT archive signing keys,
since such archival would undermine non-repudiation properties of signing keys.

%package -n pki-ocsp
Summary: Dogtag PKI OCSP Package
Group: System/Servers
Requires: pki-server = %EVR

%description -n pki-ocsp
The Online Certificate Status Protocol (OCSP) Manager is an optional PKI
subsystem that can act as a stand-alone OCSP service.  The OCSP Manager
performs the task of an online certificate validation authority by enabling
OCSP-compliant clients to do real-time verification of certificates.  Note
that an online certificate-validation authority is often referred to as an
OCSP Responder.

Although the Certificate Authority (CA) is already configured with an
internal OCSP service.  An external OCSP Responder is offered as a separate
subsystem in case the user wants the OCSP service provided outside of a
firewall while the CA resides inside of a firewall, or to take the load of
requests off of the CA.

The OCSP Manager can receive Certificate Revocation Lists (CRLs) from
multiple CA servers, and clients can query the OCSP Manager for the
revocation status of certificates issued by all of these CA servers.

When an instance of OCSP Manager is set up with an instance of CA, and
publishing is set up to this OCSP Manager, CRLs are published to it
whenever they are issued or updated.

%package -n pki-tks
Summary: Dogtag PKI TKS Package
Group: System/Servers
Requires: pki-server = %EVR

%description -n pki-tks
The Token Key Service (TKS) is an optional PKI subsystem that manages the
master key(s) and the transport key(s) required to generate and distribute
keys for hardware tokens.  TKS provides the security between tokens and an
instance of Token Processing System (TPS), where the security relies upon the
relationship between the master key and the token keys.  A TPS communicates
with a TKS over SSL using client authentication.

TKS helps establish a secure channel (signed and encrypted) between the token
and the TPS, provides proof of presence of the security token during
enrollment, and supports key changeover when the master key changes on the
TKS.  Tokens with older keys will get new token keys.

Because of the sensitivity of the data that TKS manages, TKS should be set up
behind the firewall with restricted access.

%package -n pki-tps
Summary: Dogtag PKI TPS Package
Group: System/Servers
Requires: pki-server = %EVR

Provides: pki-tps-tomcat = %EVR
Provides: pki-tps-client = %EVR
Obsoletes: pki-tps-tomcat < %EVR
Obsoletes: pki-tps-client < %EVR

%description -n pki-tps
The Token Processing System (TPS) is an optional PKI subsystem that acts
as a Registration Authority (RA) for authenticating and processing
enrollment requests, PIN reset requests, and formatting requests from
the Enterprise Security Client (ESC).

TPS is designed to communicate with tokens that conform to
Global Platform's Open Platform Specification.

TPS communicates over SSL with various PKI backend subsystems (including
the Certificate Authority (CA), the Data Recovery Manager (DRM), and the
Token Key Service (TKS)) to fulfill the user's requests.

TPS also interacts with the token database, an LDAP server that stores
information about individual tokens.

The utility "tpsclient" is a test tool that interacts with TPS.  This
tool is useful to test TPS server configs without risking an actual
smart card.

%package -n pki-javadoc
Summary: Dogtag PKI Javadoc Package
Group: Documentation
Requires: javapackages-tools

Provides: pki-util-javadoc = %EVR
Provides: pki-java-tools-javadoc = %EVR
Provides: pki-common-javadoc = %EVR
Obsoletes: pki-util-javadoc < %EVR
Obsoletes: pki-java-tools-javadoc < %EVR
Obsoletes: pki-common-javadoc < %EVR

%description -n pki-javadoc
This package contains PKI API documentation.

%package -n pki-console
Summary: PKI Console Package
Group: Networking/Other
Requires: idm-console-framework
Requires: pki-base-java = %EVR
Requires: dogtag-pki-console-theme = %EVR

%description -n pki-console
The PKI Console is a Java application used to administer PKI server.

%package -n pki-healthcheck
Summary: Dogtag PKI Healthcheck
Group: System/Servers

%description -n pki-healthcheck
The healthcheck tool is intended for executing health checks against PKI.
This is the plugin for freeipa-healthcheck.

%package -n dogtag-pki-server-theme
Summary: Dogtag PKI Server Theme Package
Group: Networking/Other
Provides: pki-server-theme = %EVR
Obsoletes: pki-server-theme < %EVR

%description -n dogtag-pki-server-theme
This PKI Server Theme Package contains textual and graphical user
interface for PKI Server.

%package -n dogtag-pki-console-theme
Summary: Dogtag PKI Console Theme Package
Group: Networking/Other
Provides: pki-console-theme = %EVR
Obsoletes: pki-console-theme < %EVR

%description -n dogtag-pki-console-theme
This PKI Console Theme Package contains textual and graphical user
interface for PKI Console.

%patch -p1
# change port from 8080 to 8090
# Port 8080 is used by alterator-ahttpd-server
grep -rl 8080 | xargs sed -i 's/\(\W\|^\)8080\(\W\|$\)/\18090\2/g'
# change apache2 alt paths
grep -rPl '#include \x22httpd/' | \
xargs sed -i 's/#include \x22httpd\//#include \x22apache2\//g'

# replace python2 shebangs with python3 to fix unmets

grep -rlsm1 '^#!/usr/bin/python[[:space:]]*$' | \
xargs sed -i '1s|^#!/usr/bin/python[[:space:]]*$|#!/usr/bin/python3|'

# get Java <major>.<minor> version number
set -o pipefail
java_version="$(%java_home/bin/java -XshowSettings:properties -version  2>&1 | \
   sed -n 's/ *java.version *= *\([0-9]\+\.[0-9]\+\).*/\1/p')"
# if <major> == 1, get <minor> version number
# otherwise get <major> version number
java_version="$(echo $java_version | sed -e 's/^1\.//' -e 's/\..*$//')"

# get Tomcat <major>.<minor> version number

tomcat_version=`/usr/sbin/tomcat version | sed -n 's/Server number: *\([0-9]\+\.[0-9]\+\).*/\1/p'`
if [ $tomcat_version == "9.0" ]; then
set +o pipefail

%add_optflags -I/usr/include/apu-1
%cmake \
   --no-warn-unused-cli \
   -DVERSION=%version-%release \
   -DP11_KIT_TRUST=%_libdir/ \
   -DJAVA_VERSION=$java_version \
   -DJAVA_HOME=%java_home \
   -DJAVA_LIB_INSTALL_DIR=%_jnidir \
   -DAPP_SERVER=$app_server \
   -DJAXRS_API_JAR=%jaxrs_api_jar \
   -DRESTEASY_LIB=%resteasy_lib \
   -DNSS_DEFAULT_DB_TYPE=%nss_default_db_type \
   -DPYTHON_EXECUTABLE=%__python3 \
%if_with check
   -DTHEME=dogtag \

%cmake_build -t all

# Customize client library links in /usr/share/pki/lib
ln -sf %_datadir/java/jboss-logging/jboss-logging.jar %buildroot%_datadir/pki/lib/jboss-logging.jar
ln -sf %_datadir/java/jboss-annotations-1.2-api/jboss-annotations-api_1.2_spec.jar %buildroot%_datadir/pki/lib/jboss-annotations-api_1.2_spec.jar

# Customize server library links in /usr/share/pki/server/common/lib

ln -sf %jaxrs_api_jar %buildroot%_datadir/pki/server/common/lib/jboss-jaxrs-2.0-api.jar
ln -sf %_datadir/java/jboss-logging/jboss-logging.jar %buildroot%_datadir/pki/server/common/lib/jboss-logging.jar
ln -sf %_datadir/java/jboss-annotations-1.2-api/jboss-annotations-api_1.2_spec.jar %buildroot%_datadir/pki/server/common/lib/jboss-annotations-api_1.2_spec.jar

# from sem at :

# This file should be sourced only
chmod -x %buildroot%_datadir/pki/scripts/operations
touch %buildroot%_sysconfdir/pki/pki.version
touch %buildroot%_logdir/pki/pki-upgrade-%version.log
touch %buildroot%_logdir/pki/pki-server-upgrade-%version.log
mkdir %buildroot%_logdir/pki/server
mkdir %buildroot%_logdir/pki/server/upgrade

ln -sf tps/ %buildroot%_libdir/
ln -sf tps/ %buildroot%_libdir/

# don't package tests

rm -r %buildroot%_datadir/pki/tests/

# since we package python modules as arch dependent

%if "%python3_sitelibdir" != "%python3_sitelibdir_noarch"
mkdir -p %buildroot%python3_sitelibdir
mv %buildroot%python3_sitelibdir_noarch/* %buildroot%python3_sitelibdir/

export TOXENV=lint3,pep8py3,py%{python_version_nodots python3}
tox.py3 --sitepackages -p auto -o -v
%cmake_build -t test

%pre -n pki-server
%define pki_username pkiuser
%define pki_groupname pkiuser
%define pki_homedir %_localstatedir/pki

%_sbindir/groupadd -r -f %pki_groupname ||:
%_sbindir/useradd -g %pki_groupname -c 'Certificate System' \
                 -d %pki_homedir -s /sbin/nologin -r %pki_username \
                 > /dev/null 2>&1 ||:

%post -n pki-base
if [ $1 -eq 1 ]
   # On RPM installation create system upgrade tracker
   echo "Configuration-Version: %version" > %_sysconfdir/pki/pki.version

   # On RPM upgrade run system upgrade
   echo "pki-base: Upgrading PKI system configuration"
   echo "Upgrading PKI system configuration at `/bin/date`." >> %_logdir/pki/pki-upgrade-%version.log 2>&1
   %_sbindir/pki-upgrade -v >> %_logdir/pki/pki-upgrade-%version.log 2>&1
   echo >> %_logdir/pki/pki-upgrade-%version.log 2>&1
   echo "pki-base: PKI system upgrade status:"
   %_sbindir/pki-upgrade --status 2>&1 | sed 's/^/pki-base: /'

%postun -n pki-base
if [ $1 -eq 0 ]
   # On RPM uninstallation remove system upgrade tracker
   rm -f %_sysconfdir/pki/pki.version

%post -n pki-server
# CVE-2021-3551: Remove world access from existing installation logs
find /var/log/pki -maxdepth 1 -type f -exec chmod o-rwx {} \;

if [ "$1" -ge 2 ]
   systemctl daemon-reload ||:


%files -n pki-symkey

%files -n pki-base
%doc %_datadir/doc/pki-base/html
%doc %_datadir/pki/server/docs
%dir %_datadir/pki/etc
%dir %_datadir/pki/lib
%dir %_datadir/pki/scripts
%dir %_datadir/pki/examples
%dir %_logdir/pki
%config(noreplace) %_sysconfdir/pki/pki.conf
%ghost %_sysconfdir/pki/pki.version
%ghost %_logdir/pki/pki-upgrade-%version.log

%files -n pki-base-java
%dir %_javadir/pki

%files -n python3-module-pki-base
%exclude %python3_sitelibdir/pki/server/

%files -n pki-tools
%doc base/tools/doc/README

%files -n pki-server
%doc base/common/THIRD_PARTY_LICENSES
%doc base/server/LICENSE
%doc base/server/README
%dir %_sysconfdir/sysconfig/pki
%dir %_sysconfdir/sysconfig/pki/tomcat
%exclude %python3_sitelibdir/pki/server/healthcheck/

%dir %_datadir/pki/deployment
%dir %_sysconfdir/systemd/system/
%_unitdir/pki-tomcatd at .service
%dir %_sysconfdir/systemd/system/
%ghost %_logdir/pki/pki-server-upgrade-%version.log
%ghost %_logdir/pki/server/
%_unitdir/pki-tomcatd-nuxwdog at .service
%dir %_sharedstatedir/pki

%dir %_datadir/pki/server

%files -n pki-acme

%files -n pki-ca

%files -n pki-kra

%files -n pki-ocsp

%files -n pki-tks

%files -n pki-tps

%files -n pki-javadoc

%files -n pki-console

%files -n pki-healthcheck
%config(noreplace) %_sysconfdir/pki/healthcheck.conf

%files -n dogtag-pki-server-theme
%dir %_datadir/pki/server
%dir %_datadir/pki/server/webapps
%dir %_datadir/pki/server/webapps/pki

%files -n dogtag-pki-console-theme


Todas as alterações você pod ver aqui

projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009