gpt4 book ai didi

java - 如何使用自动证书管理在 Heroku 上强制使用 Jetty Embedded HTTPS

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:33 25 4
gpt4 key购买 nike

我有一个使用 Jetty Embedded 用 Ja​​va 编写的 REST 应用程序,在 Heroku 环境中运行。我想强制所有流量都通过 HTTPS。关于如何实现这一点有一些很好的答案,例如 this onethis one .但是,所有答案都需要从文件中读取 TLS/SSL 证书。我想使用 Heroku 的自动证书管理(详情 here )来避免每年在证书过期时更新证书。使用 ACM 意味着我无权访问证书文件。

有什么方法可以配置 Jetty 以在不从文件中读取证书的情况下强制使用 HTTPS,或者以某种方式仍然能够使用 Heroku ACM?

最佳答案

您可以使用实现 doFilter 的 servlet 过滤器来完成此操作,如下所示:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse resp = (HttpServletResponse)response;

String protocol = req.getHeader("X-Forwarded-Proto");

if (protocol.equals("http")) {
String url = "https://" + req.getServerName() + req.getContextPath() + req.getServletPath();
if (req.getPathInfo() != null) {
url += req.getPathInfo();
}

System.out.println("Forwarding request to: " + url);
resp.sendRedirect(url);
} else {
System.out.println("Not forwarding protocol: " + protocol);
chain.doFilter(request, response);
}
}

这是 a complete example using Tomcat , 但原理是一样的。

关于java - 如何使用自动证书管理在 Heroku 上强制使用 Jetty Embedded HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44790683/

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