我有Redis的证书。我在哪里安装这个证书来连接到我的Redis服务器?
我试着把它放到我的java cacerts中,但它不起作用。
这样做的正确方法是什么?
发布于 2021-02-03 19:37:42
我还一直在尝试将带有Jedis 3.5.0的Java应用程序连接到Redis集群(6.10.0)。
使用SSL的
首先,redis二进制文件必须按照https://redis.io/topics/encryption的要求使用BUILD_TLS=yes标志构建(如果您自己托管)
必须生成一个redis.crt文件来连接到redis,并生成一个redis-ca.crt文件来验证您的节点/集群的身份。或者,您可以使用./test/tls中的"./runtest --tls“生成的文件。
创建p12密钥库:
openssl pkcs12 -export -in redis.crt -inkey redis.key -out redis_key_store.p12 -passout pass:keystore_pwd并将生成的redis_key_store.p12保存到安全的地方。
将Redis实例
找到您的trustStore并将redis-ca.crt和redis-ca.key文件复制到它旁边。
将redis-ca添加到trustStore:
keytool -import -file redis-ca.crt -alias redis-ca -keystore truststore.jks -storepass truststore_pwd对于redis节点/群集,您必须按照更改证书的位置,或将证书的位置添加到redis节点的配置中
https://redis.io/topics/encryption#certificate-configuration
然后,我从this page创建了一个类,如步骤3所示
public class SSLTest
{
private static final String HOSTNAME = "localhost";
private static final int PORT = 6379;
public static void main (String[] args) {
try {
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "path/to/cert/redis_key_store.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "keystore_pwd");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "path/to/cert/truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "truststore_pwd");
Jedis jedis = new Jedis(HOSTNAME, PORT, true);
jedis.connect();
jedis.auth("redacted");
System.out.println(jedis.ping());
} catch (Exception e) {
e.printStackTrace();
}
}
}==>代码应该打印出"PONG“
https://stackoverflow.com/questions/61943220
复制相似问题