Lavanya,

On 5/15/24 09:09, lavanya tech wrote:
Hi Chris,

            <Context path="" docBase="towl" />

If i remove this from server.xml file i have the below error.

Message java.lang.NoClassDefFoundError: org/towl/indexer/web/Prefix

Description The server encountered an unexpected condition that prevented
it from fulfilling the request.

Exception

jakarta.servlet.ServletException: java.lang.NoClassDefFoundError:
org/towl/indexer/web/Prefix
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

That smells like a CLASSPATH problem where your application is not actually packaged properly. It could be something else, but it looks suspicious.

The "aliasing" will always be weird. IMO it's better to redirect. If you
change to redirect, does everything *work*, even if you don't like how
the browser's URL bar displays?
       --> I tried but it didnot work
ok apart from this tpic , we have one more issue found.


Actually application team, they are deploying two applications one with
towl (which you are already aware) the other one is (towl-app) they have
defined seperate server.xml for both.

Separate server.xml files means that you have to have two separate Tomcat processes.

Name:    server.lbg.com
Address:  192.168.200.120
Aliases:  example.lbg.com


Name:    server.lbg.com
Address:  192.168.200.120
Aliases:  example-app.lbg.com

which means we have two aliases for server.lbg.com , earlier we were
concentrating only on one example.lbg.com , now i wanted to somehow enable
access as the same for the other one also
https://example-app.lbg.com --> https://server.lbg.com:8444/towl-app

So i created iptable rule in the sameway as before redirect 443 to 8444 and
i have the urls working same as example.lbg.com

Both the server.xml files are here

/git/towl/apachetomcat/conf/server.xml
/git/towl-app/apachetomcat/conf/server.xml --> I changed the port of
connectors and everything

But now when i try to access https://example.lbg.com --> I get webpage of
https://example-app.lbg.com and sometimes i get webpage of
https://example.lbg.com after refresh itself which is wierd

May i know why this is happening. If we fix this then I am thinking to
disable the unwated urls leaving the required ones. for example the below
ones. I think that would be easier ? rather than redirecting or aliasing-->
Because we noticed that towl application is already pointing with
https://example.lbg.com

        https://server.lbg.com:8443
       https://example-lbg.com:8443
       <https://example.lbg.com/towl>
<https://server.lbg.com/towl>
        https://server.lbg.com:8444
       https://example-lbg.com:8444
       <https://example.lbg.com/towl-app>
<https://server.lbg.com/towl-app>

kindly suggest us a fix.

The best fix is to deploy the two applications normally without any funny business. Put both applications into webapps/ with no <Context> elements in server.xml and let them deploy. Use the correct URLs to access them. It's obviously some internal thing to your company because nobody is going to use :8443 in the real world.

I'm sorry, but it seems like you are being given arbitrary and weird requirements almost as a game.

I'm not sure I can help you any further at this point.

-chris

On Wed, May 15, 2024 at 2:16 PM Christopher Schultz <
ch...@christopherschultz.net> wrote:

Lavanya,

On 5/15/24 04:43, lavanya tech wrote:
Though to write you privately, regaridng the tomcat url redirection as
the mail chain is getting more big big

It's better to post to the list, so anyone in your situation can learn
from it.

Let me know if its fine for you and here is what I did.

1)      <Host name="localhost" appBase="webapps" unpackWARs="true"
autoDeploy="true">
            <Context path="" docBase="towl" />

Don't do this. Just put towl.war into webapps/ and let it auto-deploy.
What you are doing here is double-deploying your "towl" application:
once as "" (ROOT) and once as "/towl". Remove this from server.xml.

            <!-- Rewrite Valve configuration -->
            <Valve
className="org.apache.catalina.valves.rewrite.RewriteValve" />

Okay.

2) I have towl application and towl.war under webapps directory
3) added  proxy port and proxyname to connector

      <Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true">
                 proxyPort="8443" proxyName="server.lbg.com
<http://server.lbg.com>">
          <UpgradeProtocol
className="org.apache.coyote.http2.Http2Protocol" />
          <SSLHostConfig>
              <Certificate certificateKeystoreFile="/path/to/keystore"
                           certificateKeystorePassword="pass"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>

Okay.

4) added rewrite.config under conf directory
  > # Redirect everything that is not server.lbg.com
<http://server.lbg.com> to
  > # server.lbg.com <http://server.lbg.com>. Don't worry about /towl
yet.
  > RewriteCond %{HTTP_HOST} !^server\.lbg\.com$
  > RewriteRule ^/(.*) https://server.lbg.com:8443/$1
<https://server.lbg.com:8443/$1> [L]
  >
  > # Redirect anything that isn't already going to /towl
  > # to go to /towl
  > RewriteCond %{REQUEST_URI} !^/towl
  > RewriteRule ^/(.*) https://server.lbg.com:8443/towl/$1
<https://server.lbg.com:8443/towl/$1> [L]

5) restarted tomcat
6) can access all the urls https://server.lbg.com:8443
<https://server.lbg.com:8443>, https://server.lbg.com
<https://server.lbg.com>, https://server.lbg.com:8443/towl
<https://server.lbg.com:8443/towl>, https://server.lbg.com/towl
<https://server.lbg.com/towl>
https://example.lbg.com:8443 <https://example.lbg.com:8443>,
https://example.lbg.com <https://example.lbg.com>,
https://example.lbg.com:8443/towl <https://example.lbg.com:8443/towl>,
https://example.lbg.com/towl <https://example.lbg.com/towl>

Unfortunately aliasing still doesnot work https://example.lbg.com
<https://example.lbg.com> --> https://server.lbg.com:8443/towl
<https://server.lbg.com:8443/towl> and many urls works

The "aliasing" will always be weird. IMO it's better to redirect. If you
change to redirect, does everything *work*, even if you don't like how
the browser's URL bar displays?

-chris

On Tue, May 14, 2024 at 11:38 PM Christopher Schultz
<ch...@christopherschultz.net <mailto:ch...@christopherschultz.net>>
wrote:

     Lavanya,

     On 5/14/24 15:11, lavanya tech wrote:
      > You are right. We need aliasing here which means the URL in the
     browser
      > does not change.
      > May I know where should I put the below rewrite files ?
      >
      > # Redirect everything that is not server.lbg.com
     <http://server.lbg.com> to
      > # server.lbg.com <http://server.lbg.com>. Don't worry about /towl
     yet.
      > RewriteCond %{HTTP_HOST} !^server\.lbg\.com$
      > RewriteRule ^/(.*) https://server.lbg.com:8443/$1
     <https://server.lbg.com:8443/$1> [R=301,L]
      >
      > # Redirect anything that isn't already going to /towl
      > # to go to /towl
      > RewriteCond %{REQUEST_URI} !^/towl
      > RewriteRule ^/(.*) https://server.lbg.com:8443/towl/$1
     <https://server.lbg.com:8443/towl/$1> [R=301,L]

     AIUI, you can put all of the above in conf/rewrite.config and
configure
     the <Valve> under your <Host> just as you had it before.

     If you want aliasing and not redirection, then you don't want the [R]
     flag. IMO, you should really do a redirect. If you don't, then the
     application and the browser disagree about the base URL and all
     kinds of
     things like that.

     -chris

      > On Tuesday, May 14, 2024, Christopher Schultz
     <ch...@christopherschultz.net <mailto:ch...@christopherschultz.net>>
      > wrote:
      >
      >> Lavanya,
      >>
      >> On 5/14/24 09:12, lavanya tech wrote:
      >>
      >>> IMHO removing the port number is always the preferred solution
     — I never
      >>>> did it
      >>>>
      >>>>
      >>>>> can we achieve this with tomcat or we need to setup an
     reverse proxy
      >>>>> here.
      >>>>>
      >>>>>
      >>>> Your application uses whatever internal URLs it wants. Are you
     building
      >>>> those yourself, or are you asking Tomcat for the e.g.
     hostname, etc.? If
      >>>> it's Tomcat, this is where the proxyName and proxyPort come in.
      >>>>
      >>>
      >>>    - Yes, I have not built these UrLs before. It’s was working
     from the
      >>> very
      >>> beginning. As. I mentioned we are not able to reach goal or
     whatever.
      >>>
      >>> Rather than saying redirection, I would say it’s aliasing.
      >>>
      >>
      >> Please be specific. "Aliasing" (to me) means "the URL does to
     the right
      >> place but doesn't change in the browser's URL" and "redirection"
(to
      >> everybody) means "HTTP 301 or 302 response to a new URL".
      >>
      >> Instead of moving applications or changing tomcat configuration
     it’s easier
      >>> to achieve with reverse proxy ?
      >>>
      >>> https://example.lbg.com/ <https://example.lbg.com/> to
     https://server.lbg.com:8443/towl <https://server.lbg.com:8443/towl>
      >>>
      >>
      >> This will be a nightmare. Do not try to rewrite URLs using a
reverse
      >> proxy. You should redirect users to the right place if
     necessary. You can
      >> use a reverse-proxy if you want, but it won't be any less
     complicated than
      >> having Tomcat do it.
      >>
      >> I think your rewrite.config file just needs a few tweaks:
      >>
      >> # Redirect everything that is not server.lbg.com
     <http://server.lbg.com> to
      >> # server.lbg.com <http://server.lbg.com>. Don't worry about
     /towl yet.
      >> RewriteCond %{HTTP_HOST} !^server\.lbg\.com$
      >> RewriteRule ^/(.*) https://server.lbg.com:8443/$1
     <https://server.lbg.com:8443/$1> [R=301,L]
      >>
      >> # Redirect anything that isn't already going to /towl
      >> # to go to /towl
      >> RewriteCond %{REQUEST_URI} !^/towl
      >> RewriteRule ^/(.*) https://server.lbg.com:8443/towl/$1
     <https://server.lbg.com:8443/towl/$1> [R=301,L]
      >>
      >> The application should be deployed as towl.war (or towl/
     directory). You
      >> should listen on ports 80, 443, and 8443, and you should always
     end up at
      >> the right place. You should have proxyPort="8443" and proxyName="
      >> server.lbg.com <http://server.lbg.com>" in your <Connector>.
      >>
      >> You will not need a ROOT context, since the rewrite will take
     care of that
      >> for you.
      >>
      >> -chris
      >>
      >> On Mon, May 13, 2024 at 10:17 PM lavanya tech
     <lavanyatech...@gmail.com <mailto:lavanyatech...@gmail.com>>
      >>>> wrote:
      >>>>
      >>>> Hi Chris,
      >>>>
      >>>> Sorry, If I did confuse. It’s important that
      >>>> https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl> is always working. Goal is not to
      >>>> disable /towl, but just redirect or aliasing
      >>>>
      >>>> https//example.lbg.com/ <http://example.lbg.com/> to
     https://server.lbg.com:8443/towl <https://server.lbg.com:8443/towl>
      >>>>
      >>>>
      >>>>
      >>>>
      >>>> Thanks,
      >>>> Lavanya
      >>>>
      >>>> On Monday, May 13, 2024, Christopher Schultz <
      >>>> ch...@christopherschultz.net <mailto:
ch...@christopherschultz.net>
      >>>>
      >>>>>
      >>>>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>> On 5/13/24 05:57, lavanya tech wrote:
      >>>>
      >>>> Somehow made it work now i can only access urls as you
     mentioned before
      >>>> https://example.lbg.com <https://example.lbg.com> and
     https://server.lbg.com <https://server.lbg.com> with port 8443 and
      >>>> with
      >>>> out
      >>>>
      >>>> https://example.lbg.com/towl <https://example.lbg.com/towl>
     and https://server.lbg.com/towl <https://server.lbg.com/towl> --> I
      >>>> have an
      >>>> error now File not found.
      >>>>
      >>>> So i think we need to make work https://example.lbg.com/
     <https://example.lbg.com/> to
      >>>> https://server.lbg.com/towl <https://server.lbg.com/towl>
      >>>>
      >>>>
      >>>> I'm sorry, I'm still confused as to which way you want things.
      >>>>
      >>>> Do you want to redirect /towl -> / or do you want to redirect
     / - >
      >>>> /towl?
      >>>>
      >>>> Or does it depend upon the hostname? It would really be better
     if you
      >>>> could settle on one specific beahvior.
      >>>>
      >>>> -chris
      >>>>
      >>>> On Mon, May 13, 2024 at 9:41 AM lavanya tech
     <lavanyatech...@gmail.com <mailto:lavanyatech...@gmail.com>>
      >>>>
      >>>> wrote:
      >>>>
      >>>> Hi Chris,
      >>>>
      >>>>
      >>>> Where are you defining the RewriteValve itself?
      >>>>
      >>>> Defined rewritevalve here
      >>>>           <Host name="localhost"  appBase="webapps"
      >>>>                 unpackWARs="true" autoDeploy="true">
      >>>>
      >>>>               <Valve
      >>>> className="org.apache.catalina.valves.rewrite.RewriteValve" />
      >>>>                      resource="conf/rewrite.config" />
      >>>>
      >>>> 2) reated rewrite.config and added as below under conf/
      >>>>
      >>>>      RewriteCond %{REQUEST_URI} ^/towl/(.*)
      >>>>      RewriteRule ^/towl/(.*) https://example.lbg.com/%1
     <https://example.lbg.com/%1> [R]
      >>>>
      >>>> 3) After renaming towl to ROOT ->
     /webapps/ROOT/WEB-INF/web.xml ( I
      >>>> already have this mappings /* in web.xml file)
      >>>>
      >>>>        <security-constraint>
      >>>>           <web-resource-collection>
      >>>>             <web-resource-name>Logging Area</web-resource-name>
      >>>>             <description>
      >>>>             Authentication for registered users.
      >>>>             </description>
      >>>>             <url-pattern>/*</url-pattern>
      >>>>             <url-pattern>/api/v1/search</url-pattern> <!--
     protect search
      >>>> endpoint whitelisted above -->
      >>>>             <url-pattern>/api/v1/suggest/*</url-pattern> <!--
     protect
      >>>> suggest
      >>>> endpoint whitelisted above -->
      >>>>           </web-resource-collection>
      >>>>             <auth-constraint>
      >>>>                 <role-name>LDAP_USER</role-name>
      >>>>                 <role-name>api</role-name>
      >>>>             </auth-constraint>
      >>>>         </security-constraint>
      >>>>
      >>>> 4) Restarted Tomcat, Then I cannot access
      >>>> https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl>
      >>>> --> Have below error
      >>>>
      >>>> Message java.nio.file.NoSuchFileException:
      >>>>
/git/apache-tomcat-10.1.11/webapps/towl/WEB-INF/lib/xss-1.0.8.jar
      >>>>
      >>>> Description The server encountered an unexpected condition that
      >>>> prevented
      >>>> it from fulfilling the request.
      >>>>
      >>>> 5) Also https://example.lbg.com <https://example.lbg.com>
     doesnot work anymore
      >>>>
      >>>> Before you do anything with redirecting, can you just make
     sure you are
      >>>> only deploying ROOT.war and nothing else?
      >>>>         How can I do that. I already changed towl.war to
ROOT.war
      >>>>
      >>>> But still both the urls have error as mentioned above.
      >>>>
      >>>>
      >>>> Si I revereted back the changes.
      >>>> That's weird. Try stopping, deleting the work/ directory and
     restarting.
      >>>> --> I have this wierd behavior for some reason, thoudh
     index.jsp is
      >>>> located
      >>>> no changes were made to file. After deleting cookies url works
      >>>>
      >>>> where Am I going wrong.
      >>>>
      >>>> Thanks,
      >>>> Lavanya
      >>>>
      >>>>
      >>>> On Fri, May 10, 2024 at 6:50 PM Christopher Schultz <
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>>
      >>>> On 5/10/24 04:37, lavanya tech wrote:
      >>>>
      >>>> I tried the below and have the issues.
      >>>>
      >>>> 1)proxyPort="443" and proxyName="example.lbg.com
     <http://example.lbg.com>" to the connector
      >>>> 2) remanmed towl.war to ROOT.war
      >>>> 3) created rewrite.config and added as below under conf/
      >>>>
      >>>>
      >>>> Where are you defining the RewriteValve itself?
      >>>>
      >>>> RewriteCond %{REQUEST_URI} ^/towl/(.*)
      >>>>
      >>>> RewriteRule ^/towl/(.*) https://example.lbg.com/%1
     <https://example.lbg.com/%1> [R]
      >>>>
      >>>>
      >>>> If this is being handled by the ROOT servlet then I think it's
     right.
      >>>>
      >>>> 4) added this in web.xml file of /webapps/towl/web.xml/
      >>>>
      >>>>
      >>>>        <!-- Servlet mappings -->
      >>>>          <!-- Add your existing servlet mappings here -->
      >>>>
      >>>>          <!-- Security constraint to restrict access to /towl
     path -->
      >>>>          <security-constraint>
      >>>>              <web-resource-collection>
      >>>>                  <web-resource-name>Restricted Access to
      >>>> /towl</web-resource-name>
      >>>>                  <url-pattern>/towl/*</url-pattern>
      >>>>
      >>>>
      >>>> No, this is wrong. Since this is the "towl" application and
     not ROOT,
      >>>> you want to map /* and not /towl/* because the application
     will never
      >>>> see the /towl/ as it's an application/context prefix that
     Tomcat will
      >>>> remove.
      >>>>
      >>>>              </web-resource-collection>
      >>>>
      >>>>              <auth-constraint>
      >>>>                  <!-- Deny access to all roles -->
      >>>>              </auth-constraint>
      >>>>          </security-constraint>
      >>>>
      >>>> Also I noticed that even if I rename the towl application to
ROOT,
      >>>> when
      >>>>
      >>>> i
      >>>>
      >>>> call the url with https://example.lbg.com/towl
     <https://example.lbg.com/towl> --> this towl
      >>>> directory
      >>>>
      >>>> is
      >>>>
      >>>> getting created under webapps by default
      >>>>
      >>>>
      >>>> If webapps/towl is being created, then it's happening for some
     other
      >>>> reason. Do you have anything under conf/Catalina/*/towl.xml
which
      >>>> points
      >>>> to a WAR file or something? If so, remove that.
      >>>>
      >>>> 5) Resarted tomcat and I have the below error and all the urls
     have the
      >>>>
      >>>> same issue
      >>>>
      >>>> Message org.apache.jasper.JasperException:
      >>>> java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
      >>>>
      >>>>
      >>>> That's weird. Try stopping, deleting the work/ directory and
      >>>> restarting.
      >>>>
      >>>> Description The server encountered an unexpected condition that
      >>>>
      >>>>
      >>>> prevented
      >>>>
      >>>> it from fulfilling the request.
      >>>>
      >>>> Exception
      >>>>
      >>>> org.apache.jasper.JasperException:
     org.apache.jasper.JasperException:
      >>>> java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
      >>>>
      >>>>
      >>>> org.apache.jasper.servlet.JspServletWrapper.handleJspException(
      >>>> JspServletWrapper.java:578)
      >>>>
      >>>>
      >>>>
      >>>> org.apache.jasper.servlet.JspServletWrapper.service(
      >>>> JspServletWrapper.java:422)
      >>>>
      >>>>
      >>>>

  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
      >>>>
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
      >>>> jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
      >>>> org.apache.tomcat.websocket.se
     <http://org.apache.tomcat.websocket.se>
      >>>> rver.WsFilter.doFilter(WsFilter.java:51)
      >>>>
      >>>>
      >>>> Before you do anything with redirecting, can you just make
     sure you are
      >>>> only deploying ROOT.war and nothing else?
      >>>>
      >>>> This should allow you to reach the application at both
      >>>> https://example.lbg.com/ <https://example.lbg.com/> and
     https://server.lbg.com/ <https://server.lbg.com/> as well as both
      >>>> of
      >>>> those with port 8443.
      >>>>
      >>>> Then use the applications and make sure they are working as
     expected.
      >>>> Then, we'll add the /towl handling.
      >>>>
      >>>> -chris
      >>>>
      >>>> On Thu, May 9, 2024 at 11:20 PM Christopher Schultz <
      >>>>
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>>
      >>>> On 5/9/24 13:48, lavanya tech wrote:
      >>>>
      >>>> Thank you so much for your explanation. I will try these
options.
      >>>>
      >>>> Do server and example both resolve to the same IP?
      >>>>               -yes
      >>>>
      >>>>
      >>>> Good, that significantly reduces the complexity required,
     since you
      >>>> can
      >>>> do it will a single process (Tomcat) in a single environment.
      >>>>
      >>>> So I need follow both 4a/b and 5a/b steps here or any of them ?
      >>>>
      >>>>
      >>>> If I setup exactly by using below steps , then I should access
     both
      >>>>
      >>>> the
      >>>>
      >>>>
      >>>> urls right ? https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl> and
      >>>>
      >>>>
      >>>> https://example.lbg.com <https://example.lbg.com>
      >>>>
      >>>> If you visit either hostname with /towl, you will be
redirected to
      >>>> example.lbg.com/ <http://example.lbg.com/> with no port
     number. example:8443 will still work
      >>>> and
      >>>> no redirect will take place... unless you specifically make
      >>>>
      >>>> arrangements
      >>>>
      >>>>
      >>>> for that. We can do that later if you really want to.
      >>>>
      >>>>
      >>>> Let's get the other things working, first.
      >>>>
      >>>> -chris
      >>>>
      >>>> On Thursday, May 9, 2024, Christopher Schultz <
      >>>>
      >>>>
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>>
      >>>>
      >>>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>>
      >>>> On 5/9/24 02:58, lavanya tech wrote:
      >>>>
      >>>> Just giving background again of this topic again.
      >>>>
      >>>>
      >>>> 1) The application team who is working they wanted to access
the
      >>>> url
      >>>> https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl> —> which should redirect or
      >>>> point
      >>>>
      >>>> to
      >>>>
      >>>>
      >>>> https://example.lbg.com <https://example.lbg.com>
      >>>>
      >>>>
      >>>> Is that a typo? You want specifically
     https://server.lbg.com/towl <https://server.lbg.com/towl>
      >>>>
      >>>> and
      >>>>
      >>>>
      >>>> https://example.lbg.com/ <https://example.lbg.com/> to point
     to your application?
      >>>>
      >>>>                      — It’s not the Typo the requirements are
     still
      >>>> the
      >>>>
      >>>> same.
      >>>>
      >>>>
      >>>>
      >>>>
      >>>> Okay.
      >>>>
      >>>> Do server and example both resolve to the same IP?
      >>>>
      >>>> 2) Hence I added firewall rule to redirect port 443 to 8443.
And
      >>>> the
      >>>>
      >>>> url
      >>>>
      >>>>
      >>>> https://example.lbg.com <https://example.lbg.com> started
     working but its pointing to
      >>>>
      >>>> https://server.lbg.com:8443 <https://server.lbg.com:8443>
     indeed and not
      >>>>
      >>>> https://server.lbg.com:8443/to <https://server.lbg.com:8443/to

      >>>>
      >>>>
      >>>> wl
      >>>>
      >>>>
      >>>> But then they wanted the point 1 to have it. If I understood
      >>>>
      >>>> correctly. So
      >>>>
      >>>>
      >>>> basically to achieve this we wanted a reverse proxy setup ?
      >>>>
      >>>>
      >>>> I didnot define any additional host in server.xml file on just
      >>>> left
      >>>>
      >>>> to
      >>>>
      >>>>
      >>>> default to  local host.
      >>>>
      >>>>
      >>>>
      >>>> Here's what you have to do in order to support this odd
      >>>>
      >>>> configuration.
      >>>>
      >>>>
      >>>>
      >>>> 1. Configure your firewall to route port 443 -> 8443. I suspect
      >>>> this
      >>>>
      >>>> is
      >>>>
      >>>>
      >>>> already done.
      >>>>
      >>>>
      >>>> 2. Deploy Tomcat on server.lbg.com <http://server.lbg.com>
     with a <Connector> on port
      >>>> 8443.
      >>>>
      >>>> This
      >>>>
      >>>>
      >>>> is the default, so there shouldn't be anything to do. I
     suspect this
      >>>>
      >>>>
      >>>> is
      >>>>
      >>>>
      >>>> already done. You should set proxyPort="443" and proxyName="
      >>>>
      >>>> example.lbg.com <http://example.lbg.com>" in your <Connector>.
     This will ensure that any
      >>>> URLs
      >>>> generated by Tomcat or your application will point to
      >>>> https://example.lbg.com/ <https://example.lbg.com/> and not to
     server.lbg.com <http://server.lbg.com> or have a port
      >>>>
      >>>> number
      >>>>
      >>>>
      >>>> or whatever.
      >>>>
      >>>>
      >>>> 3. Re-name your application directory or WAR file from towl ->
     ROOT
      >>>>
      >>>> (upper
      >>>>
      >>>>
      >>>> case is important). So if you have tomcat/webapps/towl re-name
     that
      >>>>
      >>>>
      >>>> to
      >>>>
      >>>>
      >>>> tomcat/webapps/ROOT or if you have tomcat/webapps/towl.war
re-name
      >>>>
      >>>>
      >>>> that
      >>>>
      >>>>
      >>>> to
      >>>>
      >>>>
      >>>> tomcat/webapps/ROOT.war.
      >>>>
      >>>>
      >>>> The last thing to do is get /towl to re-direct to /. There are
a
      >>>> few
      >>>>
      >>>> ways
      >>>>
      >>>>
      >>>> of doing that.
      >>>>
      >>>>
      >>>> 4a. Configure your application (now called ROOT and deployed
on /
      >>>> and
      >>>>
      >>>> not
      >>>>
      >>>>
      >>>> /towl anymore) to handle the /towl URL and specifically
redirect
      >>>>
      >>>> this
      >>>>
      >>>> back
      >>>>
      >>>>
      >>>> to /. This is oddly specific and has the application trying to
      >>>>
      >>>>
      >>>> redirect
      >>>>
      >>>>
      >>>> to
      >>>>
      >>>>
      >>>> itself which is weird.
      >>>>
      >>>>
      >>>> 4b. Create a new application called towl or towl.war which
will be
      >>>> deployed on /towl and have THAT redirect to /. I think this is
      >>>>
      >>>> cleaner
      >>>>
      >>>>
      >>>> because you can call the application anything you'd like and
     it will
      >>>>
      >>>>
      >>>> still
      >>>>
      >>>>
      >>>> work. You don't have to match URL patterns yourself, you just
      >>>>
      >>>> re-name
      >>>>
      >>>> the
      >>>>
      >>>>
      >>>> WAR file if you suddenly want to use /towl2 instead of /towl.
      >>>>
      >>>>
      >>>> There are several ways to redirect.
      >>>>
      >>>> 5a. Use the rewrite valve and map /(*) to (global redirect)
/\1. A
      >>>>
      >>>> few
      >>>>
      >>>>
      >>>> notes: (1) the (*) means "capture this string" and \1 means
     "put the
      >>>>
      >>>>
      >>>> string
      >>>>
      >>>>
      >>>> back. This allows you to redirect /towl/foo/bar to /foo/bar
     instead
      >>>>
      >>>>
      >>>> of
      >>>>
      >>>>
      >>>> losing the /foo/bar. This syntax may not be perfect, adapt it
     to your
      >>>>
      >>>> needs. (2) Remember that the towl application is deployed on
/towl
      >>>> so
      >>>>
      >>>> you
      >>>>
      >>>>
      >>>> don't want to redirect /towl/foo/bar you only want redirect
     /foo/bar
      >>>>
      >>>>
      >>>> since
      >>>>
      >>>>
      >>>> the URL will be relative to the current context (/towl). Got
that?
      >>>>
      >>>>
      >>>> Finally,
      >>>>
      >>>>
      >>>> (3) you need to use a global redirect that does *NOT* redirect
     back
      >>>>
      >>>>
      >>>> to
      >>>>
      >>>>
      >>>> the
      >>>>
      >>>>
      >>>> /towl application. Normally, if you redirect to /foo you'll
get an
      >>>>
      >>>> application-relative redirect from something like a rewrite
      >>>> valve/filter/whatever. Take care to redirect relative to the
     SERVER
      >>>>
      >>>> and
      >>>>
      >>>>
      >>>> not
      >>>>
      >>>>
      >>>> to the application.
      >>>>
      >>>>
      >>>> 5b. Write your own servlet to do a specific redirect.
      >>>>
      >>>> I hope that helps,
      >>>> -chris
      >>>>
      >>>> On Wednesday, May 8, 2024, Christopher Schultz <
      >>>>
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>>
      >>>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>>
      >>>> On 5/8/24 06:48, lavanya tech wrote:
      >>>>
      >>>> I figured out how I can it make it work with 443. Now the URls
      >>>> are
      >>>>
      >>>> working.
      >>>> I added iptables route 443 to 8443 and it started working.
      >>>>
      >>>> nslookup example.lbg.com <http://example.lbg.com>
      >>>>
      >>>> Non-authoritative answer:
      >>>> Name: server.lbg.com <http://server.lbg.com>
      >>>> Address:  192.168.200.105
      >>>> Aliases: example.lbg.com <http://example.lbg.com>
      >>>>
      >>>>
      >>>> I have some application towl running with apache tomcat. I have
      >>>>
      >>>> the
      >>>>
      >>>>
      >>>> below
      >>>>
      >>>> URLs working.
      >>>>
      >>>> https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl>
      >>>> https://server.lbg.com <https://server.lbg.com>
      >>>> https://example.lbg.com <https://example.lbg.com>
      >>>> https://example.lbg.com/towl <https://example.lbg.com/towl>
      >>>>
      >>>>
      >>>> Now i wanted to disable the url https://example.lbg.com/towl
     <https://example.lbg.com/towl>
      >>>> and
      >>>> https://server.lbg.com <https://server.lbg.com> and access
     only the other remaining two.
      >>>>
      >>>>
      >>>>
      >>>>
      >>>>
      >>>> I would *highly* recommend that you pick either /towl or / and
not
      >>>>
      >>>>
      >>>> try to
      >>>>
      >>>>
      >>>> do both, unless you want to deploy the application twice
(which is
      >>>>
      >>>>
      >>>> fine,
      >>>>
      >>>>
      >>>> just deploy towl.war and ROOT.war as copies of each other). If
you
      >>>>
      >>>>
      >>>> try to
      >>>>
      >>>>
      >>>> re-write /towl to / or / to /towl, you'll find you spend the
rest
      >>>>
      >>>>
      >>>> of
      >>>>
      >>>>
      >>>> your
      >>>>
      >>>>
      >>>> days tracking-down edge-cases and "fixing" them -- likely
making
      >>>>
      >>>>
      >>>> things
      >>>>
      >>>>
      >>>> confusing and, probably, worse.
      >>>>
      >>>>
      >>>> In the end our goal to makesure that the links are not  always
      >>>>
      >>>> dead as
      >>>>
      >>>>
      >>>> soon
      >>>>
      >>>>
      >>>> as the towl is moved to a new machine. Can you pelase assit me
      >>>>
      >>>> how
      >>>>
      >>>> to do
      >>>>
      >>>>
      >>>> that?
      >>>>
      >>>>
      >>>>
      >>>> The goal should be that "moving" the application only means
      >>>>
      >>>>
      >>>> changing
      >>>>
      >>>>
      >>>> DNS
      >>>>
      >>>>
      >>>> and everything else works as expected.
      >>>>
      >>>>
      >>>> If you:
      >>>>
      >>>> 1. Deploy the application with a single context (e.g. /towl,
      >>>> which
      >>>>
      >>>> I
      >>>>
      >>>>
      >>>> recommend)
      >>>>
      >>>>
      >>>> 2. Re-direct / to /towl (this requires a reverse-proxy or a
ROOT
      >>>> application that does nothing but redirect ; my personal
      >>>>
      >>>> preference)
      >>>>
      >>>>
      >>>>
      >>>> 3. Do not define any <Host> other than "localhost" and make it
      >>>> the
      >>>> default. Do not bother with any <Alias> elements since they are
      >>>> not
      >>>> necessary.
      >>>>
      >>>> Moving the application should only require that you:
      >>>>
      >>>> 4. Deploy the same application with the same configuration in
the
      >>>>
      >>>> new
      >>>>
      >>>>
      >>>> location
      >>>>
      >>>>
      >>>> 5. Change DNS to point example.lbg.com
     <http://example.lbg.com> and server.lbg.com <http://server.lbg.com>
     to the
      >>>>
      >>>> new
      >>>>
      >>>>
      >>>> location of the service
      >>>>
      >>>>
      >>>> Hope that helps,
      >>>> -chris
      >>>>
      >>>> On Tue, Apr 30, 2024 at 5:44 PM Christopher Schultz <
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>> On 4/30/24 07:10, lavanya tech wrote:
      >>>>
      >>>> Can you tell me how to do the below ? How should I setup Tomcat
      >>>> in
      >>>> server.xml ?
      >>>>
      >>>>
      >>>> If you want to use port 443 (the default port for HTTPS) then
you
      >>>>
      >>>> will
      >>>>
      >>>>
      >>>> need to change Tomcat to bind to port 443 (if that's allowed on
      >>>>
      >>>>
      >>>> your
      >>>>
      >>>>
      >>>> OS)
      >>>>
      >>>>
      >>>> or arrange to have port 443 routed to port 8443. You may need
      >>>>
      >>>>
      >>>> additional
      >>>>
      >>>>
      >>>> configuration in Tomcat (specifically: proxyPort) to avoid
having
      >>>>
      >>>>
      >>>> Tomcat
      >>>>
      >>>>
      >>>> generate URLs with ":8443" in them.
      >>>>
      >>>>
      >>>> Looking forward to your reply.
      >>>>
      >>>>
      >>>> If Tomcat is listening on port 8443 then you will need to
include
      >>>>
      >>>> that
      >>>>
      >>>>
      >>>> in your URL, period. If you want to allow URLs without a port
      >>>>
      >>>>
      >>>> number,
      >>>>
      >>>>
      >>>> you will have to arrange to have something listening on port
443.
      >>>>
      >>>>
      >>>> On Windows, Tomcat can listen directly on port 443. On UNIX and
      >>>> UNIX-like systems, you won't be able to do this without running
      >>>>
      >>>> Tomcat
      >>>>
      >>>>
      >>>> as root WHICH YOU ABSOLUTELY SHOULD NOT DO.
      >>>>
      >>>>
      >>>> There are other ways to get port 443 working, but I'll need to
      >>>> know
      >>>>
      >>>> more
      >>>>
      >>>>
      >>>> about your environment. The port issue is "easier" than
figuring
      >>>>
      >>>>
      >>>> out
      >>>>
      >>>>
      >>>> whatever is going on with your DNS, aliases, etc. so I would
      >>>>
      >>>>
      >>>> recommend
      >>>>
      >>>>
      >>>> we fix one thing at a time.
      >>>>
      >>>>
      >>>> -chris
      >>>>
      >>>> On Mon, Apr 29, 2024 at 2:03 PM lavanya tech <
      >>>>
      >>>> lavanyatech...@gmail.com <mailto:lavanyatech...@gmail.com>>
      >>>>
      >>>>
      >>>> wrote:
      >>>>
      >>>>
      >>>> Hi Chris,
      >>>>
      >>>> There is no issues with browser, because I tested with
different
      >>>>
      >>>> browsers
      >>>>
      >>>> and it all works fine. I am sure that there is no issue with
the
      >>>> certificate.
      >>>>           Because I was able to establish successful
connections
      >>>> with
      >>>>
      >>>> port
      >>>>
      >>>>
      >>>>
      >>>> 8443, it
      >>>>
      >>>> just doesnot work with out port
      >>>>
      >>>>           curl https://example.lbg.com/towl
     <https://example.lbg.com/towl>
      >>>> curl: (56) Received HTTP code 504 from proxy after CONNECT
      >>>> curl: (56) Received HTTP code 504 from proxy after CONNECT
      >>>>
      >>>>
      >>>> If you want to use port 443 (the default port for HTTPS) then
you
      >>>>
      >>>> will
      >>>>
      >>>>
      >>>> need to change Tomcat to bind to port 443 (if that's allowed on
      >>>>
      >>>>
      >>>> your
      >>>>
      >>>>
      >>>> OS)
      >>>>
      >>>>
      >>>> or arrange to have port 443 routed to port 8443. You may need
      >>>>
      >>>>
      >>>> additional
      >>>>
      >>>>
      >>>> configuration in Tomcat (specifically: proxyPort) to avoid
having
      >>>>
      >>>>
      >>>> Tomcat
      >>>>
      >>>>
      >>>> generate URLs with ":8443" in them.
      >>>>
      >>>>
      >>>> <Connector port="443" protocol="HTTP/1.1"
      >>>>                     connectionTimeout="20000"
      >>>>                     redirectPort="8443"
      >>>>                     maxThreads="150"
      >>>>                     scheme="https" secure="true"
SSLEnabled="true"
      >>>>                     keystoreFile="path_to_your_keystore_file"
      >>>>                     keystorePass="your_keystore_password"
      >>>>                     keystoreType="PKCS12"
      >>>>                     clientAuth="false" sslProtocol="TLS"
      >>>>                     proxyPort="443"/>
      >>>>
      >>>> should i use connect port like the above ?  But you mentioned
      >>>>
      >>>> before
      >>>>
      >>>>
      >>>> we
      >>>>
      >>>>
      >>>> dont need any configuration changes. Please clarify I am not
able
      >>>>
      >>>>
      >>>> to
      >>>>
      >>>>
      >>>>
      >>>> figure
      >>>>
      >>>> this out and I have this issue many days pending. How to make
it
      >>>>
      >>>> work
      >>>>
      >>>>
      >>>>
      >>>> with
      >>>>
      >>>> port 8443 and with out port
      >>>>
      >>>> Also I wanted to use weburl with alias name permanently instead
      >>>> of
      >>>>
      >>>> the
      >>>>
      >>>>
      >>>> hostname. How can I achieve both
      >>>>
      >>>>
      >>>> Thanks,
      >>>> Lavanya
      >>>>
      >>>>
      >>>>            -->
      >>>>
      >>>>
      >>>> On Fri, Apr 26, 2024 at 9:28 PM Christopher Schultz <
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>> On 4/25/24 07:24, lavanya tech wrote:
      >>>>
      >>>> Hi Chris,
      >>>>
      >>>> One question / doubt:
      >>>>
      >>>> As I mentioned earlier, the below URLS already working in the
      >>>>
      >>>> browser
      >>>>
      >>>>
      >>>>
      >>>> https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl>
      >>>> https://example.lbg.com:8443/towl
     <https://example.lbg.com:8443/towl> -> redirect ( which means
      >>>> when I
      >>>>
      >>>> hit in
      >>>>
      >>>> browser) it points to https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl> ---> To
      >>>> be
      >>>>
      >>>> frank,
      >>>>
      >>>> even I donot need redirect here, not sure why it redirects.
      >>>>
      >>>> My question is why its working even though SAN is not
registered
      >>>>
      >>>> with
      >>>>
      >>>>
      >>>>
      >>>> the
      >>>>
      >>>> certificate ? It doesnot even throw warning in the browser.
      >>>>
      >>>>
      >>>> I'm not sure. Is it possible you have dismissed this error in
the
      >>>>
      >>>> past
      >>>>
      >>>>
      >>>> and the browser is remembering that? Try this with a different
web
      >>>>
      >>>> browser or maybe with curl from the command-line to see what
      >>>>
      >>>> happens.
      >>>>
      >>>>
      >>>>
      >>>> Why https://server.lbg.com/towl <https://server.lbg.com/towl>
     or https://example.lbg.com/towl <https://example.lbg.com/towl>
      >>>>
      >>>> -->
      >>>>
      >>>>
      >>>>
      >>>> How it
      >>>>
      >>>> should work with New SAN certificate ?
      >>>>
      >>>>
      >>>> You don't need to worry about the port number or application
      >>>> name,
      >>>>
      >>>> only
      >>>>
      >>>>
      >>>> the hostname is a part of the SAN.
      >>>>
      >>>>
      >>>> -chris
      >>>>
      >>>> On Thu, Apr 25, 2024 at 10:16 AM lavanya tech <
      >>>>
      >>>> lavanyatech...@gmail.com <mailto:lavanyatech...@gmail.com>
      >>>>
      >>>>
      >>>> wrote:
      >>>>
      >>>> Hi Chris,
      >>>>
      >>>>
      >>>> Thanks I will request new certificate with SANs and I will try
to
      >>>>
      >>>> fix
      >>>>
      >>>>
      >>>>
      >>>> the
      >>>>
      >>>> things from our end.
      >>>>
      >>>> Best Regards,
      >>>> Lavanya
      >>>>
      >>>> On Wed, Apr 24, 2024 at 11:12 PM Christopher Schultz <
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>> On 4/24/24 15:39, lavanya tech wrote:
      >>>>
      >>>> Local host means the machine i am logged in to server.lbg.com
     <http://server.lbg.com>
      >>>>
      >>>> You are right, example.lbg.com <http://example.lbg.com> is
     CNAME record.
      >>>>
      >>>>
      >>>> Okay, thanks for clearing that up.
      >>>>
      >>>> I dont have any SAN configured for the certificate. The
      >>>> certificate
      >>>>
      >>>> is
      >>>>
      >>>> requested for only server.lbg.com <http://server.lbg.com>
      >>>>
      >>>>
      >>>> You will never be able to make a secure request to anything
other
      >>>>
      >>>> than
      >>>>
      >>>> server.lbg.com <http://server.lbg.com> without seeing an
     error. I highly recommend
      >>>> adding
      >>>>
      >>>> the
      >>>>
      >>>> other hostname as a SAN to your certificate if you really want
to
      >>>> support this.
      >>>>
      >>>> Even if you wanted https://example.lbg.com/whatever
     <https://example.lbg.com/whatever> to return an
      >>>>
      >>>> HTTP
      >>>>
      >>>> 302 redirect to https://server.lbg.com/whatever
     <https://server.lbg.com/whatever>, the user would
      >>>>
      >>>> see a
      >>>>
      >>>> certificate hostname mismatch error which is ugly. It's best to
      >>>>
      >>>> make
      >>>>
      >>>>
      >>>>
      >>>> it
      >>>>
      >>>> work without users seeing ugly things.
      >>>>
      >>>> So if i just request new certificate with SAN it should work ?
If
      >>>>
      >>>> yes, I
      >>>>
      >>>> will request for it and follow your steps as below suggested.
      >>>>
      >>>>
      >>>> Yes, it should.
      >>>>
      >>>> Should i use CName record or DNS? Does it make difference?
      >>>>
      >>>>
      >>>> CNAME *is* DNS.
      >>>>
      >>>> Whenever possible, use hostnames and not IP addresses as SANs.
      >>>> It's
      >>>>
      >>>> more
      >>>>
      >>>> flexible that way, and users get to see hostnames instead of IP
      >>>>
      >>>> addresses.
      >>>>
      >>>>
      >>>> -chris
      >>>>
      >>>> On Wednesday, April 24, 2024, Christopher Schultz <
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>> On 4/24/24 07:37, lavanya tech wrote:
      >>>>
      >>>> Sorry I understood wrongly here with regards to my environment,
      >>>>
      >>>> Let me
      >>>>
      >>>> start from the beginning. I donot want to use redirect at all.
I
      >>>>
      >>>> simply
      >>>>
      >>>> wanted to force apache tomcat to use both localhost and dns
name
      >>>>
      >>>> of
      >>>>
      >>>> the
      >>>>
      >>>> localhost via url.
      >>>>
      >>>>
      >>>> When you say "force" what do you mean?
      >>>>
      >>>> When you say "use both localhost and DNS name" what do you
mean?
      >>>>
      >>>> When you say "localhost" do you mean 127.0.0.1 or "the machine
      >>>> I'm
      >>>> logged-into right now"?
      >>>>
      >>>> I have DNS resollution as below.
      >>>>
      >>>>
      >>>> server.lbg.com <http://server.lbg.com> --> localhost
      >>>>
      >>>>
      >>>> Is that a CNAME record?
      >>>>
      >>>> nslookup server.lbg.com <http://server.lbg.com> (localhost)
      >>>>
      >>>> Name: server.lbg.com <http://server.lbg.com>
      >>>> Address:  192.168.100.20
      >>>> alias: example.lbg.com <http://example.lbg.com>
      >>>>
      >>>>
      >>>> That's a weird DNS response. The DNS name "localhost" should
      >>>>
      >>>> *always*
      >>>>
      >>>> return 127.0.0.1 for IPv4 and ::1 for IPv6. It shouldn't return
      >>>> 191.168.100.20.
      >>>>
      >>>> We have working the below urls working:
      >>>>
      >>>> https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl>
      >>>> https://example.lbg.com:8443/towl
     <https://example.lbg.com:8443/towl> --> redirects to
      >>>>
      >>>>
      >>>> What do you mean "redirect"? Does it return a 30x response that
      >>>>
      >>>> causes
      >>>>
      >>>> the
      >>>>
      >>>> browser to make a new request to \/
      >>>>
      >>>> https://server.lbg.com:8443/towl
     <https://server.lbg.com:8443/towl>  --> still works --> we have
      >>>> SSL
      >>>>
      >>>> configured for the same but this SSL certificate doesnot have
      >>>>
      >>>> additional
      >>>>
      >>>> DNS setup.
      >>>>
      >>>>
      >>>> What SANs are in your certificate? How many certificates do you
      >>>>
      >>>> have?
      >>>>
      >>>>
      >>>> But I would need to somehow  access https://example.lbg.com
     <https://example.lbg.com> -->
      >>>>
      >>>> which
      >>>>
      >>>> means
      >>>> I would need to access via 443 here ?
      >>>>
      >>>>
      >>>> I'm so confused. What needs to access what?
      >>>>
      >>>> I tried to adding the below to  server.xml as below, but that
      >>>>
      >>>> doesnot
      >>>>
      >>>> seems
      >>>>
      >>>> to work.
      >>>>
      >>>>                 <Connector port="80"
      >>>> protocol="org.apache.coyote.http11.Http11NioProtocol"
      >>>>                        connectionTimeout="20000"
      >>>>                        redirectPort="443" />
      >>>>
      >>>>
      >>>> This will only redirect (HTTP 302) requests to
      >>>>
      >>>> http://yourhost/anything <http://yourhost/anything>
      >>>>
      >>>> to https://yourhost/anything <https://yourhost/anything> *if
     the application specifically
      >>>>
      >>>> requests
      >>>>
      >>>> CONFIDENTIAL transport*. It doesn't just redirect everything by
      >>>>
      >>>> default. If
      >>>>
      >>>> you want it to redirect everything, you'll need to set that up
      >>>>
      >>>> e.g.
      >>>>
      >>>> using
      >>>>
      >>>> RewriteValve. There are other options, too.
      >>>>
      >>>> Do i need additional SSL certificate for the
      >>>>
      >>>> https://example.lbg.com <https://example.lbg.com>
      >>>>
      >>>> to
      >>>>
      >>>> make it work ?
      >>>>
      >>>>
      >>>> If you don't want your browser to complain, you will need at
      >>>> least
      >>>>
      >>>> one
      >>>>
      >>>> TLS
      >>>>
      >>>> certificate that contains every Subject Alternative Name (SAN)
      >>>> for
      >>>>
      >>>> every
      >>>>
      >>>> possible hostname you expect to use with this service. You ca
do
      >>>>
      >>>> it
      >>>>
      >>>> with
      >>>>
      >>>> multiple certificates as well, but a single cert with multiple
      >>>>
      >>>> SANs
      >>>>
      >>>> is
      >>>>
      >>>> less
      >>>>
      >>>> work.
      >>>>
      >>>> Do i need to set up an additional web server for this like
apache
      >>>>
      >>>> or
      >>>>
      >>>> nginx
      >>>>
      >>>> for redirecting requests?
      >>>>
      >>>>
      >>>> No.
      >>>>
      >>>> Please stop saying "redirect" because it sounds like you almost
      >>>>
      >>>> never
      >>>>
      >>>> mean
      >>>>
      >>>> "HTTP 30x redirect" and that's confusing everything.
      >>>>
      >>>> I *think* you only need the following:
      >>>>
      >>>> 1. A TLS certificate with the following SANs:
      >>>>
      >>>>              * server.lbg.com <http://server.lbg.com>
      >>>>              * example.lbg.com <http://example.lbg.com>
      >>>>              * localhost (you shouldn't do this)
      >>>>
      >>>> 2. DNS configured for all hostnames:
      >>>>
      >>>>              * server.lbg.com <http://server.lbg.com> -> A
     192.168.100.20
      >>>>              * example.lgb.com <http://example.lgb.com> -> A
     192.168.100.20
      >>>>
      >>>> 3. Tomcat configured with a single <Host> which is the default
      >>>>
      >>>> virtual
      >>>>
      >>>> host. Note that this is the *default Tomcat configuration* and
      >>>>
      >>>> doesn't
      >>>>
      >>>> need
      >>>>
      >>>> to be changed from the default.
      >>>>
      >>>> 4. Tomcat configured with your certificate like this:
      >>>>
      >>>>               <Connector ...
      >>>>                  SSLEnabled="true">
      >>>>                 <SSLHostConfig>
      >>>>                   <Certificate
      >>>>                       certificateFile="/path/to/your/cert.crt"
      >>>>
       certificateKeyFile="/path/to/your/key.pem" />
      >>>>                   <!-- You may need certificateKeyPassword in
      >>>>
      >>>> <Certificate>
      >>>>
      >>>> -->
      >>>>
      >>>>                 </SSLHostConfig>
      >>>>               </Connector>
      >>>>
      >>>> If your SANs are configured properly, this should allow you to
      >>>>
      >>>> connect
      >>>>
      >>>> using any of these URLs:
      >>>>
      >>>> $ curl https://server.lbg.com/towl/login.jsp
     <https://server.lbg.com/towl/login.jsp>
      >>>>
      >>>>              (returns login page)
      >>>>
      >>>> $ curl https://example.lbg.com/towl/login.jsp
     <https://example.lbg.com/towl/login.jsp>
      >>>>
      >>>>              (returns login page)
      >>>>
      >>>> If your application's web.xml contains something like this:
      >>>>
      >>>>              <security-constraint>
      >>>>                <web-resource-collection>
      >>>>                  <web-resource-name>theapp</web-resource-name>
      >>>>                  <url-pattern>/*</url-pattern>
      >>>>                </web-resource-collection>
      >>>>                <user-data-constraint>
      >>>>
      >>>> <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      >>>>
      >>>>
      >>>>                </user-data-constraint>
      >>>>
      >>>>              </security-constraint>
      >>>>
      >>>> ... then these URLs insecure HTTP URLs should redirect your
      >>>>
      >>>> clients:
      >>>>
      >>>>
      >>>> $ curl http://server.lbg.com/towl/login.jsp
     <http://server.lbg.com/towl/login.jsp>
      >>>>
      >>>>              (returns HTTP 302 redirect to
      >>>>
      >>>> https://server.lbg.com/towl/login.jsp
     <https://server.lbg.com/towl/login.jsp>
      >>>>
      >>>> )
      >>>>
      >>>>
      >>>> $ curl https://server.lbg.com/towl/login.jsp
     <https://server.lbg.com/towl/login.jsp>
      >>>>
      >>>>              (returns HTTP 302 redirect to
      >>>>
      >>>> https://example.lbg.com/towl/login.jsp
     <https://example.lbg.com/towl/login.jsp>)
      >>>>
      >>>>
      >>>> I don't think you need any use of the RewriteValve unless you
      >>>> want
      >>>>
      >>>> to
      >>>>
      >>>> handle sending HTTP 302 redirect responses to insecure requests
      >>>>
      >>>> without
      >>>>
      >>>> specifying the CONFIDENTIAL transport-guarantee in your
      >>>>
      >>>> application's
      >>>>
      >>>> web.xml file. But I don't see any reason NOT to have that in
      >>>>
      >>>> there.
      >>>>
      >>>>
      >>>> -chris
      >>>>
      >>>> On Tue, Apr 23, 2024 at 10:52 PM Christopher Schultz <
      >>>>
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>> wrote:
      >>>>
      >>>> Lavanya,
      >>>>
      >>>>
      >>>> On 4/22/24 05:21, lavanya tech wrote:
      >>>>
      >>>> Could you please explain, what you exactly mean ? So here
      >>>>
      >>>> redirect
      >>>>
      >>>> is
      >>>>
      >>>>
      >>>> not a
      >>>>
      >>>> solution right ?
      >>>>
      >>>>
      >>>> Redirecting is fine.
      >>>>
      >>>> Perhaps you should take a step back and decide: what do you
      >>>>
      >>>> actually
      >>>>
      >>>> want, here? You might be trying to solve problem X by applying
      >>>>
      >>>> solution
      >>>>
      >>>> Y, and you've already decided that solution Y is correct so you
      >>>>
      >>>> are
      >>>>
      >>>> trying to get help with that.
      >>>>
      >>>> Perhaps ask for help with Problem X?
      >>>>
      >>>> For example, "I don't want users to have to type the name of my
      >>>> application to reach it so I want example.com/
     <http://example.com/> to go to my
      >>>>
      >>>> application
      >>>>
      >>>> instead of example.com/myapp/ <http://example.com/myapp/>".
      >>>>
      >>>> Or, "I have multiple domains and I want all of them to redirect
      >>>>
      >>>> to
      >>>>
      >>>> the
      >>>>
      >>>> canonical domain example.com <http://example.com> and to go to
     me web application
      >>>>
      >>>> /myapp
      >>>>
      >>>> so
      >>>>
      >>>> everything goes to example.com/myapp/
     <http://example.com/myapp/>".
      >>>>
      >>>> "You'd have to use a glob/regex if
      >>>>
      >>>> you wanted to check for [anything and maybe nothing.]
      >>>>
      >>>> example.com <http://example.com>
      >>>>
      >>>> ."
      >>>>
      >>>>
      >>>>
      >>>> There is nothing in your configuration or question that
suggests
      >>>>
      >>>> that
      >>>>
      >>>> the hostname in the request is relevant, but you are making it
a
      >>>> *requirement* that the request contains a specific Host header.
      >>>>
      >>>> IF
      >>>>
      >>>> you
      >>>>
      >>>> don't actually need that, why do you have it?
      >>>>
      >>>> -chris
      >>>>
      >>>> On Fri, Apr 19, 2024 at 3:03 PM Christopher Schultz <
      >>>>
      >>>> ch...@christopherschultz.net
     <mailto:ch...@christopherschultz.net>> wrote:
      >>>>
      >>>> Ammu,
      >>>>
      >>>>
      >>>> On 4/19/24 08:32, lavanya tech wrote:
      >>>>
      >>>> Thank you very much. I removed <Host> for example.com
     <http://example.com> as
      >>>>
      >>>> well
      >>>>
      >>>> as
      >>>>
      >>>>
      >>>> adding
      >>>>
      >>>>
      >>>> an
      >>>>
      >>>>
      >>>> <Alias> in server.xml
      >>>> I copied context.xml file
      >>>>
      >>>>
/git/app/apache-tomcat-10.1.11/webapps/towl/META-INF/context.xml
      >>>>
      >>>> Removed < in rewrite.config files.
      >>>>
      >>>> But still I dont redirect the URL.
      >>>>
      >>>>
      >>>> If you have <Context> in server.xml and also your application
      >>>>
      >>>> in
      >>>>
      >>>> the
      >>>>
      >>>> webapps/ directory, then you will be double-deploying your
      >>>>
      >>>> application.
      >>>>
      >>>>
      >>>> Re-name /git/app/apache-tomcat-10.1.11/webapps/towl/ to be
      >>>> /git/app/apache-tomcat-10.1.11/webapps/ROOT (the capitals are
      >>>> important)
      >>>> and remove the <Context> element from your server.xml.
      >>>>
      >>>> Then start your server and read the logs.
      >>>>
      >>>> *nslookup alias.example.com <http://alias.example.com>
     <http://alias.example.com <http://alias.example.com>>
      >>>>
      >>>> gives-->Non-authoritative answer:Name: www.example.com
     <http://www.example.com>
      >>>> <http://www.example.com <http://www.example.com>>Address:
     192.168.200.10Aliases:
      >>>>
      >>>> alias.example.com <http://alias.example.com>
      >>>>
      >>>> <http://alias.example.com <http://alias.example.com>>*
      >>>>
      >>>>
      >>>> Just to give some information here, *www.example.com
     <http://www.example.com>
      >>>> <http://www.example.com <http://www.example.com>>* has alias*
     "alias.example.com <http://alias.example.com>
      >>>> <http://alias.example.com <http://alias.example.com>>"*
      >>>> But https://www.example.com:7777/example
     <https://www.example.com:7777/example> --> works fine with
      >>>>
      >>>> out
      >>>>
      >>>>
      >>>> issues
      >>>>
      >>>>
      >>>> but
      >>>>
      >>>>
      >>>> the alias doesnot works (https://alias.example.com
     <https://alias.example.com>)
      >>>> So i am not sure if the redirect url helps or if its correct
      >>>>
      >>>>
      >>>> Your rewrite configuration says that you have to be using host
      >>>> "example.com <http://example.com>" but your request goes to
     www.example.com <http://www.example.com>. Your
      >>>> configuration should only redirect a request such as:
      >>>>
      >>>> $ curl -v http://example.com:7777/something
     <http://example.com:7777/something>
      >>>>
      >>>> HTTP/1.1 301 Moved Permanently
      >>>> ...
      >>>> Location: https://www.example.com:7777/example
     <https://www.example.com:7777/example>
      >>>>
      >>>> If you
      >>>>
      >>>>
      >>>>
      >>>
      >>
     ---------------------------------------------------------------------
      >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
     <mailto:users-unsubscr...@tomcat.apache.org>
      >> For additional commands, e-mail: users-h...@tomcat.apache.org
     <mailto:users-h...@tomcat.apache.org>
      >>
      >>
      >


     ---------------------------------------------------------------------
     To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
     <mailto:users-unsubscr...@tomcat.apache.org>
     For additional commands, e-mail: users-h...@tomcat.apache.org
     <mailto:users-h...@tomcat.apache.org>




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to