On Wed, Dec 23, 2020 at 4:44 PM Romain Manni-Bucau <rmannibu...@gmail.com>
wrote:

> 1. Usage, typically if you run in kubernetes or any managed instance env
> then you don't care and will restart the instance (with graceful shutdown)
> when needed
>

This is outside of my scope.


> 2. There are several tomcat instances out there using certbot (my blog is a
> tomee with certbot on for example) so can also be a lack of doc/knowledge
>

That's well known before in the conversation, i.e. I'm running Tomcat with
SSL on numbeo.com as documented here:
https://mladenadamovic.wordpress.com/2016/09/06/configure-tomcat-with-ssl-on-ubuntu-minimal/


> 3. I agree a built in module enables an easier deployment (just a valve to
> configure with a few attributes) and everything else works OOTB but you
> don't need any modification in tomcat distribution to do that - was my main
> point, all can be done in a new module without modifying tomcat internals
> for a particular deployment
>

But adding a Valve or a Servlet would mean modifying Tomcat internals?



> 4. In several cases tomcat will not have the SSL config but a frontend
> (httpd, nginx, ...) will do it so tomcat integration will not help there
>

Those suckers ;-)




>
> This is why, for me, a tomcat-letsencrypt module is the most relevant
> solution.
> If owned by Tomcat project perfect (this is the best IMHO), if not it will
> still cover the same features so still good.
>
> Hope it makes sense.
>
>
> >
> >
> >
> >
> > > Do you see anything else which would need to change? The reloadSSL
> method
> > > was added for letsencrypt already so guess this adjustment work is
> > already
> > > done.
> >
> >
> > There are currently two options, through manager or through service
> > restart. It seems that there is no consensus here to add the 3th option.
> >
> >
> >
> >
> >
> >
> >
> > >
> > > >
> > > >
> > > > On Wed, Dec 23, 2020 at 2:01 PM Romain Manni-Bucau <
> > > rmannibu...@gmail.com>
> > > > wrote:
> > > >
> > > > > Le mer. 23 déc. 2020 à 12:50, Mladen Adamović <
> > > mladen.adamo...@gmail.com
> > > > >
> > > > > a
> > > > > écrit :
> > > > >
> > > > > > On Wed, Dec 23, 2020 at 12:12 PM Romain Manni-Bucau <
> > > > > rmannibu...@gmail.com
> > > > > > >
> > > > > > wrote:
> > > > > >
> > > > > > > I don't think so, this connector auth is only used in very
> > > particular
> > > > > > cases
> > > > > > > (= never ;)): HTTP2 - we don't care, AJP - we don't care much.
> It
> > > is
> > > > > > also a
> > > > > > > kind of automatic authorization - no password or so - so will
> > pass
> > > > and
> > > > > > not
> > > > > > > fail.
> > > > > > >
> > > > > >
> > > > > > That sounds very strange, as I have seen in the code:
> > > > > >             if (req.getRemoteUserNeedsAuthorization()) {
> > > > > > ...
> > > > > >                 } else if (!(authenticator instanceof
> > > > > AuthenticatorBase)) {
> > > > > >    ...
> > > > > >                 }
> > > > > >
> > > > > > public class SSLAuthenticator extends AuthenticatorBase {
> > > > > >
> > > > > >
> > > > > Sure but check what makes remoteUserNeedsAuthorization true (http2
> > and
> > > > ajp)
> > > > > and what does the block when true (authenticate(username), no
> > password
> > > or
> > > > > so).
> > > > > So not an issue IMHO.
> > > > >
> > > > >
> > > > > >
> > > > > > My point was if you have some security contraint (JWT, basic,
> > etc...)
> > > > on
> > > > > > > /*, then your servlet will not be called for letsencrypt call
> > > whereas
> > > > > if
> > > > > > > you have a valve you can still handle it properly since you
> > didn't
> > > > > enter
> > > > > > > the secured chain - a valve is before filter chain and can be
> > > before
> > > > > > > authenticators in valve chain since authenticators -
> > > > AuthenticatorBase
> > > > > -
> > > > > > > are valves.
> > > > > > >
> > > > > >
> > > > > > Authenticator Valve's seems to me to have a different treatment
> > than
> > > > > other
> > > > > > Valves which are accessed through Pipeline.
> > > > > >
> > > > >
> > > > > This is true since it can be obtained from the context and its call
> > can
> > > > be
> > > > > forced, but here again the question is when.
> > > > > If you check callers then it shouldn't be the case until you add
> > > another
> > > > > valve doing it and if so you can still set the LetsEncryptValve
> > before
> > > > and
> > > > > bypass it - can even be set on the host and not the context.
> > > > >
> > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > > In other words: no code change required in tomcat internals.
> > > > > > >
> > > > > >
> > > > > > I don't understand this yet. If the implementation would use
> > > > serverl.xml
> > > > > to
> > > > > > change StandardContextValve to something else?
> > > > > >
> > > > >
> > > > > No, change nothing, just add a valve on the host for example
> through
> > > > <Valve
> > > > > className.... /> tag.
> > > > >
> > > > >
> > > > > >
> > > > > > I've tried to figure out what are you doing in meecrowave and my
> > IDE
> > > > > > (Netbeans) shows me Usage of LetsEncryptValve [no occurrences]
> > > > > >
> > > > >
> > > > > Maybe use another IDE ;) (joking ;)):
> > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/apache/openwebbeans-meecrowave/blob/433a691b246f9eeda2273e794ddbb7970691cc5f/meecrowave-letsencrypt/src/main/java/org/apache/meecrowave/letencrypt/LetsEncryptSetup.java#L44
> > > > > The MeecrowaveAwareInstanceCustomizer instance enables to "code"
> the
> > > > > server.xml but it is equivalent to previous proposal (<Valve/>).
> > > > >
> > > > >
> > > > > >
> > > > > > How this LetsEncryptValve is actually "injected" into meecrowave
> > > > > Pipeline ?
> > > > > > Or how it is used internally?
> > > > > > I didn't see any Reflection code on Valves or Valve base by
> > searching
> > > > > > source code.
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > >
> > > > > > > Romain Manni-Bucau
> > > > > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > > > > > <https://rmannibucau.metawerx.net/> | Old Blog
> > > > > > > <http://rmannibucau.wordpress.com> | Github <
> > > > > > > https://github.com/rmannibucau> |
> > > > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > > > > > > <
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Le mer. 23 déc. 2020 à 11:23, Mladen Adamović <
> > > > > mladen.adamo...@gmail.com
> > > > > > >
> > > > > > > a
> > > > > > > écrit :
> > > > > > >
> > > > > > > > Thank you Romain, do you then think the place to check for
> ACME
> > > > Valve
> > > > > > (if
> > > > > > > > that would the be appropriate naming) would be in
> > > > > > > > CoyoteAdapter.postParseRequest line 814
> > > > > > > > before doConnectorAuthenticationAuthorization(...) ?
> > > > > > > >
> > > > > > > >
> > > > > > > > On Wed, Dec 23, 2020 at 9:22 AM Romain Manni-Bucau <
> > > > > > > rmannibu...@gmail.com>
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > > > Side note: using a servlet generally does not work if you
> > have
> > > > any
> > > > > > > > security
> > > > > > > > > on the webapp + requires a webapp whereas using a valve
> > solves
> > > > > these
> > > > > > > two
> > > > > > > > > issues.
> > > > > > > > >
> > > > > > > > > Romain Manni-Bucau
> > > > > > > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > > > > > > > <https://rmannibucau.metawerx.net/> | Old Blog
> > > > > > > > > <http://rmannibucau.wordpress.com> | Github <
> > > > > > > > > https://github.com/rmannibucau> |
> > > > > > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > > > > > > > > <
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Le mer. 23 déc. 2020 à 09:15, Mladen Adamović <
> > > > > > > mladen.adamo...@gmail.com
> > > > > > > > >
> > > > > > > > > a
> > > > > > > > > écrit :
> > > > > > > > >
> > > > > > > > > > As I haven't received more replies on this topic, I'm
> > > guessing
> > > > > > > project
> > > > > > > > > > maintainers are not interested in reviewing and including
> > the
> > > > > code
> > > > > > > for
> > > > > > > > > > simpler Letsencrypt integration and discussing the
> > mentioned
> > > > SSL
> > > > > > > > > > documentation improvements?
> > > > > > > > > >
> > > > > > > > > > Enabling AMCE response servlet (good idea by default)
> would
> > > be
> > > > a
> > > > > > good
> > > > > > > > > step
> > > > > > > > > > in my opinion?
> > > > > > > > > >
> > > > > > > > > > My procedure is explained here:
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://mladenadamovic.wordpress.com/2016/09/06/configure-tomcat-with-ssl-on-ubuntu-minimal/
> > > > > > > > > > and the step "Configure HTTP redirect application with
> > > support
> > > > to
> > > > > > > ACME
> > > > > > > > > > challenge" could be integrated into Tomcat easily.
> > > > > > > > > >
> > > > > > > > > > In the case that is integrated, I can write a new
> improved
> > > > > > > > > > tutorial/process.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On Sat, Dec 19, 2020 at 11:09 PM Mladen Adamović <
> > > > > > > > > > mladen.adamo...@gmail.com>
> > > > > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > On Sat, Dec 19, 2020 at 6:30 PM Romain Manni-Bucau <
> > > > > > > > > > rmannibu...@gmail.com>
> > > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > >> It moves the problem elsewhere, how would the CLI
> > > > communicate
> > > > > > with
> > > > > > > > > > tomcat?
> > > > > > > > > > >> JMX, HTTP uses a port, a file based communication
> would
> > be
> > > > > > > probably
> > > > > > > > > > worse
> > > > > > > > > > >> because of perms and other admin issues (and just not
> > > > working
> > > > > in
> > > > > > > > k8s).
> > > > > > > > > > >>
> > > > > > > > > > >
> > > > > > > > > > > I don't see other sane ways actually. So it seems a
> > > web-based
> > > > > > > manager
> > > > > > > > > > with
> > > > > > > > > > > curl is there to stay (for the time being at least).
> > > > > > > > > > >
> > > > > > > > > > > To Chris: It's somewhat weird that the user needs a web
> > > > manager
> > > > > > > just
> > > > > > > > > for
> > > > > > > > > > > curl-ing certification renewal.
> > > > > > > > > > >
> > > > > > > > > > > To everyone:
> > > > > > > > > > > I have a suggestion on improving Documentation
> regarding
> > > SSL.
> > > > > > > > > > >
> https://tomcat.apache.org/tomcat-10.0-doc/ssl-howto.html
> > > > > > > > > > > Currently, it states
> > > > > > > > > > > Configuration
> > > > > > > > > > > Prepare the Certificate Keystore
> > > > > > > > > > > Tomcat currently operates only on JKS, PKCS11 or PKCS12
> > > > format
> > > > > > > > > keystores.
> > > > > > > > > > >
> > > > > > > > > > > ...
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > I think it should start with
> > > > > > > > > > > Configuration
> > > > > > > > > > > Option 1) Use Tomcat Native
> > > > > > > > > > > which would showcase a path to something like:
> > > > > > > > > > >
> > > > > > > > > > > <!-- Define an SSL Coyote HTTP/1.1 Connector on port
> 8443
> > > -->
> > > > > > > > > > > <Connector
> > > > > > > > > > >
>  protocol="org.apache.coyote.http11.Http11NioProtocol"
> > > > > > > > > > >     port="8443"
> > > > > > > > > > >     maxThreads="150"
> > > > > > > > > > >     SSLEnabled="true" >
> > > > > > > > > > >   <SSLHostConfig>
> > > > > > > > > > >     <Certificate
> > > > > > > > > > >         certificateKeyFile="conf/localhost-rsa-key.pem"
> > > > > > > > > > >         certificateFile="conf/localhost-rsa-cert.pem"
> > > > > > > > > > >
> >  certificateChainFile="conf/localhost-rsa-chain.pem"
> > > > > > > > > > >         type="RSA"
> > > > > > > > > > >         />
> > > > > > > > > > >   </SSLHostConfig>
> > > > > > > > > > > </Connector>
> > > > > > > > > > >
> > > > > > > > > > > Option 2) Without Tomcat Native
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > ...
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > I don't know what is the formal process for improving
> the
> > > > > > > > documentation
> > > > > > > > > > > here?
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > >> > > >
> > > > > > > > > > >> > > >
> > > > > > > > > > >> > > > >
> > > > > > > > > > >> > > > > Le sam. 19 déc. 2020 à 15:24, Mladen Adamović
> <
> > > > > > > > > > >> > > mladen.adamo...@gmail.com
> > > > > > > > > > >> > > > >
> > > > > > > > > > >> > > > > a
> > > > > > > > > > >> > > > > écrit :
> > > > > > > > > > >> > > > >
> > > > > > > > > > >> > > > > > On Sat, Dec 19, 2020 at 2:29 PM Christopher
> > > > Schultz
> > > > > <
> > > > > > > > > > >> > > > > > ch...@christopherschultz.net> wrote:
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > > > Why not use cron? You can do this with a
> > > single
> > > > > > "curl"
> > > > > > > > > > command
> > > > > > > > > > >> > and
> > > > > > > > > > >> > > > the
> > > > > > > > > > >> > > > > > > Manager+JMXProxyServlet.
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > > We are not using Tomcat manager app.
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > > Why someone should be forced to use Manager,
> > to
> > > > > > > read/setup
> > > > > > > > > the
> > > > > > > > > > >> > > > > > documentation regarding JMXProxyServlet,
> > create
> > > an
> > > > > > > > > additional
> > > > > > > > > > >> > > > > > servlet (where does it have dependency on?)
> > only
> > > > to
> > > > > > > reload
> > > > > > > > > > >> > > > automatically
> > > > > > > > > > >> > > > > > certificates?
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > > I'm proposing a solution with the simple
> > > > > SSLHostConfig
> > > > > > > > > > >> parameter.
> > > > > > > > > > >> > > It's
> > > > > > > > > > >> > > > a
> > > > > > > > > > >> > > > > > user friendly. Simple, intuitive.
> > > > > > > > > > >> > > > > > No need for using manager, no need to
> create a
> > > > > > specific
> > > > > > > > > > servlet
> > > > > > > > > > >> > > > somewhere
> > > > > > > > > > >> > > > > > in your code. Just a single server.xml
> > argument.
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > > Also, *another idea*, I'm contributing this
> > code
> > > > > (see
> > > > > > > > below)
> > > > > > > > > > we
> > > > > > > > > > >> are
> > > > > > > > > > >> > > > using
> > > > > > > > > > >> > > > > > for Letsencrypt ACME challenge.
> > > > > > > > > > >> > > > > > Tomcat could also have an option, i.e. in
> > > web.xml
> > > > to
> > > > > > > > > > >> automatically
> > > > > > > > > > >> > > > > support
> > > > > > > > > > >> > > > > > Letsencrypt ACME challenge.
> > > > > > > > > > >> > > > > > Idea for web.xml
> > > > > > > > > > >> > > > > >   <servlet>
> > > > > > > > > > >> > > > > >
> > > > >  <servlet-name>Letsencrypt-acme</servlet-name>
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > >
> > > > > > > > > > >> > > >
> > > > > > > > > > >> > >
> > > > > > > > > > >> >
> > > > > > > > > > >>
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> <servlet-class>org.apache.catalina.servlets.LetsencryptAcmeChallenge</servlet-class>
> > > > > > > > > > >> > > > > >         <init-param>
> > > > > > > > > > >> > > > > > etc.
> > > > > > > > > > >> > > > > > </servlet>
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > > We are using
> > > > > > > > > > >> > > > > > @WebServlet(name =
> "LetsencryptAcmeChallenge",
> > > > > > > > urlPatterns =
> > > > > > > > > > >> > > > > > {"/.well-known/acme-challenge/*"})
> > > > > > > > > > >> > > > > > public class LetsencryptAcmeChallenge
> extends
> > > > > > > HttpServlet
> > > > > > > > {
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >   /**
> > > > > > > > > > >> > > > > >    * Processes requests for both HTTP
> > > > > <code>GET</code>
> > > > > > > and
> > > > > > > > > > >> > > > > > <code>POST</code> methods.
> > > > > > > > > > >> > > > > >    *
> > > > > > > > > > >> > > > > >    * @param request servlet request
> > > > > > > > > > >> > > > > >    * @param response servlet response
> > > > > > > > > > >> > > > > >    * @throws ServletException if a
> > > > servlet-specific
> > > > > > > error
> > > > > > > > > > occurs
> > > > > > > > > > >> > > > > >    * @throws IOException if an I/O error
> > occurs
> > > > > > > > > > >> > > > > >    */
> > > > > > > > > > >> > > > > >   protected void
> > > processRequest(HttpServletRequest
> > > > > > > > request,
> > > > > > > > > > >> > > > > > HttpServletResponse response)
> > > > > > > > > > >> > > > > >       throws ServletException, IOException {
> > > > > > > > > > >> > > > > >     String requestUrl =
> > > > > > > > request.getRequestURL().toString();
> > > > > > > > > > >> > > > > >     if
> > > > > > > > (requestUrl.contains(".well-known/acme-challenge/"))
> > > > > > > > > {
> > > > > > > > > > >> > > > > >       int indexFilename =
> > > > > requestUrl.lastIndexOf("/")
> > > > > > +
> > > > > > > 1;
> > > > > > > > > > >> > > > > >       boolean wasError = true;
> > > > > > > > > > >> > > > > >       if (indexFilename > 0 &&
> indexFilename <
> > > > > > > > > > >> > requestUrl.length()) {
> > > > > > > > > > >> > > > > >         String filename =
> > > > > > > > > requestUrl.substring(indexFilename);
> > > > > > > > > > >> > > > > >         File existingFile = new
> > > > > > > > > > >> > > > > >
> > > > > > > > > >
> > > File("/tmp/letsencrypt/public_html/.well-known/acme-challenge/"
> > > > > > > > > > >> +
> > > > > > > > > > >> > > > > >  filename);
> > > > > > > > > > >> > > > > >         if (existingFile.exists()) {
> > > > > > > > > > >> > > > > >
> >  response.setContentType("text/plain");
> > > > > > > > > > >> > > > > >           OutputStream out =
> > > > > > response.getOutputStream();
> > > > > > > > > > >> > > > > >           FileInputStream in = new
> > > > > > > > > > >> FileInputStream(existingFile);
> > > > > > > > > > >> > > > > >
> > > > > >  FilesOperations.inputStreamToOutputStream(in,
> > > > > > > > > out);
> > > > > > > > > > >> > > > > >           wasError = false;
> > > > > > > > > > >> > > > > >         }
> > > > > > > > > > >> > > > > >       }
> > > > > > > > > > >> > > > > >       if (wasError) {
> > > > > > > > > > >> > > > > >         throw new ServletException("invalid
> > > > > requestUrl
> > > > > > > " +
> > > > > > > > > > >> > > requestUrl);
> > > > > > > > > > >> > > > > >       }
> > > > > > > > > > >> > > > > >   }
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > > from FilesOperations:
> > > > > > > > > > >> > > > > >      public static void
> > > > > > > > > inputStreamToOutputStream(InputStream
> > > > > > > > > > >> in,
> > > > > > > > > > >> > > > > > OutputStream out) throws IOException {
> > > > > > > > > > >> > > > > >         try {
> > > > > > > > > > >> > > > > >             byte[  ] buf = new byte[32 *
> > 1024];
> > > > //
> > > > > > 32K
> > > > > > > > > buffer
> > > > > > > > > > >> > > > > >             int bytesRead;
> > > > > > > > > > >> > > > > >             while ((bytesRead =
> in.read(buf))
> > !=
> > > > > -1) {
> > > > > > > > > > >> > > > > >                 out.write(buf, 0,
> bytesRead);
> > > > > > > > > > >> > > > > >             }
> > > > > > > > > > >> > > > > >         } finally {
> > > > > > > > > > >> > > > > >             if (in != null) {
> > > > > > > > > > >> > > > > >               in.close();
> > > > > > > > > > >> > > > > >               out.close();
> > > > > > > > > > >> > > > > >             }
> > > > > > > > > > >> > > > > >         }
> > > > > > > > > > >> > > > > >     }
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > > > > > *Long*:
> > > > > > > > > > >> > > > > > > > SSL certificates have a period of
> > expiration
> > > > and
> > > > > > in
> > > > > > > > the
> > > > > > > > > > >> case of
> > > > > > > > > > >> > > > > > > > Letsencrypt, it's set to 3 months as
> they
> > > > think
> > > > > > > > everyone
> > > > > > > > > > >> should
> > > > > > > > > > >> > > > have
> > > > > > > > > > >> > > > > > the
> > > > > > > > > > >> > > > > > > > renewal mechanism automatically.
> > > > > > > > > > >> > > > > > > >
> > > > > > > > > > >> > > > > > > > As the Letsencrypt is the most popular
> SSL
> > > > > issuing
> > > > > > > > > > authority
> > > > > > > > > > >> > > > (source:
> > > > > > > > > > >> > > > > > > >
> > > https://trends.builtwith.com/ssl/LetsEncrypt
> > > > > ), I
> > > > > > > > think
> > > > > > > > > > >> Tomcat
> > > > > > > > > > >> > > > > should
> > > > > > > > > > >> > > > > > > have
> > > > > > > > > > >> > > > > > > > an integration with Letsencrypt working
> > > > > > flawlessly.
> > > > > > > > > > >> > > > > > > >
> > > > > > > > > > >> > > > > > > > We are currently using the script to
> renew
> > > the
> > > > > > > > > certificate
> > > > > > > > > > >> (I
> > > > > > > > > > >> > can
> > > > > > > > > > >> > > > > share
> > > > > > > > > > >> > > > > > > our
> > > > > > > > > > >> > > > > > > > integration details with whoever is
> > > > interested,
> > > > > > > please
> > > > > > > > > > >> email me
> > > > > > > > > > >> > > if
> > > > > > > > > > >> > > > > you
> > > > > > > > > > >> > > > > > > are
> > > > > > > > > > >> > > > > > > > interested), but it's restarting Tomcat.
> > > > > > > > > > >> > > > > > > >
> > > > > > > > > > >> > > > > > > > As Tomcat shall not be restarted ever
> > > > > (ideally), I
> > > > > > > > think
> > > > > > > > > > >> Tomcat
> > > > > > > > > > >> > > > > should
> > > > > > > > > > >> > > > > > > have
> > > > > > > > > > >> > > > > > > > an option to reload certificate,
> without a
> > > > > > > dependency
> > > > > > > > to
> > > > > > > > > > >> Tomcat
> > > > > > > > > > >> > > > > source
> > > > > > > > > > >> > > > > > > code
> > > > > > > > > > >> > > > > > > > and "hacks" like some available on
> > > > > StackOverflow:
> > > > > > > > > > >> > > > > > > >
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > >
> > > > > > > > > > >> > > >
> > > > > > > > > > >> > >
> > > > > > > > > > >> >
> > > > > > > > > > >>
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://stackoverflow.com/questions/5816239/how-do-i-force-tomcat-to-reload-trusted-certificates
> > > > > > > > > > >> > > > > > > ).
> > > > > > > > > > >> > > > > > > > Those hacks are no good as:
> > > > > > > > > > >> > > > > > > > 1) code to reload certificate should not
> > run
> > > > > > inside
> > > > > > > > Java
> > > > > > > > > > >> code,
> > > > > > > > > > >> > as
> > > > > > > > > > >> > > > > > > > letsencrypt is invoked through Linux
> > > > > > > > > > >> > > > > > > > 2) each application uses that
> > Stackoverflow
> > > > hack
> > > > > > > have
> > > > > > > > > > >> > additional
> > > > > > > > > > >> > > > > > compile
> > > > > > > > > > >> > > > > > > > and run dependency set to Tomcat (which
> is
> > > > very
> > > > > > > bad).
> > > > > > > > > > >> > > > > > > >
> > > > > > > > > > >> > > > > > > > I have a proposal on how this should be
> > > fixed:
> > > > > > > Tomcat
> > > > > > > > > > should
> > > > > > > > > > >> > > have a
> > > > > > > > > > >> > > > > > > > server.xml options something like
> > > > > > > > > > >> certificateReloadAfterDays or
> > > > > > > > > > >> > > > > > > > reloadAfterDays
> > > > > > > > > > >> > > > > > > >
> > > > > > > > > > >> > > > > > > > I see this is moved to SSLHostConfig, we
> > are
> > > > > still
> > > > > > > > using
> > > > > > > > > > old
> > > > > > > > > > >> > > > params.
> > > > > > > > > > >> > > > > > > >
> > > > > > > > > > >> > > > > > > > Do you agree on this feature?
> > > > > > > > > > >> > > > > > > >
> > > > > > > > > > >> > > > > > > > If so... I'm not lazy to try to do it
> > > myself,
> > > > > but
> > > > > > > as I
> > > > > > > > > > >> haven't
> > > > > > > > > > >> > > ever
> > > > > > > > > > >> > > > > > > written
> > > > > > > > > > >> > > > > > > > Tomcat code neither know procedures (I
> > have
> > > > been
> > > > > > > > coding
> > > > > > > > > > >> > > > > professionally
> > > > > > > > > > >> > > > > > > > since 2006, but I never committed to
> Maven
> > > or
> > > > > Git
> > > > > > > > > project
> > > > > > > > > > >> > before,
> > > > > > > > > > >> > > > > lol),
> > > > > > > > > > >> > > > > > > is
> > > > > > > > > > >> > > > > > > > there someone else who is keen on doing
> > this
> > > > > > > feature?
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >> > > > > > > Have a look at this:
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >>
> > > > > http://tomcat.apache.org/presentations.html#latest-lets-encrypt
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >> > > > > > > -chris
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >> > >
> > > > > > > > > >
> > > > > >
> > ---------------------------------------------------------------------
> > > > > > > > > > >> > > > > > > To unsubscribe, e-mail:
> > > > > > > > dev-unsubscr...@tomcat.apache.org
> > > > > > > > > > >> > > > > > > For additional commands, e-mail:
> > > > > > > > > dev-h...@tomcat.apache.org
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >> > > > > > >
> > > > > > > > > > >> > > > > >
> > > > > > > > > > >> > > > >
> > > > > > > > > > >> > > >
> > > > > > > > > > >> > >
> > > > > > > > > > >> >
> > > > > > > > > > >>
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> > <
> >
> https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon
> > >
> > Virus-free.
> > www.avast.com
> > <
> >
> https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link
> > >
> > <#m_-1856320879832207330_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
> >
>

Reply via email to