Markus Maeder wrote:
> 
> Hi
> 
> Some days ago I posted following message in tomcat-user and had one reply
> stating he is having the same problem.
> 
> I'd like to fix this problem. Is there somebody already working on this? If not,
> which source should I get to track down the problem?

What is the problem? It works well on my tests, try the test application I have
attached to the mail..

> 
> Markus
> 
> My message in tomcat-user:
> --- Markus Maeder <[EMAIL PROTECTED]> wrote:
> > Hi!
> >
> > I was playing around with Tomcat 4.0.1 and couldn't
> > get the client certificates
> > from apache through mod_webapp. So I tried Tomcat
> > 4.0.2 b2 and the build from
> > January 27. I even compiled a new mod_webapp
> > (1.0.2-tc402).
> >
> > Then I tried ajp13 and mod_jk. This is working fine
> > after I changed my code
> > (working in Tomcat 3.2x) from
> >
> > String certAttribute =
> > "javax.servlet.request.X509Certificate";
> > X509Certificate certificate =
> >
> (java.security.cert.X509Certificate)request.getAttribute(certAttribute);
> >
> > To version for Tomcat 4:
> > String certAttribute =
> > "javax.servlet.request.X509Certificate";
> > X509Certificate certificate[] =
> >
> (java.security.cert.X509Certificate[])request.getAttribute(certAttribute);
> >
> > As I think I missed something in the configuration
> > of mod_webapp, I wonder, if
> > somebody has a working configuration for getting
> > client certificates with
> > mod_webapp, apache 1.3 and mod_ssl.
> >
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
/*
 * ====================================================================
 *
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 1999 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution, if
 *    any, must include the following acknowlegement:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowlegement may appear in the software itself,
 *    if and wherever such third-party acknowlegements normally appear.
 *
 * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
 *    Foundation" must not be used to endorse or promote products derived
 *    from this software without prior written permission. For written
 *    permission, please contact [EMAIL PROTECTED]
 *
 * 5. Products derived from this software may not be called "Apache"
 *    nor may "Apache" appear in their names without prior written
 *    permission of the Apache Group.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 *
 * [Additional notices, if required by prior licensing conditions]
 *
 */

// If this class were in a package, it would need to go in the
// corresponding subdirectory

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.security.cert.X509Certificate;


/**
 * Simple servlet to test SSL User Certificate.
 * (From the well known HelloWorldExample.java).
 *
 * @author Jean-Frederic Clere [EMAIL PROTECTED]
 */

public final class X509 extends HttpServlet {


    /**
     * Respond to a GET request for the content produced by
     * this servlet.
     *
     * @param request The servlet request we are processing
     * @param response The servlet response we are producing
     *
     * @exception IOException if an input/output error occurs
     * @exception ServletException if a servlet error occurs
     */
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
      throws IOException, ServletException {

        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();

        writer.println("<html>");
        writer.println("<head>");
        writer.println("<title>X509 Application Servlet Test Page</title>");
        writer.println("</head>");
        writer.println("<body bgcolor=white>");

        writer.println("<h1>Sample Application Servlet</h1>");
        writer.println("This is the output of a servlet that is part of");
        writer.println("the X509 test application.  It displays the");
        writer.println("request headers from the request we are currently");
        writer.println("processing.");

        writer.println("<table border=\"0\" width=\"100%\">");
        Enumeration names = request.getHeaderNames();
        while (names.hasMoreElements()) {
            String name = (String) names.nextElement();
            writer.println("<tr>");
            writer.println("  <th align=\"right\">" + name + ":</th>");
            writer.println("  <td>" + request.getHeader(name) + "</td>");
            writer.println("</tr>");
        }
        writer.println("</table>");

        writer.println("<h1>User certificate information</h1>");
        writer.println("<hr>");

        Object object = request.getAttribute("javax.servlet.request.X509Certificate");
        if (object!=null)
          writer.println("object is :" + object.getClass());

        // Get the first certificate.
        X509Certificate jsseCerts[] = (X509Certificate [])
          request.getAttribute("javax.servlet.request.X509Certificate");
        if ( jsseCerts != null) {
          X509Certificate cert = jsseCerts[0];
          writer.println("Issuer: " + cert.getIssuerDN());
          writer.println("<br>");
          writer.println("SujectDN: " + cert.getSubjectDN());
          writer.println("<hr>");
          writer.println(cert); // .toString());
        } else {
          writer.println("NO user certificate<br>");
        }
        writer.println("<hr>");

        writer.println("<h1>Other SSL information</h1>");

        writer.println("cipher_suite: " +
          request.getAttribute("javax.servlet.request.cipher_suite"));
        writer.println("<br>");

        writer.println("key_size: " +
          request.getAttribute("javax.servlet.request.key_size"));
        writer.println("<br>");

        writer.println("ssl_session: " +
          request.getAttribute("javax.servlet.request.ssl_session"));
        writer.println("<br>");

        writer.println("isSecure: " +
          request.isSecure());
        writer.println("<br>");

        writer.println("getScheme: " +
          request.getScheme());

        writer.println("</body>");
        writer.println("</html>");

    }


}

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to