Edge สำหรับ Private Cloud ใน RHEL 8.X หรือ Rocky 8.X ที่เปิดใช้ FIPS

ส่วนนี้จะให้คำแนะนำเกี่ยวกับการเปิดใช้โหมด FIPS ใน RHEL 8 เพื่อให้มั่นใจว่าสภาพแวดล้อมที่ปลอดภัยและเป็นไปตามข้อกำหนดสำหรับ Edge สำหรับ Private Cloud เวอร์ชัน 4.53.00 ขึ้นไป

ติดตั้งไว้ล่วงหน้า

ตรวจสอบว่าได้เปิดใช้ FIPS ในโหนดพร้อมกับข้อกำหนดเบื้องต้นในการกำหนดค่ามาตรฐานอื่นๆ ที่ระบุไว้ในเอกสารภาพรวมการติดตั้ง Edge

fips-mode-setup --check  
FIPS mode is enabled.  # Command output

หากปิดใช้โหมด FIPS อยู่ในขณะนี้ โปรดดูวิธีการเปิดใช้ในเอกสารอย่างเป็นทางการของ Red Hat ที่หัวข้อการเปลี่ยน RHEL 8 เป็นโหมด FIPS

ข้อกำหนดของ Java

คุณควรดาวน์โหลด Java ที่ใช้จากที่เก็บของ Red Hat เพื่อให้มั่นใจว่าโมดูลความปลอดภัยเป็นไปตามข้อกำหนด FIPS ซึ่งจะช่วยให้ใช้ข้อจำกัดเฉพาะ FIPS ผ่านความปลอดภัยของ Java ได้

การติดตั้ง

ในการอ้างอิงไฟล์การกำหนดค่า Edge ให้ตั้งค่า FIPS_OS=true ในแต่ละโหนด คุณทำตามขั้นตอนการติดตั้งทั่วไปสำหรับ Edge for Private Cloud ได้ตามปกติ

รูปแบบคีย์ส่วนตัว

ใช้ได้เฉพาะรูปแบบ PKCS12/PFX ในการอัปโหลดคีย์ส่วนตัวไปยังที่เก็บคีย์ Apigee เพื่อใช้ในพร็อกซี API หรือโฮสต์เสมือน ดูคำแนะนำในการสร้างไฟล์ได้ที่การแปลงใบรับรองเป็นรูปแบบที่รองรับ

การดำเนินการ TLS ทั่วไป

เมื่อใช้ Edge สำหรับ Private Cloud 4.53.00 ขึ้นไปใน RHEL 8.X หรือ Rocky 8.X ที่เปิดใช้ FIPS คุณจะต้องทำการกำหนดค่าคอมโพเนนต์ส่วนใหญ่ที่เกี่ยวข้องกับ TLS ของ Edge ผ่านที่เก็บคีย์รูปแบบ PKCS12 หรือ BCFKS

ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบหรือหมายเหตุเฉพาะของ FIPS ในบทความที่เกี่ยวข้องสำหรับการกำหนดค่า TLS ภาคผนวกแสดงรายการคำสั่งที่เป็นประโยชน์บางอย่างที่ใช้สร้างที่เก็บคีย์เหล่านี้ได้

ที่เก็บคีย์/ที่เก็บที่เชื่อถือได้ของ Java เริ่มต้น

เมื่อใช้ Edge สำหรับ Private Cloud 4.53.00 ขึ้นไปใน RHEL 8.X หรือ Rocky 8.X ที่เปิดใช้ FIPS โปรแกรมประมวลผลข้อความ เซิร์ฟเวอร์การจัดการ และคอมโพเนนต์อื่นๆ ของ edge-* จะใช้ Truststore และ Keystore เริ่มต้นที่มาพร้อมกับผลิตภัณฑ์

ซึ่งมีใบรับรอง CA ที่แอปพลิเคชันของคุณเชื่อถือโดยค่าเริ่มต้น หากต้องการใช้ที่เก็บของคุณเองที่มีใบรับรอง CA ให้ทำตามขั้นตอนด้านล่าง

  1. สร้างไฟล์รูปแบบ BCFKS cacerts ที่มีใบรับรอง CA ทั้งหมดที่คุณต้องการเชื่อถือ ตรวจสอบว่ารหัสผ่าน Keystore และรหัสผ่านคีย์เหมือนกัน ดูรายละเอียดเพิ่มเติมได้ที่ภาคผนวก
  2. วางไฟล์ในเส้นทางที่เหมาะสมและตรวจสอบว่าผู้ใช้ Apigee อ่านได้
    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
  3. สร้าง (หรือแก้ไข) ไฟล์การกำหนดค่าที่เหมาะสมตามคอมโพเนนต์ที่คุณกำลังใช้งาน
    ส่วนประกอบ ไฟล์
    edge-management-server $/opt/apigee/customer/application/management-server.properties
    edge-message-processor $/opt/apigee/customer/application/message-processor.properties
    Edge Router $/opt/apigee/customer/application/router.properties
    edge-postgres-server $/opt/apigee/customer/application/postgres-server.properties
    edge-qpid-server $/opt/apigee/customer/application/qpid-server.properties
  4. เพิ่มบรรทัดต่อไปนี้ลงในไฟล์
    conf_system_javax.net.ssl.trustStore=<PATH to bcfks cacerts>
    conf_system_javax.net.ssl.trustStorePassword=changeme
    conf_system_javax.net.ssl.keyStore=<PATH to bcfks cacerts>
    conf_system_javax.net.ssl.keyStoreType=BCFKS
    conf_system_javax.net.ssl.keyStorePassword=changeme
  5. ตรวจสอบว่าผู้ใช้ apigee เป็นเจ้าของไฟล์การกำหนดค่าและอ่านได้
    chown apigee:apigee $opt/apigee/customer/application/<file>.properties
  6. รีสตาร์ทคอมโพเนนต์โดยทำดังนี้
    /opt/apigee/apigee-service/bin/apigee-service <component> restart

ภาคผนวก

ตัวอย่างคำสั่งการดำเนินการที่คลังคีย์ BCFKS

คำสั่งด้านล่างจะสร้างคีย์สโตร์ BCFKS ที่มีคู่คีย์และใบรับรองที่ลงนามด้วยตนเอง

keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \
-storepass keypass -keypass keypass -v \
-dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

คำสั่ง Keytool จะยังคงสอดคล้องกับคำสั่งที่ใช้โดยทั่วไป แต่ต้องรวมตัวเลือกต่อไปนี้ไว้ในคำสั่ง Keytool

--storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider 
-providername BCFIPS

อาร์กิวเมนต์ Keytool

อาร์กิวเมนต์ Keytool คำอธิบาย
-storetype ตั้งค่าประเภทร้านค้าเป็น BCFKS
-providerpath ระบุเส้นทางไปยัง bc-fips-XXXX.jar เวอร์ชันนี้อาจมีการเปลี่ยนแปลงใน OPDK รุ่นต่อๆ ไป ใช้เวอร์ชันที่ Apigee จัดส่งให้ หรือดาวน์โหลดจากที่เก็บของ Bouncycastle สำหรับ OPDK 4.53 เส้นทางควรเป็น /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar
-providerclass ตั้งค่านี้เป็น org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider
-providername ตั้งค่านี้เป็น BCFIPS

คุณสามารถใช้คำสั่ง keytool ที่คล้ายกันเพื่อนำเข้าหรือส่งออกใบรับรองและ/หรือคีย์จากหรือไปยัง Keystore รูปแบบ BCFKS ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีทำงานกับ BCFKS ได้ในเอกสารประกอบของ BouncyCastle

ที่เก็บ PKCS12

หากต้องการสร้างที่เก็บ PKCS12 ให้ใช้opensslคำสั่งต่อไปนี้

# Generate a self-signed private key and certificate
openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.pem -sha256 -days 36500 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=cn/emailAddress=email"
# Package the above generated key and cert into a PKCS12
openssl pkcs12 -export -clcerts -in certificate.pem -inkey private.key -out keystore.pfx -name myalias

หากคุณมีคีย์ส่วนตัวและใบรับรองของตนเองและต้องการแปลงเป็นรูปแบบ PKCS12 โปรดดูการแปลงใบรับรองเป็นรูปแบบที่รองรับ