‫Edge for 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 תואמים לתקן FIPS, צריך להוריד את Java ממאגר Red Hat. כך אפשר להפעיל הגבלות ספציפיות ל-FIPS באמצעות אבטחת Java.

התקנה

בהפניה לקובץ התצורה של Edge, מגדירים את FIPS_OS=true בכל צומת. אפשר לפעול לפי שלבי ההתקנה הכלליים של Edge לענן פרטי כרגיל.

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

אפשר להשתמש בפורמט PKCS12/PFX בלבד כדי להעלות מפתחות פרטיים למאגרי מפתחות של Apigee לשימוש בשרתי proxy של API או במארחים וירטואליים. הוראות ליצירת הקובץ מפורטות במאמר המרת אישורים לפורמט נתמך.

פעולות כלליות של TLS

כשמשתמשים ב-Edge for Private Cloud מגרסה 4.53.00 ואילך ב-RHEL 8.X או ב-Rocky 8.X עם FIPS, צריך לבצע את רוב ההגדרות של רכיבי Edge שקשורים ל-TLS באמצעות מאגרי מפתחות בפורמט PKCS12 או BCFKS.

פרטים נוספים על הגדרת TLS זמינים במסמכי התיעוד או בהערות שקשורות ל-FIPS במאמרים הרלוונטיים. בנספח מפורטות כמה פקודות שימושיות שאפשר להשתמש בהן כדי ליצור את מאגרי המפתחות האלה.

מאגר מפתחות/מאגר אישורים של Java שמוגדר כברירת מחדל

כשמשתמשים ב-Edge for Private Cloud בגרסה 4.53.00 ואילך ב-RHEL 8.X או ב-Rocky 8.X עם FIPS מופעל, מעבד ההודעות, שרת הניהול ורכיבים אחרים מסוג edge-* מסתמכים על חנות מהימנות וחנות מפתחות שמוגדרות כברירת מחדל ומסופקות עם המוצר.

הם מכילים אישורי CA שהאפליקציה שלכם סומכת עליהם כברירת מחדל. אם אתם רוצים להשתמש בחנות משלכם שמכילה אישורי CA, אתם צריכים לפעול לפי התהליך הבא:

  1. יוצרים קובץ בפורמט BCFKS‏ cacerts שמכיל את כל אישורי ה-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, תוכלו לעיין במאמר בנושא המרת אישורים לפורמט נתמך.