Chef apt_repository начал вылетать из-за ошибок проверки SSL

За последние 2 дня мы начали замечать, что сбои выполнения программы Chef происходят, связанные с ресурсом apt_repository. Аналогичные сбои наблюдались и с исполнением шеф-клиента.

Версия Chef-solo: 12.19.36 ОС: Ubuntu v18 и Ubuntuv14

См. Ниже ошибку при выполнении повар-соло.

      ==> core: [2021-10-04T14:36:46+00:00] ERROR: SSL Validation failure connecting to host: www.postgresql.org - SSL_connect returned=1 errno=0 state=error: certificate verify failed
==> core:
==> core:
==> core: ================================================================================
==> core: Error executing action create on resource 'remote_file[/var/chef/cache/https___www_postgresql_org_media_keys_ACCC4CF8_asc]'
==> core: ================================================================================
==> core:
==> core: OpenSSL::SSL::SSLError
==> core: ----------------------
==> core: SSL Error connecting to https://www.postgresql.org/media/keys/ACCC4CF8.asc - SSL_connect returned=1 errno=0 state=error: certificate verify failed
==> core:
==> core:
==> core: Resource Declaration:
==> core: ---------------------
==> core: # In /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.19.36/lib/chef/provider/apt_repository.rb
==> core:
==> core: 166: declare_resource(type, cached_keyfile) do
==> core: 167: source new_resource.key
==> core: 168: mode "0644"
==> core: 169: sensitive new_resource.sensitive
==> core: 170: action :create
==> core: 171: end
==> core: 172:
==> core:
==> core: Compiled Resource:
==> core:
==> core: ------------------
==> core: # Declared in /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.19.36/lib/chef/provider/apt_repository.rb:166:in `install_key_from_uri'
==> core:

3 ответа

Это связано с центра для истечением срока действия сертификата корневогосертификатовсертификации Let's Encrypt в прошлый четверг .

Для OpenSSL вам необходимо обновить как минимум до 1.1, я полагаю, из-за ошибки в том, как 1.0.1 обрабатывает цепочку сертификатов. Если это невозможно, вам нужно будет удалить сертификат DST Root CA X3 из ОС.

Chef также предоставляет собственные корневые сертификаты, которые он использует вместо ОС. Мне пришлось удалить вышеуказанный сертификат из /opt/chef/embedded/ssl/certs/cacert.pem а также добавить к нему ISRG Root X1.

Более простое исправление, которое также поддерживает синхронизацию сертификатов клиента Chef с вашей системой, заключается в том, чтобы разрешить клиенту Chef использовать ваши системные сертификаты — при условии, что вы не получаете эти ошибки вне запуска клиента Chef.

Для этого удалите существующую символическую ссылку, а затем создайте ее заново, указав на системные сертификаты (в данном примере Ubuntu 18.04):

      $ ls -l /opt/chefdk/embedded/ssl/cert.pem
lrwxrwxrwx 1 root root 16 Jun  2  2020 /opt/chefdk/embedded/ssl/cert.pem -> certs/cacert.pem

# sudo rm /opt/chefdk/embedded/ssl/cert.pem
# sudo ln -s /etc/ssl/certs/ca-certificates.crt /opt/chefdk/embedded/ssl/cert.pem

$ ls -l /opt/chefdk/embedded/ssl/cert.pem
lrwxrwxrwx 1 root root 34 Mar 10 09:16 /opt/chefdk/embedded/ssl/cert.pem -> /etc/ssl/certs/ca-certificates.crt

Чтобы убедиться, что все в порядке:

      $ /opt/chefdk/embedded/bin/openssl s_client -connect some.domain.com:443 -showcerts
CONNECTED(00000003)                                             
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1         
verify return:1                                                 
depth=1 C = US, O = Let's Encrypt, CN = R3                      
verify return:1                                                                 
depth=0 CN = some.domain.com                                    
verify return:1
---                                                             
Certificate chain 

<snip>

    Start Time: 1646864178                                      
    Timeout   : 300 (sec)                                       
    Verify return code: 0 (ok)

<snip>

Вы используете довольно старую версию Chef. Обратите внимание, что с тех пор шеф-повар выпустил новые версии, которые удаляют сертификаты с истекшим сроком действия, а также обновляют OpenSSL. Последние версии Chef 16 и 17 должны решить эту проблему.

Другие вопросы по тегам