Как я могу сообщить Wicket, что к нему обращаются через Apache с SSL Termination, чтобы я мог избежать ошибок со смешанным содержимым при загрузке скриптов? - PullRequest
0 голосов
/ 16 мая 2018

Мое приложение wicket работает за конфигурацией прокси-сервера Apache с завершением SSL.

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
  ServerName my-domain-name
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyPass / http://localhost:49161/
  ProxyPassReverse / http://localhost:49161/
  SSLCertificateFile /etc/letsencrypt/live/my-domain-name/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/my-domain-name/privkey.pem

  RequestHeader set X-Forwarded-Proto https

  Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Используя эту конфигурацию, я могу получить доступ к приложению через https. Так что эта часть работает нормально.

Проблема в том, что я использую в Wicket дополнительные плагины, например, расширение калитки Google Map. Это вставит ссылку на скрипт в html, что приведет к ошибке смешанного содержимого.

Mixed Content: The page at 'https://my-domain-name/' was loaded over HTTPS, but requested an insecure script 'http://maps.google.com/maps/api/js?v=3&sensor=false'. This request has been blocked; the content must be served over HTTPS.

Я предполагаю, что он использует http там, потому что думает, что страница обслуживается через http. По этой причине я добавил часть X-Forwarded-Proto в конфигурацию виртуального хоста, но, похоже, это не сработало.

Я также пытался сообщить tomcat, что схема https используется при обновлении коннектора HTTP в server.xml

<Connector port="8080" protocol="HTTP/1.1" scheme="https" secure="true" SSLEnabled="false" 
               connectionTimeout="20000"
               redirectPort="8443" />

Есть идеи, что я мог бы сделать на уровне приложения Wicket, чтобы сказать, что приложение на самом деле обслуживается через https, а не через http?

Спасибо!

Кристоф.

1 Ответ

0 голосов
/ 16 мая 2018

В случае с модулем WicketStuff GMap3 вы можете предоставить схему, которую вы предпочитаете, в качестве параметра конструктора: https://github.com/wicketstuff/core/blob/d517667103a1cd97acc86ee51c2c733e79d9234f/gmap3-parent/gmap3/src/main/java/org/wicketstuff/gmap/GMapHeaderContributor.java#L69

В противном случае вы можете использовать X-Forwarded-Proto заголовок запроса, чтобы решить, находится ли приложение за прокси илинет.

...