Vertica 提供符合 FIPS 的版本的 ODBC 和 JDBC 客户端驱动程序。
FIPS 客户端驱动程序
1 - 为 JDBC 安装 FIPS 客户端驱动程序
Vertica 提供符合联邦信息处理标准 (FIPS) 的 JDBC 客户端驱动程序。使用此 JDBC 客户端驱动程序访问与 FIPS 兼容的系统。有关 FIPS 的详细信息,请参阅美国联邦信息处理标准。
在 JDBC 客户端上实施 FIPS 需要一个名为 BouncyCastle 的第三方 JRE 扩展,它是一组用于加密的 API。将 BouncyCastle API 与 JDK 1.7 和 1.8 以及支持的符合 FIPS 的操作系统一起使用。
重要
使用符合 FIPS 的 JDBC 客户端时,客户端与数据库建立安全连接预计会稍有延迟。如有必要,增加系统的熵以确保快速安全的连接。以下过程将 FIPS BouncyCastle .jar
添加为 JVM JSSE 提供程序:
-
下载 BouncyCastle FIPS
.jar
文件bc-fips-1.0.0.jar
。 -
将
bc-fips-1.0.0.jar
添加为 JRE 库扩展:path/to/jre/lib/ext/bc-fips-1.0.0.jar
-
在
<path to jre>/lib/security/java.security
中将 BouncyCastle 添加为 SSL 安全提供程序:security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastle FipsProvider security.provider.2=com.sun.net.ssl.internal.ssl.Provider BCFIPS security.provider.3=sun.security.provider.Sun
-
使用以下 JVM java -D 系统属性命令实参将 KeyStore 和 TrustStore 文件设置为 BCFIPS:
export JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.keyStoreProvider=BCFIPS export JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStoreProvider=BCFIPS
-
在 path/to/jre/lib/security/java.security 中将 KeyStore 实施的默认类型设置为 BCFKS:
keystore type=BCFKS ssl.keystore.type=BCFKS
注意
如果您将 FIPS 与 BouncyCastle 一起使用,则必须创建具有 BCFKS 存储类型的所有客户端密钥和证书(包括 Vertica 到 Kafka 连接的密钥和证书)。 -
创建 BCFKS 类型的密钥库和信任库:
cd path/to/jre -storetype BCFKS -providername BCFIPS -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath bc-fips-1.0.0.jar -alias CARoot -import -file path/to/server.crt.der
-
出现提示时,输入密钥库密码。系统将显示以下消息以确认已将证书添加到密钥库:
"Certificate was added to the keystore"
-
使用 SSL DB 运行 Java 程序:
-
将 vertica.kafka.keystore.bcfks 密钥库从 path/to/jre
/lib/ext/
复制到 Java 程序文件夹。 -
将 Vertica 服务器证书转换为能够由 Java 理解的形式:
$ path/to/java/bin/keytool -keystore verticastore -keypasswd -storepass password -importkeystore -noprompt -alias verticasql -import -file server.crt.der
-
-
对实施进行测试:
$ java -Djavax.net.debug=ssl -Djavax.net.ssl.keyStore='vertica.kafka.keystore.bcfks' -Djavax.net.ssl.keyStorePassword='password' -Djavax.net.ssl.trustStore='path/to/verticastore' -Djavax.net.ssl.trustStorePassword='password' -cp .:vertica-jdbc-12.0.0-0.jar FIPSTest
2 - 为 ODBC 和 vsql 安装 FIPS 客户端驱动程序
Vertica 为与 FIPS 兼容的系统提供 FIPS 客户端。与 FIPS 兼容的系统启用了 FIPS,其中包含 OpenSSL 库。
FIPS 客户端支持 ODBC 和 vsql,仅提供 64 位版本。
先决条件
确认主机系统正在运行受 Vertica 支持且符合 FIPS 的操作系统。
FIPS 客户端安装程序会检查您的主机系统以获取 sysctl 参数 crypto.fips_enabled 的值。您必须将此参数设置为 1(启用)。如果未启用您的主机,则客户端不会安装。
安装 FIPS 客户端
要安装 FIPS 客户端驱动程序包:
-
从 Vertica 驱动程序下载页面 下载 FIPS 客户端包。
-
以 root 身份登录客户端系统。
-
安装已下载的 RPM 包:
# rpm -Uvh package_name.rpm
对于 ODBC,在您安装了客户端包之后,创建 DSN 并设置一些额外的配置参数。有关详细信息,请参阅:
您可以选择将 vsql 客户端添加到 PATH 环境变量,以便不需要输入完整路径即可运行该客户端。为此,将下行添加到主目录中的 .profile
文件或全局 /etc/profile
文件:
export PATH=$PATH:/opt/vertica/bin
客户端如何搜索 OpenSSL 库
当您启动客户端应用程序以连接到服务器时,客户端会为支持的 OpenSSL 版本搜索并加载 OpenSSL 库 libcrypto.so.10
和 libssl.so.10
:
-
客户端首先检查是否已设置
LD_LIBRARY_PATH
。 -
如果
LD_LIBARY_PATH
位置不包含库,它会检查RunPath
、/opt/vertica/lib
或 ODBC 或 vsql 目录结构 (../lib
)。
重要
LD_LIBRARY_PATH
(如果已设置)指示 OpenSSL 库的搜索路径。客户端从所设置或预设的任何 LD_LIBRARY_PATH
位置加载库。
下图描述了 OpenSSL 库的搜索过程: