Bug 59182

Summary: Не создаются ssl ключи при установке foreman
Product: Sisyphus Reporter: Alexander Makeenkov <amakeenk>
Component: foremanAssignee: majioa <majioa>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: 3aHyga, cas, majioa, pav, placeholder
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Alexander Makeenkov 2026-05-14 13:27:55 MSK
foreman-3.18.1-alt1

Настройка и запуск согласно https://www.altlinux.org/Foreman

Запуск сервиса завершается ошибкой:

systemd[1]: Starting foreman.service - Foreman...
systemd[1]: Starting nginx.service - The nginx HTTP and reverse proxy server...
nginx[3681]: nginx: [emerg] cannot load certificate "/etc/foreman/ssl_cert.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/foreman/ssl_cert.pem, r) error:10000080:BIO routines::no such file)
nginx[3681]: nginx: configuration file /etc/nginx/nginx.conf test failed
systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
systemd[1]: nginx.service: Failed with result 'exit-code'.
systemd[1]: Failed to start nginx.service - The nginx HTTP and reverse proxy server.
systemd[1]: Dependency failed for foreman.service - Foreman.

Ключей, которые прописаны в nginx конфигурации, на самом деле нет:

# grep /etc/foreman/ssl_ /etc/nginx/sites-enabled.d/foreman.conf
   ssl_certificate /etc/foreman/ssl_cert.pem;
   ssl_certificate_key /etc/foreman/ssl_key.pem;
   ssl_trusted_certificate /etc/foreman/ssl_cert.pem;

# l /etc/foreman/ssl_*
ls: невозможно получить доступ к '/etc/foreman/ssl_*': Нет такого файла или каталога

Судя по спеку ключи генерируются при установке. В логе /var/log/foreman/key_generation.log такая ошибка:
/bin/puppetserver: строка 71: /usr/share/puppetserver/cli/apps/ca: cannot execute: required file not found

Файл есть:
# l /usr/share/puppetserver/cli/apps/ca
-rwxr-xr-x 1 root root 85 авг 29  2025 /usr/share/puppetserver/cli/apps/ca

