Edge for Private Cloud trên RHEL 8.X hỗ trợ FIPS

Phần này hướng dẫn cách bật chế độ FIPS trên RHEL 8, đảm bảo môi trường an toàn và tuân thủ cho Edge cho đám mây riêng tư phiên bản 4.53.00 trở lên.

Cài đặt trước

Đảm bảo rằng FIPS được bật trên các nút của bạn cùng với các điều kiện tiên quyết khác về cấu hình tiêu chuẩn được liệt kê trong tài liệu Tổng quan về việc cài đặt Edge.

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

Nếu chế độ FIPS hiện đang tắt, hãy tham khảo tài liệu chính thức của Red Hat để biết hướng dẫn về cách bật chế độ này: Chuyển RHEL 8 sang chế độ FIPS.

Yêu cầu về Java

Bạn nên tải Java xuống từ kho lưu trữ của Red Hat để đảm bảo các mô-đun bảo mật của Java tuân thủ FIPS, cho phép các quy định hạn chế dành riêng cho FIPS thông qua tính năng bảo mật của Java.

Cài đặt

Trong Tài liệu tham khảo về tệp cấu hình Edge, hãy đặt FIPS_OS=true trên mỗi nút. Bạn có thể làm theo các bước cài đặt chung cho Edge cho đám mây riêng tư như bình thường.

Định dạng khoá riêng tư

Bạn chỉ có thể sử dụng định dạng PKCS12/PFX để tải khoá riêng tư lên kho khoá Apigee để dùng trong proxy API hoặc máy chủ ảo. Để biết hướng dẫn về cách tạo tệp, hãy tham khảo bài viết Chuyển đổi chứng chỉ sang định dạng được hỗ trợ.

Thao tác chung về TLS

Khi sử dụng Edge cho Private Cloud phiên bản 4.53.00 trở lên trên RHEL 8.X có hỗ trợ FIPS, bạn cần thực hiện hầu hết các cấu hình thành phần liên quan đến TLS của Edge thông qua kho khoá định dạng PKCS12 hoặc BCFKS.

Hãy tham khảo tài liệu hoặc ghi chú dành riêng cho FIPS trong các bài viết liên quan về cấu hình TLS để biết thêm thông tin chi tiết. Phụ lục liệt kê một số lệnh hữu ích có thể dùng để tạo các kho khoá này.

Kho khoá/kho tin cậy Java mặc định

Khi bạn sử dụng Edge cho Private Cloud 4.53.00 trên RHEL 8.X có hỗ trợ FIPS, Bộ xử lý thông báo, Máy chủ quản lý và các thành phần edge-* khác sẽ trỏ theo mặc định đến kho khoá và kho tin cậy BCFKS phần giữ chỗ (/opt/apigee/edge-gateway/vault/bcfks-cacerts) được cung cấp cùng với sản phẩm.

