[squid-users] Client-Side Certificates at the Directory Level?

2007-09-10 Thread techguy005-ml
I have 2 applications that resides on the same Web
Site and shares the same URL prefix (i.e.
www.whatever.com), but lives within different virtual
directories.  Each of those applications has different
security requirements:  One REQUIRES a client-side
certificate and the other one doesn't.

Below are example URLs of what the client would enter:

DOESN'T require a Client-Side certificate:
https://www.whatever.com/NoClientCertRequred/  

DOES require a Client-Side certificate: 
https://www.whatever.com/ClientCertRequred/

In a Squid reverse proxy configurations, in order to
use client certificates, the respective CA signer of
the client-side certificates must be installed on the
Squid server (not the web server) level so the
end-user get challenged to present a client-side
certificate by Squid instead of by the web server. 
Correct?

The question I have is this:  

Can Squid be configured to define client-side
certificate requirements at the DIRECTORY level (like
the aforementioned "/ClientCertRequred/") or does the
requirements have to be set based on the web site as a
whole (i.e. "www.whatever.com")?  If this is possible,
any example squid.conf configurations of this set-up
would be great.

Any insight you can offer would be greatly
appreciated!  Thanks.


Re: [squid-users] Client-Side Certificates at the Directory Level?

2007-09-12 Thread techguy005-ml
I am utilizing Squid 2.6-13 in a reverse-proxy
configuration.

I have an application on a web server that requires
client side certificates that is fronted by the Squid
proxy. One of the properties of a client-side
certificate is the serial number.

Question #1

Even if I installed the client-certificate's CA on the
Squid proxy for it to validate the certificate, there
is no way for Squid to then pass on the request to the
back-end web server with the client-side certificate. 
In essence, the certificate presented by the client to
Squid is lost in translation as the back-end web
server never sees it because Squid makes its own
connection on behalf of the initial request but
WITHOUT the client-certificate.  Correct?

Question #2

In a reverse-proxy set-up, the requests sent to the
back-end web server fronted by the Squid proxy will
ALWAYS appear with the source IP of the Squid proxy
server, NOT the client IP.  Correct?  Is there no way
to change this so it appears to come from the client's
IP rather than Squid.

I appreciate the assistance.  Thanks! 

--- Henrik Nordström <[EMAIL PROTECTED]>
wrote:

> mån 2007-09-10 klockan 10:13 -0700 skrev
> [EMAIL PROTECTED]:
> 
> > In a Squid reverse proxy configurations, in order
> to
> > use client certificates, the respective CA signer
> of
> > the client-side certificates must be installed on
> the
> > Squid server (not the web server) level so the
> > end-user get challenged to present a client-side
> > certificate by Squid instead of by the web server.
> 
> > Correct?
> 
> Correct.
> 
> > Can Squid be configured to define client-side
> > certificate requirements at the DIRECTORY level
> (like
> > the aforementioned "/ClientCertRequred/") or does
> the
> > requirements have to be set based on the web site
> as a
> > whole (i.e. "www.whatever.com")?
> 
> Currently it's per https_port only. Renegotiation of
> the SSL connection
> by ACL requirements is not yet supported.
> 
> Regards
> Henrik
> 
> 



[squid-users] Client-Side Certificates

2007-09-13 Thread techguy005-ml
Thanks Henrik for your guidance however I still cannot
seem to get client certificates to work with Squid
2.6.13 running on RHEL 4.2.  Below is the config and
steps I am performing.  Any insight as to what I am
doing wrong would be greatly appreciated.

# Squid Config #

https_port 192.168.0.2:443 protocol=https accel vhost
cert=/apps/squid2.6.13/etc/ssl/syt-squid.test.com.pem
cafile=/apps/squid2.6.13/etc/ssl/intcatrustedroot.pem
defaultsite=syt-squid.test.com
clientca=/apps/squid2.6.13/etc/ssl/clientca_trusted_root.pem

# Non-SSL Cache Peer
cache_peer 172.16.4.1 parent 80 0 proxy-only
originserver name=test_syt
# ACL
acl test_syt_syt dstdomain syt-squid.test.com
# Non-SSL Cache Peer Access
cache_peer_access test_syt allow test_syt_syt

-

# Actions Performed #

1) Verified client-side cert is valid via openssl: 

bash-3.00$ openssl verify -CAfile
clientca_trusted_root.pem joe-clientcert.pem
joe-clientcert.pem: OK

2a) Opened Internet Explorer 6 and connected to the
Squid proxy.

2b) IE prompts to select the client-side certificate.

2c) Select the client-side certificate and click OK in
the web browser.

Squid Logs show:

2007/09/13 14:54:55| SSL unknown certificate error 20
in /O=Company, Inc./OU=Services/OU=Company Name -
Something/OU=GroupID - TestTeam/OU=UserID -
JoeSmoe/CN=Joe Smoe/[EMAIL PROTECTED]
2007/09/13 14:54:55| clientNegotiateSSL: Error
negotiating SSL connection on FD 20:
error:140890B2:SSL
routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate
returned (1/-1)
2007/09/13 14:54:55| SSL unknown certificate error 20
in /O=Company, Inc./OU=Services/OU=Company Name -
Something/OU=GroupID - TestTeam/OU=UserID -
JoeSmoe/CN=Joe Smoe/[EMAIL PROTECTED]

2d) IE prompts AGAIN to select the client-side
certificate.

Squid Logs show:

2007/09/13 14:54:57| SSL unknown certificate error 20
in /O=Company, Inc./OU=Services/OU=Company Name -
Something/OU=GroupID - TestTeam/OU=UserID -
JoeSmoe/CN=Joe Smoe/[EMAIL PROTECTED]
2007/09/13 14:54:57| clientNegotiateSSL: Error
negotiating SSL connection on FD 20:
error:140890B2:SSL
routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate
returned (1/-1)
2007/09/13 14:54:57| SSL unknown certificate error 20
in /O=Company, Inc./OU=Services/OU=Company Name -
Something/OU=GroupID - TestTeam/OU=UserID -
JoeSmoe/CN=Joe Smoe/[EMAIL PROTECTED]

I tried the same process with FireFox 2.0.0.6 browser
and got the exact same error messages in the Squid log
file.

I am at a loss as I'm not sure where the problem is. 
According to the Squid 2.6 docs, it should be as
simple as adding in the CA cert for the signer of the
client-cert and adding the "clientca=" directive to
the squid.conf file.

The same squid server utilizing normal SSL server
certificates works great!  It just seems to be the
client-side certificates that is the issue.

Any help would be appreciated!  Thanks!




[squid-users] HTTP Header Manipulation Question

2007-09-20 Thread techguy005-ml
I have an application that passes a value back to the
client using the HTTP Status string:

Response.Status = Response.Status & " " & FileSize

This would return an HTTP status to the client looking
like below, which says 200 for success and 5632
for the number of bytes uploaded to the server.

200 5632

Unfortunately, Squid doesn't see that as a valid HTTP
status (and rightfully so) and trims off the 5632
and replaces it with "OK". Therefore, the application
errors on the client side because its expecting a
value back in the HTTP Header. Below is what I found
in testing:

Through the Squid proxy:  HTTP/1.0 200 OK

Direct to Web Server: HTTP/1.1 200 5632

The developers are working on fixing this, but for the
time-being, is there any setting in Squid that I can
set to allow it to pass the value back after the "200"
status code (i.e. replace the "OK" with a value)?

What I'd like Squid to pass back is:  

HTTP/1.0 200 
Example:  HTTP/1.0 200 5632

Any assistance would be appreciated.



[squid-users] Squid Error Then Can't Connect To Web Site

2007-09-28 Thread techguy005-ml
I have an Squid proxy configured as a reverse proxy
that serves about 10 web sites via SSL.

One of the web sites randomly becomes unavailable and
the only way to make it work again is to restart the
squid process.

The following error message in the cache.log is
repeated lots of times when the problem occurs: 

2007/09/28 10:06:09| fwdNegotiateSSL: Error
negotiating SSL connection on FD 148:
error::lib(0):func(0):reason(0) (5/-1/104)
2007/09/28 10:06:09| TCP connection to 1.2.3.4/443
failed

I check the backend web server directly and it is
alive so technically the cache_peer is available, but
squid doesn't seem to think so.

The other odd item is in the access.log, normally I
would expect to see a "TCP_MISS/200" and the matching
cache_peer name at the end of the request line :

1190984166.734 32 11.12.33.44 TCP_MISS/200 280 GET
https://www.domain.com/c3.gif -
FIRST_UP_PARENT/website_ssl -

But when the problem happens, I get "TCP_MISS/503" and
NO matching cache_peer:

1190983242.734 32 11.12.33.44 TCP_MISS/503 280 GET
https://www.domain.com/c3.gif - NONE

When this event is happening, all the other web sites
are just fine.  It seems to be specific to this web
site.

I restart the squid process, and the site resumes
working.

Any ideas?

Thanks.