fix(sign): corregir rpmsign con GnuPG PKCS11 y firma en spooler
- Configurar GnuPG con gnupg-pkcs11-scd y libsiguldry_pkcs11.so para el usuario root. - Importar clave pública de firma de Siguldry al llavero GPG de root automáticamente. - Modificar el spooler para usar rpmsign con la macro _gpg_name en lugar de Sequoia (_openpgp_sign). - Remover el argumento keyword no soportado 'sigkey' de add_rpm_sig(). - Definir variables de entorno SIGULDRY_SOCKET y CREDENTIALS_DIRECTORY en el servicio systemd del spooler. Co-developed-by: Gemini AI <renich+gemini@woralelandia.com> Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
This commit is contained in:
parent
4b27db4529
commit
bafaa0e840
3 changed files with 52 additions and 4 deletions
|
|
@ -213,11 +213,10 @@ def process_queue():
|
||||||
env['SIGULDRY_SOCKET'] = '/run/siguldry-client-proxy/siguldry-client-proxy.socket'
|
env['SIGULDRY_SOCKET'] = '/run/siguldry-client-proxy/siguldry-client-proxy.socket'
|
||||||
env['CREDENTIALS_DIRECTORY'] = '/etc/credstore'
|
env['CREDENTIALS_DIRECTORY'] = '/etc/credstore'
|
||||||
|
|
||||||
# Sign using rpmsign command with Sequoia backend macro definitions
|
# Sign using rpmsign command with GnuPG backend using PKCS#11 module
|
||||||
cmd = [
|
cmd = [
|
||||||
'rpmsign',
|
'rpmsign',
|
||||||
'--define', '_openpgp_sign sq',
|
'--define', f'_gpg_name {sig_key_id}',
|
||||||
'--define', f'_openpgp_sign_id {sig_key_id}',
|
|
||||||
'--addsign', full_rpm_path
|
'--addsign', full_rpm_path
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -235,7 +234,7 @@ def process_queue():
|
||||||
else:
|
else:
|
||||||
logger.info(f"Successfully signed RPM {rpm_nvr} on disk. Extracting signature header.")
|
logger.info(f"Successfully signed RPM {rpm_nvr} on disk. Extracting signature header.")
|
||||||
sig_data = koji.rip_rpm_sighdr(full_rpm_path)
|
sig_data = koji.rip_rpm_sighdr(full_rpm_path)
|
||||||
kojihub.add_rpm_sig(rpm_id, sig_data, sigkey=sig_key_id)
|
kojihub.add_rpm_sig(rpm_id, sig_data)
|
||||||
logger.info(f"Successfully imported signature for {rpm_nvr} with key {sig_key_id}")
|
logger.info(f"Successfully imported signature for {rpm_nvr} with key {sig_key_id}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error signing RPM {rpm_nvr}: {e}")
|
logger.error(f"Error signing RPM {rpm_nvr}: {e}")
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ Type=simple
|
||||||
ExecStart=/usr/libexec/koji-sign-spooler
|
ExecStart=/usr/libexec/koji-sign-spooler
|
||||||
User=root
|
User=root
|
||||||
Group=apache
|
Group=apache
|
||||||
|
Environment="SIGULDRY_SOCKET=/run/siguldry-client-proxy/siguldry-client-proxy.socket"
|
||||||
|
Environment="CREDENTIALS_DIRECTORY=/etc/credstore"
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -264,3 +264,50 @@
|
||||||
kojiadmin mxos-signing-key
|
kojiadmin mxos-signing-key
|
||||||
--password-file <(echo "{{ gpg_key_passphrase }}")
|
--password-file <(echo "{{ gpg_key_passphrase }}")
|
||||||
when: "'mxos-signing-key' not in siguldry_keys_list.stdout"
|
when: "'mxos-signing-key' not in siguldry_keys_list.stdout"
|
||||||
|
|
||||||
|
- name: Ensure GnuPG directory exists for root user
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /root/.gnupg
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0700"
|
||||||
|
|
||||||
|
- name: Deploy GnuPG gpg-agent.conf for root user
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: /root/.gnupg/gpg-agent.conf
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0600"
|
||||||
|
content: |
|
||||||
|
scdaemon-program /usr/bin/gnupg-pkcs11-scd
|
||||||
|
|
||||||
|
- name: Deploy GnuPG gnupg-pkcs11-scd.conf for root user
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: /root/.gnupg/gnupg-pkcs11-scd.conf
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0600"
|
||||||
|
content: |
|
||||||
|
providers siguldry
|
||||||
|
provider-siguldry-library /usr/lib64/pkcs11/libsiguldry_pkcs11.so
|
||||||
|
|
||||||
|
- name: Kill running gpg-agent to apply PKCS#11 configuration
|
||||||
|
ansible.builtin.command: gpgconf --kill gpg-agent
|
||||||
|
failed_when: false
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Check if Siguldry signing key is imported in root keyring
|
||||||
|
ansible.builtin.command: gpg --list-keys koji@cs10-koji-00.mx-os
|
||||||
|
register: siguldry_gpg_key_check
|
||||||
|
failed_when: false
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Import Siguldry signing key into root keyring
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: >
|
||||||
|
SIGULDRY_SOCKET=/run/siguldry-client-proxy/siguldry-client-proxy.socket
|
||||||
|
CREDENTIALS_DIRECTORY=/etc/credstore
|
||||||
|
siguldry-client --credentials-directory /etc/credstore -c /etc/siguldry/client.toml key get mxos-signing-key --certificates
|
||||||
|
| gpg --import
|
||||||
|
when: siguldry_gpg_key_check.rc != 0
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue