2016-06-24 6 views
0

У меня есть приложение, работающее на EC2 за балансиром нагрузки. Получили сертификат https для www.example.com и * .example.com.Проблема с сертификатом https с субдоменом

Приложение работает на http, но https настроен в балансировщике нагрузки.

Я добавил поддержку поддоменов в своем приложении на основе компании.

Нравится, https://XYZ.example.com для компании XYZ.

Если я получу доступ, используя 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 с URL-адреса.

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

ответ

2

Wildcard 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

+0

У меня может быть 2 сертификата. Но, www. *. Example.com не допускается. Как я могу достичь этого? Мой поддомен основан на компании. – user1578872

+0

Вы не можете. Он не поддерживается никаким общепринятым стандартом. Каждому поддомену, соответствующему *, будет нужен собственный сертификат, если вы хотите поставить «www» впереди. –

+0

(Вы можете иметь несколько поддоменов в одном и том же сертификате, но их нужно явно указывать. Это невозможно сделать динамически). –

Смежные вопросы