gpt4 book ai didi

elasticsearch - 在 netty 中将 HTTP 请求重定向到 HTTPS

转载 作者:行者123 更新时间:2023-12-02 23:54:01 25 4
gpt4 key购买 nike

我正在修改 elasticsearch 代码以配置没有 x-pack 和反向代理的 HTTPS。
我在 netty4HttpServerTransport 文件中修改了 initchannel() 方法,https 工作正常,但我想将 http 重定向到 https ..
代码是,

char[] password = "your5663".toCharArray();
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("C:/OpenSSL-Win64/bin/keystore1.jks"),password);

KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, password);

TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
TrustManager[] tm = tmf.getTrustManagers();

SSLContext sslContext = SSLContext.getInstance("TLSv1.3");
sslContext .init( kmf.getKeyManagers(), tm, null);
SSLEngine sslengine = sslContext .createSSLEngine();

sslengine.setUseClientMode(false);

String[] DEFAULT_PROTOCOLS = { "TLSv1", "TLSv1.1", "TLSv1.2","TLSv1.3" };
String[] DEFAULT_CIPHERS = {"TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA"};

sslengine.setEnabledProtocols(DEFAULT_PROTOCOLS);
sslengine.setEnabledCipherSuites(DEFAULT_CIPHERS);

SslHandler sslHandler = new SslHandler(sslengine);
ch.pipeline().addLast("ssl", sslHandler);
ch.pipeline().addAfter("ssl","handshake",new StringEventHandler());

如何在此代码中使 http 到 https 重定向。

最佳答案

重定向适用于有效负载 (http) 级别,而不是 ssl 传输级别。您需要同时监听协议(protocol)(http 和 https)和 http channel ,您可以使用重定向状态代码进行响应。长话短说 - 在您的代码中没有直接的位置可以做到这一点。

非常普遍地,代理服务器用于此任务。我不确定你是否可以在elasticsearch中做到这一点,你可以尝试配置一个过滤器servlet来检查协议(protocol)是否响应重定向。这可能会有所帮助https://github.com/elastic/elasticsearch-transport-wares

另一个事实 - 如果重定向是针对服务客户端(不是基于浏览器的 ui),客户端可能/将认为重定向响应是错误响应。根据您的环境 - 也许您可以只公开 ssl 端点(无重定向)并且客户端必须遵守

关于elasticsearch - 在 netty 中将 HTTP 请求重定向到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55274378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com