Để tạo kho lưu trữ BCFKS cacerts của riêng bạn và định cấu hình các thành phần Edge để sử dụng kho lưu trữ đó, hãy làm theo các bước sau:

  1. Tạo tệp cacerts định dạng BCFKS của riêng bạn, chứa tất cả chứng chỉ CA mà bạn muốn tin tưởng. Đảm bảo rằng mật khẩu kho khoá và mật khẩu khoá giống nhau (và có ít nhất 14 ký tự nếu áp dụng quy trình kiểm tra mật khẩu BCFIPS nghiêm ngặt).

    • Lựa chọn A: Chuyển đổi kho lưu trữ JDK hoặc hệ điều hành lưu trữ cacerts sang định dạng BCFKS (nên dùng nếu bạn muốn thêm các CA gốc đáng tin cậy của hệ điều hành tiêu chuẩn do update-ca-trust quản lý):

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -importkeystore \
        -srckeystore /etc/pki/java/cacerts \
        -srcstoretype JKS \
        -srcstorepass changeit \
        -destkeystore my-cacerts.bcfks \
        -deststoretype BCFKS \
        -deststorepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR" \
        -noprompt
    • Lựa chọn B: Tạo kho lưu trữ BCFKS mới có chứng chỉ CA tuỳ chỉnh (.pem hoặc .crt) hoặc nhập thêm chứng chỉ CA tuỳ chỉnh vào kho lưu trữ BCFKS hiện có (chẳng hạn như my-cacerts.bcfks trong Lựa chọn A):

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -importcert \
        -file PATH_TO_CA_CERT.pem \
        -alias CA_ALIAS \
        -keystore my-cacerts.bcfks \
        -storetype BCFKS \
        -storepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR" \
        -noprompt
    • Không bắt buộc: Xác minh nội dung của kho lưu trữ BCFKS:

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -list \
        -keystore my-cacerts.bcfks \
        -storetype BCFKS \
        -storepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR"
  2. Trên mỗi nút chạy bất kỳ thành phần nào của Edge được liệt kê trong Bước 3, hãy sao chép tệp BCFKS vào một đường dẫn thích hợp và đảm bảo rằng người dùng apigee có thể đọc tệp đó:

    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
    chmod 600 /opt/apigee/customer/application/my-cacerts.bcfks
  3. Trên mỗi nút, hãy tạo hoặc chỉnh sửa tệp cấu hình cho từng thành phần đã cài đặt trong bảng sau (lặp lại các Bước 3 – 6 cho từng thành phần được liệt kê trên nút):

    Thành phần Tệp
    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. Thêm các dòng sau vào tệp cấu hình:

    conf_system_javax.net.ssl.trustStore=/opt/apigee/customer/application/my-cacerts.bcfks
    conf_system_javax.net.ssl.trustStorePassword=YOUR_STORE_PASSWORD
    conf_system_javax.net.ssl.keyStore=/opt/apigee/customer/application/my-cacerts.bcfks
    conf_system_javax.net.ssl.keyStoreType=BCFKS
    conf_system_javax.net.ssl.keyStorePassword=YOUR_STORE_PASSWORD

    Thay thế /opt/apigee/customer/application/my-cacerts.bcfks và YOUR_STORE_PASSWORD bằng đường dẫn và mật khẩu cho tệp BCFKS cacerts của bạn.

  5. Đảm bảo rằng người dùng apigee sở hữu và có thể đọc tệp cấu hình:

    chown apigee:apigee /opt/apigee/customer/application/FILE.properties
  6. Khởi động lại thành phần:

    /opt/apigee/apigee-service/bin/apigee-service COMPONENT restart

Phụ lục

Lệnh mẫu cho thao tác với kho khoá BCFKS

Lệnh dưới đây tạo một kho khoá BCFKS có cặp khoá và chứng chỉ tự ký:

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

Các lệnh keytool vẫn nhất quán với các lệnh thường dùng, nhưng bạn phải đưa các tuỳ chọn sau vào lệnh 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

Đối số Keytool

Đối số Keytool Mô tả
-storetype Đặt loại cửa hàng thành BCFKS.
-providerpath Chỉ định đường dẫn đến bc-fips-XXXX.jar. Phiên bản này có thể thay đổi trong các bản phát hành OPDK sau này. Sử dụng phiên bản do Apigee cung cấp hoặc tải phiên bản đó xuống từ kho lưu trữ của Bouncycastle. Đối với OPDK 4.53, đường dẫn phải là /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar.
-providerclass Đặt giá trị này thành org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider.
-providername Đặt giá trị này thành BCFIPS.

Bạn có thể sử dụng các lệnh keytool tương tự để nhập hoặc xuất chứng chỉ và/hoặc khoá từ hoặc sang kho khoá định dạng BCFKS. Để biết thêm thông tin về cách làm việc với BCFKS, hãy xem tài liệu về BouncyCastle.

Kho khoá PKCS12

Để tạo kho PKCS12, bạn có thể sử dụng các lệnh 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

Nếu bạn có khoá riêng tư và chứng chỉ riêng và cần chuyển đổi chúng sang định dạng PKCS12, hãy tham khảo bài viết Chuyển đổi chứng chỉ sang định dạng được hỗ trợ.