Score:0

คอนเทนเนอร์นักเทียบท่า 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 เมื่อไร

dracut-fips ติดตั้งแพ็คเกจแล้ว และ sysctl -a แสดง crypto.fips_enabled = 1

ข้อจำกัด: สามารถ ไม่ ปิดการใช้งาน dracut-fips แพคเกจหรือ crypto.fips_enable การตั้งค่าในกรณีของฉัน

คำถาม:

ฉันจะได้รับได้อย่างไร cmake -- รุ่น ทำงานภายในคอนเทนเนอร์?

โฮสต์นี้เป็นจุดที่ปัญหาเกิดขึ้นภายในคอนเทนเนอร์ แต่ไม่ใช่ของ HOST OS

someLinuxUser@jenkins-project_team_rh ~]$ ชื่อโฮสต์ -f; ชื่อโฮสต์ -i
jenkins-project_team_rh.lewisville.us.company.com
10.20.20.10[someLinuxUser@jenkins-project_team_rh ~]$ cat /etc/redhat-release
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 ls
รหัสภาพแท็กพื้นที่เก็บข้อมูลที่สร้างขนาด
openuse-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 openuse-image:15.2 bash
รหัสผ่านไดเรกทอรีที่ใช้งานอยู่:
คำเตือน: การส่งต่อ IPv4 ถูกปิดใช้งาน ระบบเครือข่ายจะไม่ทำงาน
นักเทียบท่า_nonroot_user@eaa40032f4d3:~/git>


docker_nonroot_user@eaa40032f4d3:~/git> ซึ่ง cmake; cmake -- รุ่น
/usr/bin/cmake
crypto/fips/fips.c:153: ข้อผิดพลาดภายใน OpenSSL: FATAL FIPS SELFTEST FAILURE
ยกเลิก (ทิ้งแกนกลาง)
นักเทียบท่า_nonroot_user@eaa40032f4d3:~/git>

นักเทียบท่า_nonroot_user@3e63938cf7e7:~/git> cat /etc/os-release
NAME="openSUSE กระโดด"
รุ่น = "15.2"
ID = "opensuse-leap"
ID_LIKE="suse openuse"
VERSION_ID="15.2"
PRETTY_NAME="openSUSE Leap 15.2"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.2"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"

บน HOST OS (RH 7.9) --/-- ภายในคอนเทนเนอร์ Docker (OpenSuse 15.2) กำลังทำงาน:

[someLinuxUser@jenkins-project_team_rh ~]$ sysctl -a | grep fips_enabled
crypto.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 แล้ว
opensl.x86_64 1:1.0.2k-22.el7_9 @q1_rhel-x86_64-server-7
opensl-devel.x86_64 1:1.0.2k-22.el7_9 @q1_rhel-x86_64-server-7
opensl-libs.x86_64 1:1.0.2k-22.el7_9 @q1_rhel-x86_64-server-7
opensl098e.x86_64 0.9.8e-29.el7_2.3 @anaconda/7.6
xmlsec1-openssl.x86_64 1.2.20-7.el7_4 @anaconda/7.6
dracut.x86_64 033-572.el7 @rhel-x86_64-server-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 OS เดียวกัน

เครื่องโฮสต์ RH 7.9 OS อีกเครื่องที่ฉันมีมีอิมเมจนักเทียบท่าเดียวกันเมื่อฉันเริ่มอิมเมจ OpenSuse 15.2 เดียวกันกับคอนเทนเนอร์นักเทียบท่าและเรียกใช้ cmake -- รุ่นทุกอย่างทำงานได้ดีและฉันไม่เห็นข้อผิดพลาดนี้

วิ่ง:

[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$ ชื่อโฮสต์ -f; ชื่อโฮสต์ -i
rh_7_9_os_machine.company.local
10.100.100.10
[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server รีลีส 7.9 (Maipo)

[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$ รูปภาพ sudo docker ls
รหัสภาพแท็กพื้นที่เก็บข้อมูลที่สร้างขนาด
openuse-image 15.2 618840498a55 3 ชั่วโมงที่แล้ว 2.59GB

โฮสต์นี้แสดง:

[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$ sysctl -a 2>/dev/null | grep fips_enabled
crypto.fips_enabled = 0

เรียกใช้อิมเมจ Docker -> คอนเทนเนอร์และ cmake -- รุ่น ในนั้นใช้งานได้!

[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$ sudo docker run -it openuse-image:15.2 bash
นักเทียบท่า_nonroot_user@fb751d198066:~/git>
นักเทียบท่า_nonroot_user@fb751d198066:~/git> sysctl -a 2>/dev/null | grep fips
crypto.fips_enabled = 0
นักเทียบท่า_nonroot_user@fb751d198066:~/git>
นักเทียบท่า_nonroot_user@fb751d198066:~/git> cmake --version
cmake รุ่น 3.17.0

ชุดโปรแกรม CMake ดูแลและสนับสนุนโดย Kitware (kitware.com/cmake)
นักเทียบท่า_nonroot_user@fb751d198066:~/git> ออก

แพ็คเกจ YUM บนเครื่อง HOST คือ:

[gigauser@rh_7_9_os_machine openuse-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 openuse-x-project_team_-mse]$

[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$ ติดตั้งรายการ sudo yum |grep openssl
opensl.x86_64 1:1.0.2k-22.el7_9 @rhel-7-server-rhui-rpms
opensl-devel.x86_64 1:1.0.2k-22.el7_9 @rhel-7-server-rhui-rpms
opensl-libs.x86_64 1:1.0.2k-22.el7_9 @rhel-7-server-rhui-rpms
opensl11-libs.x86_64 1:1.1.1g-2.el7 @epel
xmlsec1-openssl.x86_64 1.2.20-7.el7_4 @rhui-REGION-rhel-server-releases
[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$

[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$ ติดตั้งรายการ sudo yum |grep dracut\-fips
[gigauser@rh_7_9_os_machine openuse-x-project_team_-mse]$
[gigauser@rh_7_9_os_machine openuse-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

ดังที่คุณเห็นด้านบนมี ไม่ แพ็คเกจชื่อ dracut-fips ติดตั้งในเครื่องนี้โดยสันนิษฐานว่าเป็นเหตุผล crypto.fips_enabled = 0 และ "cmake --version" ใช้งานได้กับ HOST นี้และภายในคอนเทนเนอร์เช่นกัน !!

คำถาม:

ฉันจะได้รับได้อย่างไร cmake -- รุ่น ทำงานภายในคอนเทนเนอร์? เมื่อฉันไม่สามารถถอนการติดตั้ง dracut-fips แพ็คเกจและปิดการใช้งาน FIPS โดยมี crypto.fips_enabled = 0 บน HOST OS แรก

Score:0
ธง in
AKS

พบวิธีแก้ปัญหา

ทำไม ปัญหานี้กำลังมา: บิลด์นักเทียบท่า (เพื่อสร้างอิมเมจ) ถูกเรียกใช้บนเครื่อง (เครื่องอื่นที่ cmake ทำงานภายในคอนเทนเนอร์นักเทียบท่า)... เช่น ที่ไม่ได้ติดตั้ง FIPS ในระหว่างขั้นตอนการสร้าง ไฟล์ Docker กำลังทำงานอยู่ zipper ติดตั้ง cmake (หรือ ยำติดตั้ง cmake).

เนื่องจาก FIPS ถูกปิดใช้งานบนเครื่องที่สร้างอิมเมจนักเทียบท่า ซมเมค ถูกติดตั้งในอิมเมจนักเทียบท่าโดยไม่เข้าใจว่าเปิดใช้งาน FIPS / ติดตั้ง dracut-fips

จากนั้น เมื่อคุณคัดลอกอิมเมจนี้และใช้งานบนเครื่องที่เปิดใช้งาน FIPS จริง ๆ แล้ว cmake จะล้มเหลวพร้อมกับข้อความแสดงข้อผิดพลาดนั้น: crypto/fips/fips.c:153: ข้อผิดพลาดภายใน OpenSSL: FATAL FIPS SELFTEST FAILURE

จริงๆแล้วมี 2 ทางแก้

--

โซลูชัน #1: แท็กภาพนักเทียบท่าของคุณอย่างเหมาะสม

สรุป:

ป.ล.: หากคุณติดตั้ง cmake โดยใช้ด้านบน มันจะทำงานบนเครื่องเป้าหมายที่คุณเรียกใช้คอนเทนเนอร์เท่านั้น หาก FIPS ของเครื่องนั้นถูกปิดใช้งานหรือเปิดใช้งานในขณะที่สร้าง เช่น หากเปิดใช้งาน FIPS คุณจะติดตั้ง cmake และเรียกใช้บนเครื่องที่ไม่มีการตั้งค่า FIPS เดียวกันกับโฮสต์ ซึ่งเป็นตำแหน่งที่สร้างอิมเมจ คุณจะอ่านโพสต์นี้เพื่อขอความช่วยเหลือ

วิธีที่ดีกว่าในกรณีที่คุณต้องการติดตั้ง cmake โดยใช้ตัวจัดการแพ็คเกจด้านบน จะเป็นการติดแท็กอิมเมจนักเทียบท่าของคุณอย่างเหมาะสมในช่วงเวลาสร้างอิมเมจ เช่น:

นักเทียบท่า build -t <image-name>-fips-enabled ... หากเปิดใช้งาน FIPS

และ

นักเทียบท่า build -t <image-name>-fips-disabled ... หาก FIPS บนเครื่องนั้นถูกปิดใช้งาน

ด้วยวิธีนี้ คุณสามารถเลือกอิมเมจนักเทียบท่าที่ถูกต้องได้ เปิดใช้ imagename-fips เทียบกับ imagename-fips-ปิดใช้งาน ตามมาตรฐาน การตั้งค่า FIPS ของเครื่องเป้าหมายของคุณคืออะไร (ซึ่งคุณจะต้องดำเนินการจริง นักเทียบท่ารัน ... โดยใช้ภาพนี้)

--

โซลูชัน #2: อย่าใช้ zypper (OpenSuse) หรือ yum หากคุณมีคอนเทนเนอร์ RedHat และ โซลูชันนี้มีความยืดหยุ่น ในความหมายก็คือ ไม่ขึ้นกับการตั้งค่า FIPS = 0/1 บนโฮสต์ที่สร้างอิมเมจ

ฉันไม่ได้ใช้ ซิป/ยำ ติดตั้ง ซมเมค ข้างใน ไฟล์นักเทียบท่าแต่เพิ่งคว้า cmake-3.18.2-Linux-x86_64.tar.gz ไฟล์บันเดิล.

ภายใน Dockerfile ฉันเพียงแค่แตกไฟล์ .tar.gz นี้ภายในบางไดเร็กทอรี นอกจากนี้ฉันยังตั้งค่า ส่งออก PATH:/path/where/I/installed/cmake-3.18.2../bin:/..some_other_paths:/...:/.... ใน Dockerfile ภายในคำสั่ง RUN

เช่น. RUN export PATH=/path/where/I/installed/cmake-3.18.2../bin:/...... && <cmds เพิ่มเติมที่นี่> && <cmds อื่น ๆ ที่นี่> && ... ฯลฯดังนั้นจึงสามารถค้นหา cmake 3.18.2 ที่แยกออกมาสำหรับเวลาสร้าง (การดำเนินการ cmake) และ SET เหมือนกัน เส้นทาง=/... ตัวแปรเป็น ENV PATH=/.... ค่าเดียวกับที่ใช้ระหว่าง RUN สำหรับ PATH ดังนั้นที่รันไทม์ เมื่อคอนเทนเนอร์ทำงาน $PATH ก็พร้อมสำหรับการค้นหา ซมเมค (เวอร์ชัน 3.18.2) แทนที่จะใช้ที่มีอยู่ /usr/bin/cmake หรืออย่างอื่น).

สแน็ปช็อตไฟล์นักเทียบท่า:

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

และ

เป็นของฉัน อุมาสก์ การตั้งค่าถูกตั้งค่าเป็น 022ฉันไม่ต้องทำโพสต์การดำเนินการของไก่ chmod untar:

# echo -e "\n-- กำลังติดตั้ง CMake ...\n" && \
# tar -xvzpf /tmp/cmake.tar.gz -C /home/docker_nonroot_user/tools/ && \

ภายในคอนเทนเนอร์นักเทียบท่า เช่น เส้นทาง ENV=/... ถูกตั้งค่าใน Dockerfile สำหรับพาธเป้าหมายนี้เช่นกัน ถูกต้อง ซมเมค 3.18.2 ถูกนำมาใช้ในการดำเนินการรันไทม์คอนเทนเนอร์นักเทียบท่า

ซมเมค ตำแหน่งที่ติดตั้งในกรณีของฉันคือ:

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

PATH ภายในคอนเทนเนอร์นักเทียบท่าคือ:

/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/bin:/sbin:/bin

ผลลัพธ์:

การใช้อิมเมจ Docker ที่สร้างขึ้นโดยใช้ โซลูชั่น #2 ด้านบนคืออิมเมจนักเทียบท่าที่สร้างขึ้นในเครื่อง โดยที่ FIPS = 0 aka DISABLED และ จากนั้นใช้อิมเมจเดียวกันนี้เพื่อสร้างคอนเทนเนอร์ในภายหลัง บนเครื่องโฮสต์เป้าหมายที่แตกต่างกันโดยสิ้นเชิง โดยที่ FIPS = 1 aka ENABLED, เข้าใจแล้ว:

87d8104d8c41:/home/docker_nonroot_user # sysctl -a|grep fips_en
crypto.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 รูทรูท 11908568 20 ส.ค. 2020 ccmake
-rwxr-xr-x 1 รูทรูท 12096216 20 ส.ค. 2020 cmake
-rwxr-xr-x 1 รูทรูท 27476480 20 ส.ค. 2020 cmake-gui
-rwxr-xr-x 1 รูทรูท 12398808 20 ส.ค. 2020 cpack
-rwxr-xr-x 1 รูทรูท 13318712 20 ส.ค. 2020 ทดสอบ
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 รูทรูท 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 # : Merry X-mas Baaaaeebyyy! - ไม่มีข้อผิดพลาดอึ FIPS อีกต่อไป ต่อไปฉันจะแก้ไข chown ใน ~<user> และปิดเรื่องราวของฉัน

โซลูชั่น #3: คุณสามารถปิดใช้งาน FIPS แต่ถ้าคุณได้รับอนุญาตให้ทำเช่นนั้นคุณไม่จำเป็นต้องใช้โซลูชัน #1 หรือโซลูชัน #2

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา