В этом разделе приведены рекомендации по включению режима 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 для частного облака.
Формат закрытого ключа
Для загрузки закрытых ключей в хранилища ключей Apigee для использования на прокси-серверах API или виртуальных хостах можно использовать только формат PKCS12/PFX. Инструкции по созданию файла см. в разделе «Преобразование сертификатов в поддерживаемый формат» .
Общие операции TLS
При использовании Edge for Private Cloud 4.53.00 или более поздней версии в RHEL 8.X или Rocky 8.X с поддержкой FIPS большинство конфигураций компонентов Edge, связанных с TLS, необходимо будет выполнять через хранилища ключей формата PKCS12 или BCFKS.
Более подробную информацию см. в документации FIPS или примечаниях в соответствующих статьях о настройке TLS. В приложении перечислены некоторые полезные команды, которые можно использовать для создания этих хранилищ ключей.
Хранилище ключей/доверенных устройств Java по умолчанию
При использовании Edge for Private Cloud 4.53.00 или более поздней версии на RHEL 8.X или Rocky 8.X с поддержкой FIPS ваш обработчик сообщений, сервер управления и другие компоненты edge-* полагаются на хранилище доверенных сертификатов и хранилище ключей по умолчанию, предоставленные вместе с продуктом.
Они содержат сертификаты центров сертификации, которым ваше приложение доверяет по умолчанию. Если вы хотите использовать собственное хранилище с сертификатами центров сертификации, выполните следующие действия:
- Создайте файл
cacertsв формате BCFKS, содержащий все сертификаты центров сертификации, которым вы хотите доверять. Убедитесь, что пароль хранилища ключей и пароль ключа совпадают. Подробнее см. в приложении . - Поместите файл по соответствующему пути и убедитесь, что пользователь apigee может его прочитать:
cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
- Создайте (или отредактируйте) соответствующий файл конфигурации на основе компонента, с которым вы работаете:
Компонент Файл сервер управления периферией $/opt/apigee/customer/application/management-server.properties процессор граничных сообщений $/opt/apigee/customer/application/message-processor.properties кромочный маршрутизатор $/opt/apigee/customer/application/router.properties edge-postgres-сервер $/opt/apigee/customer/application/postgres-server.properties edge-qpid-сервер $/opt/apigee/customer/application/qpid-server.properties - Добавьте в файл следующие строки:
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
- Убедитесь, что файл конфигурации принадлежит пользователю apigee и доступен ему для чтения:
chown apigee:apigee $opt/apigee/customer/application/<file>.properties
- Перезапустите компонент:
/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
Для создания хранилища 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, см. раздел Преобразование сертификатов в поддерживаемый формат .