Hey Martin,
common access cards are smart cards that allow a user to authenticate to a
domain using just the card(inserted into the card reader) and a pin number.
 The directive
*SSLVerifyClient require*
requires all https access utilize a smart card. no smart card, no access.

*SSLVerifyClient optional
*this seems to fix my issue. It prompts for the smart card for access but
also allows the request (that comes from localhost) through.

The proxy resides in www/cgi-bin

I am not a python person but I can better describe it in java terms (recall
we use mod_jk to hand off to tomcat6):

user accesses *https://mydomain.com/protected_app**_A*
protected_app requires data from some_other_protected_app using ajax and a
pseudo proxy servlet
*https://mydomain.com/protected_app_A/pseudo_proxy_Servlet* makes a
URLConnection to (to avoid the javascript cross site scripting error) to
*https://mydomain.com/protected_app_B/web-service*
Apache attempts to authenticate this request coming from
*https://mydomain.com/protected_app_A/pseudo_proxy_Servlet*  . To apache it
appears as a request from localhost from user Java1.6(tomcat) and so
authentication fails since apache is asking the servlet for a cert and it
does not have the client cert.
Setting
*SSLVerifyClient optional*
seems to fix the problem since the request from localhost java1.6(tomcat) is
allowed since It no longer requires client certs.

This is my theory and I am open to corrections.
As it is configured now, it works for me.
 I realize that the ideal solution would be to set *SSLVerifyClient
require*and configure apache to forward client certs to tomcat as well
as the python
proxy, which I am currently researching.
Thanks!
G40



On Tue, Jan 18, 2011 at 10:09 AM, Martin Kuba <ma...@ics.muni.cz> wrote:

> Hi G40,
>
> I am a bit confused from your description, I do not know what you mean
> by "common access cards" and what you mean by forcing them.
> Also I do not understand where is your python proxy, is it on the server or
> on the client ?
>
> I have a suspicion that you are mixing the client and the server.
>
> Is the configuration that you use a web browser with a certificate to
> access a URL
> on the server, the URL is served by a python script that makes another HTTP
> call
> to the same server ? If this is the case, it can't work, because the
> certificate
> cannot be delegated from the server-side script to another server-side
> script.
>
> The reason is that it is not the certificate alone what is needed to make
> an authentication to an SSL server, also the private key is needed.
>
> Cheers
>
> Martin
>
> Dne 18.1.2011 16:36, g f napsal(a):
>
>> Hello Martin,
>> thanks for the reply.
>> I have those directives already and it all works until I add:
>> /SSLVerifyClient *require*/
>>
>> I changed this directive to /*optional*/ and it seems to work now, though
>> I am not so confidant in this configuration.
>> I wonder if there is a way to pass the client cert through to the python
>> proxy?
>>
>> Thanks,
>> G40
>>
>> On Tue, Jan 18, 2011 at 9:30 AM, Martin Kuba <ma...@ics.muni.cz <mailto:
>> ma...@ics.muni.cz>> wrote:
>>
>>    Hi G40,
>>
>>    the "SSLVerifyClient require" requires that the client presents a
>> certificate.
>>    You have to configure also the list of Certification Authorities that
>>    the server accepts by the following directives:
>>
>>      SSLCACertificatePath /etc/ssl/certs/
>>    or
>>      SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
>>
>>    If the client certificate is not signed by a root CA, but by some
>> intermediate CA,
>>    which may be in turn signed by another intermediate CA, etc., you need
>> also
>>    to set the value for SSLVerifyDepth to the highest length of the
>> certificate chain
>>    that the client may provide.
>>
>>    The "Allow" directives play no role in this, because the error you have
>> got
>>    happened during the SSL handshake, which is sooner than the Allow
>> directives are applied.
>>
>>    Martin
>>
>>    Dne 18.1.2011 16:16, g f napsal(a):
>>
>>        Hello all,
>>        I have a debian os running Apache 2.2.16(debian) along with tomcat
>> 6.0.29. I use mod_jk as well as mod_auth_kerb module for apache. Apache and
>> the modules are debian repository packages.
>>
>>        I recently attempted to activate common access cards and if I just
>> activate them but do not force them it works great.
>>        Once I force access cards, I get the following error and my
>> web-apps break.
>>
>>        Force access cards via:
>>        |SSLVerifyClient require
>>        SSLVerifyDepth 2|
>>
>>        info level logging error.log:
>>        [Tue Jan 18 14:47:07 2011] [info] [client 127.0.1.1] SSL library
>> error 1 in handshake (server myserver.xxx.xxx.xxx:443)
>>        [Tue Jan 18 14:47:07 2011] [info] SSL Library Error: 336105671
>> error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return
>> a certificate No CAs known to server for verification?
>>
>>        The web-app that throws this message uses a python proxy to make an
>> ajax call to a different web context (we do this to avoid the cross site
>> error).
>>        I believe what is happening is that the python script [client
>> 127.0.1.1] is making the request to apache without valid client certs and
>> hence is getting denied.
>>        I have a directive in apache2_home/sites-enabled/default-ssl conf
>> file that I had hoped would solve this issue(however it does not).
>>        directive in default-ssl conf file
>>        |Allow from localhost
>>        Allow from 127.0.1.1
>>        Allow from 127.0.0.1
>>
>>        |Is there a solution to this issue?
>>        Perhaps a way to not require client cert from localhost?
>>        Thanks for any advice, much appreciated!
>>
>>        Cheers,
>>          G40
>>
>>
>>
>>    --
>>    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>    Supercomputing Center Brno             Martin Kuba
>>    Institute of Computer Science    email: ma...@ics.muni.cz <mailto:
>> ma...@ics.muni.cz>
>>    Masaryk University 
>> http://www.ics.muni.cz/~makub/<http://www.ics.muni.cz/%7Emakub/><
>> http://www.ics.muni.cz/%7Emakub/>
>>
>>    Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
>>    --------------------------------------------------------------
>>
>>
>>
>
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Supercomputing Center Brno             Martin Kuba
> Institute of Computer Science    email: ma...@ics.muni.cz
> Masaryk University             
> http://www.ics.muni.cz/~makub/<http://www.ics.muni.cz/%7Emakub/>
> Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
> --------------------------------------------------------------
>
>

Reply via email to