F42 Change Proposal: DNF5 Expired Keys (System-Wide)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Wiki - https://fedoraproject.org/wiki/Changes/Dnf5ExpiredPGPKeys
Discussion Thread -
https://discussion.fedoraproject.org/t/f42-change-proposal-dnf5-expired-keys-system-wide/138978

This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes
process, proposals are publicly announced in order to receive
community feedback. This proposal will only be implemented if approved
by the Fedora Engineering Steering Committee.

== Summary ==
Implementing new logic in DNF5 to remove expired and obsolete
repository keys from the system.

== Owner ==
* Name: [[User:jkolarik| Jan Kolarik]]
* Email: jkolarik@xxxxxxxxxx



== Detailed Description ==
We aim to address customer issues when installing RPM packages from
repositories while outdated repository keys are present on the system.
These issues include expired keys, obsolete signing algorithms (e.g.,
SHA1), or other problems that could be easily detected by tools like
an RPM PGP linter. Currently, PGP checks fail, and users must manually
remove expired keys using commands like `rpmkeys --delete`.

The proposed solution is a new LIBDNF5 plugin. This plugin will act as
a hook, checking for invalid repository PGP keys on the system before
executing a DNF transaction.

* '''Interactive mode''': The plugin will prompt the user to confirm
the removal of each invalid key.
* '''Non-interactive mode''' (e.g., with `-y` or `--assumeno`): The
plugin will proceed automatically based on the specified user action,
either removing the keys or retaining them.

By default, this behavior will be enabled in DNF5, with the option to
disable it through configuration.

This enhancement stems from a request in
[https://github.com/rpm-software-management/dnf5/issues/1192 upstream
issue] and builds upon
[https://github.com/rpm-software-management/dnf-plugins-core/pull/533
the existing solution in DNF4]. Unlike DNF4's implementation, which is
not enabled by default, this change will be integral to the default
DNF5 functionality, aligning with its role as the primary package
manager in Fedora.

== Feedback ==
The proposed solution has been discussed with affected users,
including the Mock and Copr teams, as part of the discussions around
[https://github.com/rpm-software-management/dnf-plugins-core/pull/533
the existing solution in DNF4].

== Benefit to Fedora ==
This change enables the automatic management of repository keys during
software installation or upgrades.

== Scope ==
* Proposal owners:
** Implement a new LIBDNF5 plugin to manage repository PGP keys automatically.

* Other developers:
** No additional work identified at this time.

* Release engineering: [https://pagure.io/releng/issue/12477 #12477]

* Policies and guidelines: N/A (not needed for this Change)

* Trademark approval: N/A (not needed for this Change)

== Upgrade/compatibility impact ==
No compatibility or upgrade issues expected.

== How To Test ==
A good reproducer is already described in
[https://github.com/rpm-software-management/dnf5/issues/1192#issuecomment-2018483474
this comment] within the upstream issue.

You can list all installed key hashes along with their names using:

`rpmkeys --list`

To query the key block info, use:

`rpm -q --qf "%{DESCRIPTION}" gpg-pubkey-<KEYHASH>` (note: `rpmkeys
--export <KEYHASH>` on newer RPM releases)

To get the end date in a human-readable format, run:

`rpm -q --qf "%{DESCRIPTION}" gpg-pubkey-<KEYHASH> | gpg --show-keys
--with-colon | cut -d':' -f7 | xargs -I{} date -d @{}
`

Note that not all keys have a defined end of validity date.

You can also try running a transaction using a COPR repository with
the `faketime` command from `libfaketime`:

`faketime '+10years' dnf install <pkg_name_from_copr>`

The above should fail without the functionality introduced by this
proposal. After deploying the new plugin, it should prompt the user
about the expired PGP key and ask for removal.

== User Experience ==
For interactive users, a prompt will appear informing them about each
outdated key on the system and asking for confirmation to remove it.
For non-interactive users, there will be no change to the workflow.

== Dependencies ==
No additional work is expected.

== Contingency Plan ==
* Contingency mechanism: Disable the new plugin from running by default.
* Contingency deadline: Fedora 42 branching from Rawhide
* Blocks release? No

== Documentation ==
The new behavior will be documented in the upstream DNF5 documentation.

== Release Notes ==

-- 
Aoife Moloney

Fedora Operations Architect

Fedora Project

Matrix: @amoloney:fedora.im

IRC: amoloney

-- 
_______________________________________________
devel-announce mailing list -- devel-announce@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-announce-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel-announce@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue
-- 
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux