子域名的https证书问题

时间:2016-06-24 01:28:40

标签: ssl amazon-ec2

我的应用程序在负载均衡器后面的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

1 个答案:

答案 0 :(得分:2)

通配符SSL证书只匹配一级子域(非常罕见且不受支持的情况除外)。通配符星号将不匹配。 (点)。

因此,* .example.com的证书将匹配

  • www.example.com
  • xyz.example.com
  • some-really-long-name.example.com

但不匹配

  • example.com
  • www.xyz.example.com
  • abc.def.ghi.example.com

如果您想匹配www.xyz.example.com和xyz.example.com,则需要两个不同的证书。

https://en.wikipedia.org/wiki/Wildcard_certificate#Limitation