При выполнении команды из спека вручную возникает ошибка:
# puppetserver ca setup --certname $(hostname) --subject-alt-names $(hostname)
The cadir is currently configured to be inside the /etc/puppet/ssl directory. This config setting and the directory location will not be used in a future version of puppet. Please run the puppetserver ca tool to migrate out from the puppet confdir to the /etc/puppetlabs/puppetserver/ca directory (if haven't changed). Use `puppetserver ca migrate --help` for more info.
/usr/lib/ruby/gemie/gems/puppetserver-ca-2.7.0.1/lib/puppetserver/ca/host.rb:83:in `version=': X509_REQ_set_version: passed invalid argument (OpenSSL::X509::RequestError)
        from /usr/lib/ruby/gemie/gems/puppetserver-ca-2.7.0.1/lib/puppetserver/ca/host.rb:83:in `create_csr'
        from /usr/lib/ruby/gemie/gems/puppetserver-ca-2.7.0.1/lib/puppetserver/ca/local_certificate_authority.rb:260:in `create_intermediate_cert'
        from /usr/lib/ruby/gemie/gems/puppetserver-ca-2.7.0.1/lib/puppetserver/ca/action/setup.rb:80:in `generate_pki'
        from /usr/lib/ruby/gemie/gems/puppetserver-ca-2.7.0.1/lib/puppetserver/ca/action/setup.rb:69:in `run'
        from /usr/lib/ruby/gemie/gems/puppetserver-ca-2.7.0.1/lib/puppetserver/ca/cli.rb:102:in `run'
        from /usr/share/puppetserver/cli/apps/ca:5:in `<main>'

Регресс относительно версии foreman-3.13.0-alt2 из р11, там ключи создаются:
# l /etc/foreman/ssl_*
-rw-r----- 1 puppet puppet 3243 мая 14 12:39 /etc/foreman/ssl_key.pem
-rw-r----- 1 puppet puppet 2313 мая 14 12:39 /etc/foreman/ssl_cert.pem
Comment 1 Alexander Makeenkov 2026-05-25 18:33:39 MSK
Сервис самого foreman в итоге оказывается запущен, но доступен только по http://127.0.0.1:2346. Недоступен прокси, который должен быть запущен на 2345, но не запускается.
Comment 2 Малъ Скрылевъ 2026-05-26 15:26:15 MSK
(Ответ для Alexander Makeenkov на комментарий #1)
> Сервис самого foreman в итоге оказывается запущен, но доступен только по
> http://127.0.0.1:2346. Недоступен прокси, который должен быть запущен на
> 2345, но не запускается.

чтобы онъ сталъ запущенымъ на 2345--мъ порту, нужно запустить nginx

см. https://www.altlinux.org/Foreman#%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA_%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0
Comment 3 Alexander Makeenkov 2026-05-26 15:33:36 MSK
(Ответ для Малъ Скрылевъ на комментарий #2)
> чтобы онъ сталъ запущенымъ на 2345--мъ порту, нужно запустить nginx

Прочитайте описание бага, пожалуйста.
Comment 4 Малъ Скрылевъ 2026-05-26 16:29:12 MSK
(Ответ для Alexander Makeenkov на комментарий #3)
> (Ответ для Малъ Скрылевъ на комментарий #2)
> > чтобы онъ сталъ запущенымъ на 2345--мъ порту, нужно запустить nginx
> 
> Прочитайте описание бага, пожалуйста.

я видѣлъ, трѣбованіе запуска nginx къ bug-у не относится
Comment 5 Alexander Makeenkov 2026-05-26 16:33:35 MSK
(Ответ для Малъ Скрылевъ на комментарий #4)
> трѣбованіе запуска nginx къ bug-у не относится

nginx не запускается, потому что ключи, которые прописаны в конфиге, не созданы. Если ожидается, что пользователь должен всё создать и поправить ручками, то зачем это делать в пакете?
Comment 6 Alexander Makeenkov 2026-06-16 10:29:19 MSK
Самый простой способ воспроизвести/проверить:

1. Установить foreman:
# apt-get install foreman

2. Проверить корректность конфигурации, которую он создал:
# nginx -t

Получаем ошибку:

nginx: [emerg] cannot load certificate "/etc/foreman/ssl_cert.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/foreman/ssl_cert.pem, r) error:10000080:BIO routines::no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed

В логах:

# cat /var/log/foreman/key_generation.log
/bin/puppetserver: строка 71: /usr/share/puppetserver/cli/apps/ca: cannot execute: required file not found
Comment 7 Малъ Скрылевъ 2026-06-16 17:58:37 MSK
(Ответ для Alexander Makeenkov на комментарий #6)
> Самый простой способ воспроизвести/проверить:
> 
> 1. Установить foreman:
> # apt-get install foreman
> А по  инструкціи устанавлиали?
Comment 8 Alexander Makeenkov 2026-06-16 17:59:43 MSK
(Ответ для Малъ Скрылевъ на комментарий #7)
> А по  инструкціи устанавлиали?

самый первый комментарий в этом баге прочитайте
Comment 9 pav@altlinux.org 2026-06-16 20:30:17 MSK
За создание сертификатов отвечает Puppetserver.

На вики https://www.altlinux.org/Puppet внесены уточнения по настройке для p11 и Sisyphus.
Comment 10 Alexander Makeenkov 2026-06-17 09:31:16 MSK

(Ответ для Alexander Makeenkov на комментарий #0)
> Судя по спеку ключи генерируются при установке. В логе
> /var/log/foreman/key_generation.log такая ошибка:
> /bin/puppetserver: строка 71: /usr/share/puppetserver/cli/apps/ca: cannot
> execute: required file not found

Почему вы игнорируете этот факт? Мейнтейнер пакета не в курсе, как собирается его пакет?

Смотрим спек https://packages.altlinux.org/ru/sisyphus/srpms/foreman/specfiles/#line-577

```
%post
# ssl key generation
puppetserver ca setup --certname $(hostname) --subject-alt-names $(hostname) >> /var/log/foreman/key_generation.log 2>&1
```

Сразу после установки foreman смотрим в логи и проверяем корректность nginx конфигурации:

foreman-3.18.1-alt1 из сизифа:
```
# cat /var/log/foreman/key_generation.log
/bin/puppetserver: строка 71: /usr/share/puppetserver/cli/apps/ca: cannot execute: required file not found

# nginx -t
nginx: [emerg] cannot load certificate "/etc/foreman/ssl_cert.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/foreman/ssl_cert.pem, r) error:10000080:BIO routines::no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed
```

foreman-3.13.0-alt2 из р11:
```
# cat /var/log/foreman/key_generation.log
The cadir is currently configured to be inside the /etc/puppet/ssl directory. This config setting and the directory location will not be used in a future version of puppet. Please run the puppetserver ca tool to migrate out from the puppet confdir to the /etc/puppetserver/ca directory. Use `puppetserver ca migrate --help` for more info.
Generation succeeded. Find your files in /etc/puppet/ssl/ca

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

(Ответ для pav@altlinux.org на комментарий #9)
> На вики https://www.altlinux.org/Puppet внесены уточнения по настройке для
> p11 и Sisyphus.

В р11 сейчас проблемы с этим нет, она появляется в задании 386648, и я пытаюсь не допустить его прохождения в таком виде, но меня почему-то не слушают и пытаются скрыть проблему костылями через инструкцию по установке (как уже произошло с https://bugzilla.altlinux.org/53391).
Comment 11 Малъ Скрылевъ 2026-06-17 11:54:44 MSK
(Ответ для Alexander Makeenkov на комментарий #10)
> 
> (Ответ для Alexander Makeenkov на комментарий #0)
> > Судя по спеку ключи генерируются при установке. В логе
> > /var/log/foreman/key_generation.log такая ошибка:
> > /bin/puppetserver: строка 71: /usr/share/puppetserver/cli/apps/ca: cannot
> > execute: required file not found
> 
> Почему вы игнорируете этот факт? Мейнтейнер пакета не в курсе, как
> собирается его пакет?
> 
> Смотрим спек
> https://packages.altlinux.org/ru/sisyphus/srpms/foreman/specfiles/#line-577
> 
> ```
> %post
> # ssl key generation
> puppetserver ca setup --certname $(hostname) --subject-alt-names $(hostname)
> >> /var/log/foreman/key_generation.log 2>&1
> ```
> 

То есть вы пытаетесь утверждать, что эти строчки (по созданію ключа, а также первичной самонастройкѣ foreman-а) въ спекѣ не нужны?
Comment 12 Alexander Makeenkov 2026-06-17 11:58:47 MSK
(Ответ для Малъ Скрылевъ на комментарий #11)
> То есть вы пытаетесь утверждать, что эти строчки (по созданію ключа, а также
> первичной самонастройкѣ foreman-а) въ спекѣ не нужны?

Нет. Они нужны. Но они не работают и падают с ошибкой. Что приводит к тому, что ключи не создаются.
Comment 13 Малъ Скрылевъ 2026-06-17 15:36:25 MSK
(Ответ для Alexander Makeenkov на комментарий #12)
> (Ответ для Малъ Скрылевъ на комментарий #11)
> > То есть вы пытаетесь утверждать, что эти строчки (по созданію ключа, а также
> > первичной самонастройкѣ foreman-а) въ спекѣ не нужны?
> 
> Нет. Они нужны. Но они не работают и падают с ошибкой. Что приводит к тому,
> что ключи не создаются.

а я думаю, что они какъ разъ не нужны, потому что не приводятъ къ гарантированной настройкѣ приложенія, къ которой приводитъ только слѣдованіе инструкціи изъ ссылки въ комментаріи изъ постустановки. А тѣ строчки были только добавлены только для упрощенія оно въ нѣкоторыхъ случаяхъ
Comment 14 Alexander Makeenkov 2026-06-17 15:44:14 MSK
(Ответ для Малъ Скрылевъ на комментарий #13)
> а я думаю, что они какъ разъ не нужны, потому что не приводятъ къ
> гарантированной настройкѣ приложенія, къ которой приводитъ только слѣдованіе
> инструкціи изъ ссылки въ комментаріи изъ постустановки. А тѣ строчки были
> только добавлены только для упрощенія оно въ нѣкоторыхъ случаяхъ

Конечно, проще пользователей отправлять настраивать всё руками, чем исправить то, что работало, а теперь сломалось.

(Ответ для Alexander Makeenkov на комментарий #10)
> foreman-3.13.0-alt2 из р11:
> ```
> # cat /var/log/foreman/key_generation.log
> The cadir is currently configured to be inside the /etc/puppet/ssl
> directory. This config setting and the directory location will not be used
> in a future version of puppet. Please run the puppetserver ca tool to
> migrate out from the puppet confdir to the /etc/puppetserver/ca directory.
> Use `puppetserver ca migrate --help` for more info.
> Generation succeeded. Find your files in /etc/puppet/ssl/ca
> 
> # nginx -t
> nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
> nginx: configuration file /etc/nginx/nginx.conf test is successful
> ```

> скрыть проблему костылями через инструкцию по установке
> (как уже произошло с https://bugzilla.altlinux.org/53391).