Edge for Private Cloud ב-RHEL 8.X עם תמיכה ב-FIPS

בקטע הזה מוסבר איך מפעילים את מצב FIPS ב-RHEL 8, כדי להבטיח סביבה מאובטחת ותואמת ל-Edge for 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 לענן פרטי כרגיל.

פורמט של מפתח פרטי

אפשר להשתמש רק בפורמט PKCS12/PFX כדי להעלות מפתחות פרטיים למאגרי המפתחות של Apigee לשימוש בשרתי ה-proxy של ה-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 <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 כדי לייבא או לייצא אישורים ו/או מפתחות ממאגר מפתחות בפורמט 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, תוכלו לעיין במאמר המרת אישורים לפורמט נתמך.