为 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