Edge สำหรับระบบคลาวด์ส่วนตัวใน RHEL 8.X ที่เปิดใช้ FIPS

บทความนี้มีรายละเอียดและวิธีการสำหรับลูกค้า Edge for Private Cloud ที่ใช้เวอร์ชัน 4.53.00 ขึ้นไปซึ่งทำงานบน RHEL 8.X ที่เปิดใช้ FIPS

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

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

fips-mode-setup --check
FIPS mode is enabled.

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

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

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

การติดตั้ง

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

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

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

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

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

คีย์สโตร์/คลังความน่าเชื่อถือเริ่มต้นของ Java

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

  1. สร้างไฟล์ cacerts รูปแบบ BCFKS ที่มีใบรับรอง CA ทั้งหมดที่คุณต้องการเชื่อถือ ตรวจสอบว่ารหัสผ่านของคีย์สโตร์และรหัสผ่านของคีย์เหมือนกัน ดูรายละเอียดเพิ่มเติมได้ที่ภาคผนวก
  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  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 เวอร์ชันของไฟล์ jar นี้อาจเปลี่ยนแปลงใน OPDK เวอร์ชันในอนาคต คุณควรใช้เวอร์ชันที่ Apigee จัดส่ง นอกจากนี้ คุณยังดาวน์โหลดไฟล์ jar จากที่เก็บของ Bouncycastle ได้ด้วย ไฟล์นี้ควรเป็น /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar ในการเปิดตัว OPDK 4.53
-providerclass ควรตั้งค่าเป็น org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider
-providername ควรตั้งค่าเป็น BCFIPS

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

PKCS12 Store

หากต้องการสร้างที่เก็บ 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 โปรดดูการแปลงใบรับรองเป็นรูปแบบที่รองรับ