我的应用程序在负载均衡器后面的EC2上运行。 已获得www.example.com和* .example.com的https证书。
应用程序正在http上运行,但https已在负载均衡器中设置。
我已根据公司在我的应用程序中添加了子域支持。
喜欢,公司XYZ的https://XYZ.example.com。
如果我使用https://XYZ.example.com进行访问,则其工作正常。
如果我使用https://www.XYZ.example.com进行访问,浏览器会发出警告,
" www.arun.contactcentral.io的所有者未正确配置他们的网站。为防止您的信息被盗,Firefox尚未连接到此网站。"
但是,如果我访问https://www.example.com,它可以正常工作。
虽然我已获得* .example.com的认证,但即使我访问www.XYZ.example.com也无法使用。
我有一个过滤器来处理http到https的方向,但它仍然没有从网址过滤WWW。
public class HttpsFilter implements Filter {
private static final String HTTP = "http";
private static final String HTTPS = "https";
private static final String X_FORWARDED_PROTO = "X-Forwarded-Proto";
@Override
public void doFilter(final ServletRequest req, final ServletResponse res, final FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse httpResponse = (HttpServletResponse) res;
String xfp = request.getHeader(X_FORWARDED_PROTO);
if (HTTPS.equals(xfp)) {
//httpResponse.setHeader("Strict-Transport-Security", "max-age=60");
chain.doFilter(req, res);
return;
}
else if (HTTP.equals(xfp)) {
String serverUrl = HTTPS+"://"+req.getServerName()+((HttpServletRequest)req).getServletPath();
httpResponse.sendRedirect(serverUrl);
return;
}
}
}
谢谢, Baskar.S
答案 0 :(得分:2)
通配符SSL证书只匹配一级子域(非常罕见且不受支持的情况除外)。通配符星号将不匹配。 (点)。
因此,* .example.com的证书将匹配
但不匹配
如果您想匹配www.xyz.example.com和xyz.example.com,则需要两个不同的证书。
https://en.wikipedia.org/wiki/Wildcard_certificate#Limitation