Рейтинг:0

Контейнер Docker CMAKE выдает crypto/fips/fips.c:153: внутренняя ошибка OpenSSL: FATAL FIPS SELFTEST FAILURE — dracut-fips crypto.fips_enabled = 1

флаг in
AKS

Получающий crypto/fips/fips.c:153: внутренняя ошибка OpenSSL: FATAL FIPS SELFTEST FAILURE когда

дракут-фипс пакет установлен и sysctl -а показывает крипто.fips_enabled = 1

Ограничение: Может нет запрещать дракут-фипс пакет или crypto.fips_enable настройка в моем случае.

ВОПРОС:

Как я могу получить cmake --версия работает внутри контейнера?

На этом хосте проблема возникает внутри контейнера, но не в ОС HOST.

someLinuxUser@jenkins-project_team_rh ~]$ hostname -f; имя хоста -i
jenkins-project_team_rh.lewisville.us.company.com
20.10.20.10[someLinuxUser@jenkins-project_team_rh ~]$ кот /etc/redhat-релиз
Red Hat Enterprise Linux Server, выпуск 7.9 (Maipo)
[someLinuxUser@jenkins-project_team_rh ~]$
[someLinuxUser@jenkins-project_team_rh ~]$ cmake --version
cmake версии 3.18.2

Пакет CMake поддерживается и поддерживается Kitware (kitware.com/cmake).

Список и запуск контейнера OpenSuse 15.2

[someLinuxUser@jenkins-project_team_rh ~]$ sudo docker image ls
ТЕГ РЕПОЗИТОРИЯ ИДЕНТИФИКАТОР ИЗОБРАЖЕНИЯ РАЗМЕР СОЗДАН
opensuse-image 15.2 618840498a55 3 часа назад 2.59GB

Запустить Docker-контейнер

ТЕПЕРЬ я внутри контейнера. Запуск «cmake --version» здесь завершается с ошибкой.

ПРИМЕЧАНИЕ: Тот же образ докера будет работать нормально, если у вас есть ЛЮБАЯ хост-ОС, где «sysctl -a | grep fips» будет показывать «crypto.fips_enabled = 0» в своем выводе. Таким образом, нам может потребоваться установить это значение равным 0.

[someLinuxUser@jenkins-project_team_rh ~]$ sudo docker run -it opensuse-image:15.2 bash
Пароль активного каталога:
ВНИМАНИЕ! Переадресация IPv4 отключена. Сеть работать не будет.
docker_nonroot_user@eaa40032f4d3:~/git>


docker_nonroot_user@eaa40032f4d3:~/git> какой cmake; cmake --версия
/usr/bin/cmake
crypto/fips/fips.c:153: внутренняя ошибка OpenSSL: FATAL FIPS SELFTEST FAILURE
Прервано (сброшено ядро)
docker_nonroot_user@eaa40032f4d3:~/git>

docker_nonroot_user@3e63938cf7e7:~/git> cat /etc/os-release
NAME="прыжок openSUSE"
ВЕРСИЯ = "15.2"
ID="opensuse-прыжок"
ID_LIKE="использовать openuse"
VERSION_ID="15.2"
PRETTY_NAME="openSUSE Leap 15.2"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:прыжок:15.2"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"

Либо в ОС HOST (RH 7.9) --/-- внутри контейнера Docker (OpenSuse 15.2) Работает:

[someLinuxUser@jenkins-project_team_rh ~]$ sysctl -a | grep fips_enabled
крипто.fips_enabled = 1

то есть он показывает, что fips включен на этом HOST-компьютере. Я думаю, если это (crypto.fips_enabled был установлен на = 0), то мы можем не увидеть эту проблему с cmake, но в моем случае я не могу отключить этот параметр.

На хост-компьютере есть несколько связанных пакетов:

[someLinuxUser@jenkins-project_team_rh ~]$ список sudo yum установлен | egrep "fips|openssl|dracut"
dracut-fips.x86_64 033-572.el7 @rhel-x86_64-server-7
fipscheck.x86_64 1.4.1-6.el7 @anaconda/7.6
fipscheck-lib.x86_64 1.4.1-6.el7 @anaconda/7.6
CentrifyDC-openssl.x86_64 5.7.1-347 установлен
openssl.x86_64 1:1.0.2k-22.el7_9 @q1_rhel-x86_64-сервер-7
openssl-devel.x86_64 1:1.0.2k-22.el7_9 @q1_rhel-x86_64-сервер-7
openssl-libs.x86_64 1:1.0.2k-22.el7_9 @q1_rhel-x86_64-сервер-7
openssl098e.x86_64 0.9.8e-29.el7_2.3 @анаконда/7.6
xmlsec1-openssl.x86_64 1.2.20-7.el7_4 @anaconda/7.6
dracut.x86_64 033-572.el7 @rhel-x86_64-сервер-7
dracut-config-rescue.x86_64 033-572.el7 @rhel-x86_64-server-7
dracut-network.x86_64 033-572.el7 @rhel-x86_64-server-7
[someLinuxUser@jenkins-project_team_rh ~]$

ТЕПЕРЬ, Доказательство того, что образ/контейнер DOCKER, использованный выше, неплох.

Использование одного и того же образа Docker на другом компьютере с той же ОС HOST.

Этот другой хост-компьютер с ОС RH 7.9, который у меня есть, имеет тот же образ докера, когда я запускаю тот же образ OpenSuse 15.2 в качестве контейнера докера и запускаю cmake --версия, все работает нормально и я не вижу этой ошибки.

Бег:

[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ имя хоста -f; имя хоста -i
rh_7_9_os_machine.company.local
10.100.100.10
[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server, выпуск 7.9 (Maipo)

[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ sudo docker image ls
ТЕГ РЕПОЗИТОРИЯ ИДЕНТИФИКАТОР ИЗОБРАЖЕНИЯ РАЗМЕР СОЗДАН
opensuse-image 15.2 618840498a55 3 часа назад 2.59GB

Этот ХОСТ показывает:

[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ sysctl -a 2>/dev/null | grep fips_enabled
крипто.fips_enabled = 0

Запуск образа Docker --> контейнер и cmake --версия в нем работает!

[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ sudo docker run -it opensuse-image:15.2 bash
docker_nonroot_user@fb751d198066:~/git>
docker_nonroot_user@fb751d198066:~/git> sysctl -a 2>/dev/null | grep фипс
крипто.fips_enabled = 0
docker_nonroot_user@fb751d198066:~/git>
docker_nonroot_user@fb751d198066:~/git> cmake --version
cmake версии 3.17.0

Пакет CMake поддерживается и поддерживается Kitware (kitware.com/cmake).
docker_nonroot_user@fb751d198066:~/git> выход

Пакеты YUM на HOST-машине:

[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ установлен список sudo yum |grep fips
fipscheck.x86_64 1.4.1-6.el7 @anaconda/7.4
fipscheck-lib.x86_64 1.4.1-6.el7 @anaconda/7.4
[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$

[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ список sudo yum установлен |grep openssl
openssl.x86_64 1:1.0.2k-22.el7_9 @rhel-7-сервер-rhui-rpms
openssl-devel.x86_64 1:1.0.2k-22.el7_9 @rhel-7-server-rhui-rpms
openssl-libs.x86_64 1:1.0.2k-22.el7_9 @rhel-7-сервер-rhui-rpms
openssl11-libs.x86_64 1:1.1.1g-2.el7 @epel
xmlsec1-openssl.x86_64 1.2.20-7.el7_4 @rhui-REGION-rhel-server-релизы
[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$

[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ установлен список sudo yum |grep dracut\-fips
[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$
[gigauser@rh_7_9_os_machine opensuse-x-project_team_-mse]$ список sudo yum установлен |grep dracut
dracut.x86_64 033-572.el7 @rhel-7-server-rhui-rpms
dracut-config-generic.x86_64 033-572.el7 @rhel-7-server-rhui-rpms
dracut-config-rescue.x86_64 033-572.el7 @rhel-7-server-rhui-rpms
dracut-network.x86_64 033-572.el7 @rhel-7-server-rhui-rpms

Как вы можете видеть выше, есть НЕТ пакет с именем дракут-фипс установлен на этой машине, предполагая, что поэтому крипто.fips_enabled = 0 и «cmake --version» работает на этом HOST и внутри контейнера!

ВОПРОС:

Как я могу получить cmake --версия работает внутри контейнера? когда я не могу удалить дракут-фипс упаковать и отключить FIPS, установив крипто.fips_enabled = 0 на первой ОС HOST.

Рейтинг:0
флаг in
AKS

Решение найдено

ПОЧЕМУ этот вопрос приближался: Сборка Docker (для создания образа) была запущена на машине (другой машине, где cmake работал внутри контейнера докеров)... т. е. где не был установлен FIPS. На этапе сборки был запущен файл Docker. zypper установить cmake (или же ням установить cmake).

Поскольку FIPS был отключен на машине, на которой был создан образ докера, cmake был установлен в образе докера, не понимая, что FIPS включен/установлен dracut-fips.

Затем, когда вы копируете этот образ и используете его на машине, где FIPS фактически ВКЛЮЧЕН, тогда cmake завершается ошибкой с этим сообщением об ошибке: crypto/fips/fips.c:153: внутренняя ошибка OpenSSL: FATAL FIPS SELFTEST FAILURE

На самом деле есть 2 решения.

--

Решение №1: правильно пометьте образ докера.

Резюме:

PS: Если вы установите cmake, используя приведенное выше, то он будет работать только на целевой машине, на которой вы запускаете контейнер, если FIPS этой машины отключен или включен во время сборки. т. е. если FIPS был включен, вы устанавливаете cmake и запускаете его на машине, где настройки FIPS НЕ совпадают с настройками хоста, на котором был создан образ, тогда вы будете читать этот пост для получения помощи.

Лучшим способом, если вы хотите установить cmake с помощью вышеуказанных менеджеров пакетов, было бы правильно пометить образ докера во время создания образа, т.е.:

docker build -t <image-name>-fips-enabled... если FIPS включен

и

docker build -t <image-name>-fips-disabled ... если FIPS на той то машине отключен.

Таким образом, вы можете выбрать правильный образ докера. imagename-fips-включено против imagename-fips-отключен соотв. какова настройка FIPS вашей целевой машины (где вы фактически будете выполнять докер работает... используя это изображение).

--

Решение №2: не используйте zypper (OpenSuse) или yum, если у вас есть контейнер RedHat. и это решение является гибким в том смысле, что это независимо от настройки FIPS = 0 / 1 на хосте, на котором был создан образ.

я не использовал застежка-молния/ням установить cmake внутри Докерфайл, а просто схватил cmake-3.18.2-Linux-x86_64.tar.gz пакетный файл.

В Dockerfile я просто извлек этот файл .tar.gz в какой-то каталог. Также я установил экспортировать ПУТЬ:/путь/куда/я/установил/cmake-3.18.2../bin:/..some_other_paths:/...:/.... в Dockerfile внутри оператора RUN.

то есть RUN export PATH=/path/where/I/installed/cmake-3.18.2../bin:/...... && <здесь больше команд> && <здесь еще несколько команд> && ... и т.д., поэтому он может найти извлеченный cmake 3.18.2 для любого времени сборки (операции cmake), а также установить то же самое ПУТЬ=/... переменная как ENV PATH=/.... то же значение, которое используется во время RUN для PATH поэтому во время выполнения, когда контейнер запускается, $PATH настроен для поиска cmake (версия 3.18.2), а не использовать какие-либо существующие /usr/bin/cmake или еще какая хрень).

Снимок Dockerfile:

# curl -k -sSf -H "X-JFrog-Art-Api:dslfhjlieurqwihlj233lk2l4j6p9usdkajdfasddl809842iiijhlkhflhafOHIHFLyeaGoodLuck" \
# -o /tmp/cmake.tar.gz https://artifactory.company.com/artifactory/some-Local/cmake/cmake-3.18.2-Linux-x86_64.tar.gz && \

и

Как мой умаск настройки были установлены на 022, мне не пришлось выполнять какую-либо операцию chmod после распаковки:

# echo -e "\n-- Установка CMake ...\n" && \
# tar -xvzpf /tmp/cmake.tar.gz -C /home/docker_nonroot_user/tools/ && \

Внутри док-контейнера, как ПУТЬ ОКОНЧ.=/... был установлен в Dockerfile для этого целевого пути, правильный cmake 3.18.2 использовался во время выполнения контейнера докеров.

cmake установленное местоположение в моем случае было:

/home/docker_nonroot_user/tools/cmake-3.18.2-Linux-x86_64/bin/cmake

ПУТЬ внутри контейнера докеров был:

/home/docker_nonroot_user/tools/cov-analysis/bin:/home/docker_nonroot_user/tools/cmake-3.18.2-Linux-x86_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin :/usr/бен:/sbin:/бен

РЕЗУЛЬТАТ:

Использование образа Docker, созданного с использованием РЕШЕНИЕ №2 выше, т.е. образ докера, созданный на машине где FIPS = 0, он же ОТКЛЮЧЕН и затем позже, используя этот же образ для создания контейнера на совершенно другой целевой хост-машине где FIPS = 1, он же ENABLED, Я понимаю:

87d8104d8c41:/home/docker_nonroot_user # sysctl -a|grep fips_en
крипто.fips_enabled = 1
87d8104d8c41:/home/docker_nonroot_user #
87d8104d8c41:/home/docker_nonroot_user # который cmake
/usr/bin/cmake
87d8104d8c41:/home/docker_nonroot_user #
87d8104d8c41:/home/docker_nonroot_user # cmake --version
crypto/fips/fips.c:153: внутренняя ошибка OpenSSL: FATAL FIPS SELFTEST FAILURE
Прервано (сброшено ядро)
87d8104d8c41:/home/docker_nonroot_user #

87d8104d8c41:/home/docker_nonroot_user #
87d8104d8c41:/home/docker_nonroot_user # ls -l /home/docker_nonroot_user/tools/cmake-3.18.2-Linux-x86_64/bin
всего 75504
-rwxr-xr-x 1 root root 11908568 20 августа 2020 г. ccmake
-rwxr-xr-x 1 root root 12096216 20 августа 2020 г. cmake
-rwxr-xr-x 1 root root 27476480 20 августа 2020 г. cmake-gui
-rwxr-xr-x 1 root root 12398808 20 августа 2020 г. cpack
-rwxr-xr-x 1 root root 13318712 20 августа 2020 г. ctest
87d8104d8c41:/home/docker_nonroot_user #
87d8104d8c41:/home/docker_nonroot_user # ls -l /home/docker_nonroot_user/tools/cmake-3.18.2-Linux-x86_64/bin/cmake
-rwxr-xr-x 1 root root 12096216 20 августа 2020 г. /home/docker_nonroot_user/tools/cmake-3.18.2-Linux-x86_64/bin/cmake
87d8104d8c41:/home/docker_nonroot_user #
87d8104d8c41:/home/docker_nonroot_user # /home/docker_nonroot_user/tools/cmake-3.18.2-Linux-x86_64/bin/cmake --version
cmake версии 3.18.2

Пакет CMake поддерживается и поддерживается Kitware (kitware.com/cmake).
87d8104d8c41:/home/docker_nonroot_user # : С Рождеством Баааааааааааааааааааааааа! - больше нет дерьмовой ошибки FIPS. Далее я исправлю chown на ~<user> и закрою свою историю.

РЕШЕНИЕ №3: вы можете отключить FIPS но только если вам это разрешено, то вам не нужно решение №1 или решение №2.

Ответить или комментировать

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