-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Larry,

BTW, you're doing great. Thanks for battling-through. See below.

On 6/16/15 2:29 PM, Cohen, Laurence wrote:
> ******* nss.conf.testweb01 *******
> 
> Listen 443
> 
> AddType application/x-x509-ca-cert .crt AddType
> application/x-pkcs7-crl    .crl
> 
> NSSPassPhraseDialog file:/etc/httpd/.password.conf 
> #NSSPassPhraseDialog  builtin
> 
> NSSPassPhraseHelper /usr/sbin/nss_pcache
> 
> NSSSessionCacheSize 10000 NSSSessionCacheTimeout 100 
> NSSSession3CacheTimeout 86400
> 
> 
> NSSRandomSeed startup builtin
> 
> 
> <VirtualHost _default_:443>
> 
> DocumentRoot "/var/www/docroot" NSSProxyCheckPeerCN Off NSSEngine
> on NSSProxyEngine on NSSEnforceValidCerts off NSSRenegotiation on 
> NSSRequireSafeNegotiation on
> 
> NSSCipherSuite 
> +rsa_3des_sha,-rsa_des_sha,-rsa_rc4_40_md5,-rsa_rc2_40_md5,-rsa_null_m
d5,-rsa_null_sha,+fips_3des_sha,-fips_des_sha,-fortezza,-fortezza_rc4_12
8_sha,-fortezza_null,-rsa_des_56_sha,-rsa_rc4_56_sha,+rsa_aes_128_sha,+r
sa_aes_256_sha
>
>  NSSProxyCipherSuite 
> +rsa_3des_sha,-rsa_des_sha,-rsa_rc4_40_md5,-rsa_rc2_40_md5,-rsa_null_m
d5,-rsa_null_sha,+fips_3des_sha,-fips_des_sha,-fortezza,-fortezza_rc4_12
8_sha,-fortezza_null,-rsa_des_56_sha,-rsa_rc4_56_sha,+rsa_aes_128_sha,+r
sa_aes_256_sha
>
>  NSSProtocol TLSv1 NSSNickname Server-Cert NSSCertificateDatabase
> /etc/httpd/alias NSSFIPS on NSSOCSP off
> 
> ProxyPreserveHost On
> 
> 
> <Location /dse-help> #SSLRenegBufferSize 10486000 NSSVerifyClient
> none NSSOptions +StdEnvVars ProxyPass
> https://testapp01:8007/dse-help 
> <https://testapp01.novetta.com:8007/dse-help> ProxyPassReverse
> https://testapp01:8007/dse-help 
> <https://testapp01.novetta.com:8007/dse-help> </Location>

Okay, good: here's the real meat of the file (repeated over and over,
of course). The "Location" matches an incoming URL and then the stuff
between the <Location> and </Location> will be effective for requests
whose URLs match that pattern.

So, for a request for /dse-help, the request is forwarded-over to
Tomcat on port 8007 using the https:// protocol. The ProxyPassReverse
will re-write response headers like Location and Set-Cookie to make
sure they point to the reverse proxy (httpd) server instead of Tomcat
(testapp01:8007).

This is all you need to get things working. Since the above is from
the :443 VirtualHost, you just need to make sure that similar
configuration exists in the :80 VirtualHost configuration files.

> # initialize the SSL headers to a blank value to avoid http header
> forgeries RequestHeader set SSL_CLIENT_CERT "" RequestHeader set
> SSL_CIPHER "" RequestHeader set SSL_SESSION_ID "" RequestHeader set
> SSL_CIPHER_USEKEYSIZE ""

I'm not entirely sure:

a) How mod_nss expects to send the original HTTPS information to Tomcat
b) Whether or not Tomcat is configured to detect this information and
make sure it's available to the container/web application
c) In what order the "StdEnvVars" and "RequestHeader set" operations
take place.

I would want to make sure you've got all that right so tht the
following takes place:

1. Request comes in
2. Request has HTTPS-related headers stripped
3. Request has HTTPS-related headers added during proxying

You might consider using "RequestHeader unset" instead of
"RequestHeader set ''". There's no reason to send-over a blank string.

> RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s" 
> RequestHeader set SSL_CIPHER "%{SSL_CIPHER}s" RequestHeader set
> SSL_SESSION_ID "%{SSL_SESSION_ID}s" RequestHeader set
> SSL_CIPHER_USEKEYSIZE "%{SSL_CIPHER_USEKEYSIZE}s"

If you are going to be "setting" each of these with new values, you
may as well not bother to "unset" (or "set" them to "") beforehand. I
think it's just extra processing that wastes time and doesn't
accomplish. Of course, you'll want to verify that I'm correct in that
it doesn't matter if you remove the "unsets" before the "sets", but I
think you'll be okay.
> ******* rewwrite.conf.testweb01 *******
> 
> # # rewrite.conf: # These rules handle all http:// protocol
> requests. # RewriteEngine on
> 
> # General: # Disable HTTP TRACE on all requests. RewriteCond
> %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F]
> 
> # General: # Redirect requests to https, EXCEPT for the favicon,
> User-Defined URLs, System-Defined URLs, DDMS, AOP. # https rewrite
> rules are found in ssl.conf. RewriteCond %{SERVER_PROTOCOL}
> !https RewriteCond %{REQUEST_URI}      !^/favicon.ico RewriteCond
> %{REQUEST_URI}      !^/mdr/ns RewriteCond %{REQUEST_URI}
> !^/mdr/irs RewriteCond %{REQUEST_URI}      !^/mdr/documents 
> RewriteCond %{REQUEST_URI}      !^/dse/uriService RewriteCond
> %{REQUEST_URI}      !^/dse/ns RewriteCond %{REQUEST_URI}
> !^/dse/irs RewriteCond %{REQUEST_URI}      !^/dse/documents 
> RewriteCond %{REQUEST_URI}      !^/dse/downloads
> 
> # query string containing wsdl (e.g. <somepath>/publish?wsdl), let
> it fetch as http RewriteCond %{QUERY_STRING}     !wsdl
> 
> RewriteRule ^/(.*)$             https://testweb01/$1 
> <https://testweb01.novetta.com/$1> [last,redirect]

Oh, man. This is awful.

I'll bet the SSL-based configuration was re-written using
ProxyPass/ProxyPassReverse and then the mod_rewrite (that's what all
this stuff is) stuff was simply removed (or no longer referenced from
httpd.conf, probably).

But it looks like the RewriteCond/RewriteRule stuff was actually
enabling your proxying (in the very ugliest way possible, I might
add), so you lost your :80 proxying.

For the most part, you should be able to copy the <Location> sections
from your nss.conf into whatever file you would like to include to set
up your :80 VirtualHost, and that should be about it. (Of course,
you'll want to remove the NSSOptions and NSSVerifyClient sections as
well.)

If you'd prefer to have a slightly cleaner configuration, you can
change this:

> <Location /dse-help> #SSLRenegBufferSize 10486000 NSSVerifyClient
> none NSSOptions +StdEnvVars ProxyPass
> https://testapp01:8007/dse-help 
> <https://testapp01.novetta.com:8007/dse-help> ProxyPassReverse
> https://testapp01:8007/dse-help 
> <https://testapp01.novetta.com:8007/dse-help> </Location>

to this:

  ProxyPass        /dse-help https://testapp01:8007/dse-help
  ProxyPassReverse /dse-help https://testapp01:8007/dse-help

, since you don't need additional configuration.

I would be willing to bet that if you set NSSOptions and
NSSVerifyClient at the top-level, you wouldn't have to specify it
separately in all of those <Location> sections, and your configuration
would get even simpler, but I'm not aware of all of the intricacies of
your environment, so I wouldn't recommend you make that change without
someone watching who knows this configuration very well.

Hope that helps,
- -chris
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org

iQIcBAEBCAAGBQJVgHVRAAoJEBzwKT+lPKRYiGgP+gK5y4zid+1X4v3rKN2Se/Tv
seEbzhqW8IDigzysqUQAsqklmrNngyb4wbB6BltcPTVzwGiP3wHf1jKRfpXIdat8
KoXppXFgfL1FMP5HwfNBZhu8qQbv4bnbVPYRdvy5LsYtHIlZjD/BNMQRZKmiHQYk
cWYLMmqDs/oginqA1E9fDIrx1XZxSJBFL646S7dT3IQOUWxhgOtN3b5WDyZcY6bk
ZQMkgtALX1lyKDqWB8zVeqppQ9zljuF3dJno5q8E5bERYD98gTTEsnItuI7OeFSI
jkOtXG7IqmlOTd379q+A024oGubnwNmSeX2xMXwok03pd78okiCfTa46IyI407Se
eTyzProuCgks8EsDf5oUJflP9c8CVubyCkaI2cKR5APEiQNEqROdKy9IAlS1V2R0
Zo3mPQ5cq9S84DXPW5DtGdFTNvq7izZaOhRSg+oeUejpelWreVqS3BzkxGf2Kn9i
uutCCFF7k/OkrzCnUN8ASEEdXOibMJhhGlTjYaChZHmQLFAvocYNcUhUThtahCM+
LTGIm6thalOKzWEjv3L8OI0NV3F4pD6x6O1/TAMZU3Jq8zJjdiIBNEnOdeAWs/2M
uzFZA7f4BbpgiDMyM6+GnmHKeXIZwRFE6f94ucEAnwRSGjd/H03URHrig4cUvIK0
2IRJtDdgFtrOCIoX8OSD
=EQaf
-----END PGP SIGNATURE-----

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

Reply via email to