SSLEngine on
SSLCertificateFile /xxx/server.pem
SSLCertificateKeyFile /xxx/server.key
# Chain for the server - not for client verification (though in this simple
# case they _happen_ to be the same!).
SSLCACertificateChainFile /xxx/root.pem
SSLVerifyClient none
SSLVerifyDepth 3
Alias /trac/ "/xxx/trac/"
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
# Insist on a valid SSL certificate, issued by
# *any* of our CA's.
SSLCACertificateFile /xxx/root.pem
SSLVerifyClient require
SSLOptions StdEnvVars ExportCertData FakeBasicAuth
# SSLRequireSSL SSLRequire %{SSL_CLIENT_S_DN_O} eq "My Org" and ....
# mod_python speeds things up considerably
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir "/var/trac"
PythonOption TracUriRoot "/trac"
# Fake up authentication so that trac thinks we're doing
# basic auth.
#
AuthType Basic
AuthName "my track"
# We're to lazy to create a 'htpasswd' file as generally
# done with FakeBasicAuth - hence we use anon to allow
# any valid cert in. Trac will do the right thing.
#
AuthBasicProvider anon
Anonymous "*"
Require valid-user
# further authorization is handled internally by trac
DAV svn
SVNParentPath /xxx/svn
SSLCACertificateFile /xxx/root.pem
SSLVerifyClient require
# SSLRequire %{SSL_CLIENT_S_DN_O} eq "My Org..."
# Pull authentication information in as to allow svn to use the CN in its logs.
#
SSLOptions StdEnvVars ExportCertData FakeBasicAuth
AuthType Basic
AuthName "my svn"
# We do not want to keep an htaccess list with the DN's - so we let anyone
# authenticated in
AuthBasicProvider anon
Anonymous "*"
Require valid-user