https://github.com/genome/genome
Raw File
Tip revision: 76ca381fce687554f38ee1dfb92771908f5b6557 authored by Nathaniel Nutter on 02 July 2014, 02:17:26 UTC
improvements to PSGI apps
Tip revision: 76ca381
imp.gsc.wustl.edu-ssl.conf
<VirtualHost *:80>
    ServerName imp.gsc.wustl.edu
    ServerAlias imp 

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/server-status
    RewriteRule /(.*) https://imp.gsc.wustl.edu/$1 [R=permanent,L]

</VirtualHost>

<IfModule mod_ssl.c>

##
## SSL Virtual Host Context
##

<VirtualHost *:443>
    ServerAdmin webmaster@gsc.wustl.edu
    ServerName imp.gsc.wustl.edu
    ServerAlias imp

    # SuexecUserGroup: Sets the domain to run as a specific user when
    # executing processes.
    # SuexecUserGroup USER GROUP

    Include /opt/shibboleth-sp/etc/shibboleth/apache22.config

    <Location />
       Allow from all
       AuthType shibboleth
       ShibRequireSession On
       Require valid-user
    </Location>

    <Location />
       Order allow,deny
       Allow from 10.0.24.51
       Allow from 10.0.28.107
       AuthType shibboleth
       ShibRequireSession On
       Require valid-user
       Satisfy Any
    </Location>

    <Location /static>
        Allow from all
        Satisfy Any
    </Location>

    # DocumentRoot: The directory out of which you will serve your
    # documents. By default, all requests are taken from this directory, but
    # symbolic links and aliases may be used to point to other locations.
    DocumentRoot /var/www/domains/gsc.wustl.edu/imp/htdocs

    Alias /resources /gsc/scripts/opt/genome/current/web/lib/perl/Genome/View/Resource/Html/old

    Alias /var/ /gsc/var/
    <Directory /gsc/var>
        Options Indexes MultiViews FollowSymLinks
        Order deny,allow
        Deny from all
        Allow from 10
    </Directory>

    # if not specified, the global error log is used
    # If logging to standard access and error logs comment the cronlog line and uncomment below
    #ErrorLog /var/www/domains/gsc.wustl.edu/imp/logs/error_log
    #CustomLog /var/www/domains/gsc.wustl.edu/imp/logs/access_log combined

    # Default logging is now Cronolog, please make sure cronolog is installed before restarting Apache.
    ErrorLog "|/usr/bin/cronolog -l /var/www/domains/gsc.wustl.edu/imp/logs/error_log /var/www/domains/gsc.wustl.edu/imp/logs/%Y/%Y-%m-error_log"
    CustomLog "|/usr/bin/cronolog -l /var/www/domains/gsc.wustl.edu/imp/logs/access_log /var/www/domains/gsc.wustl.edu/imp/logs/%Y/%Y-%m-access_log" combined

    # Do not lose time with IP address lookups
    HostnameLookups Off

    # Needed for named virtual hosts
    UseCanonicalName Off

    # Configures the footer on server-generated documents
    ServerSignature Off

    ScriptAlias /cgi-bin "/var/www/domains/gsc.wustl.edu/imp/cgi-bin"
#    ScriptAlias /view/ "/gsc/scripts/lib/perl/Genome/Model/Command/Services/WebApp/Main.psgi/view/"
#    ScriptAlias /search "/var/www/domains/gsc.wustl.edu/imp/cgi-bin/search/index.cgi"
#    ScriptAlias /res/ "/gsc/scripts/lib/perl/Genome/Model/Command/Services/WebApp/Main.psgi/res/"

#    Alias /res "/gsc/scripts/opt/genome-webapp/lib/perl/Genome/View/Resource/Html/"
#    Alias /view/genome/resource.html "/gsc/scripts/opt/genome-webapp/lib/perl/Genome/View/Resource/Html/"
    Alias /res "/gsc/scripts/opt/genome/current/web/lib/perl/Genome/View/Resource/Html/"
    Alias /view/genome/resource.html "/gsc/scripts/opt/genome/current/web/lib/perl/Genome/View/Resource/Html/"

    FastCgiExternalServer /tmp/genome.fcgi -host apipe.gsc.wustl.edu:3060 -idle-timeout 600
#    Alias /view /tmp/genome.fcgi/view
#    Alias /viewajax /tmp/genome.fcgi/viewajax

    ## to disable view memcache, comment out these 3 lines and uncomment the above two
    Alias /cachetrigger /tmp/genome.fcgi/cachetrigger
    Alias /viewajax /tmp/genome.fcgi/cachefill
    Alias /view /tmp/genome.fcgi/cache

    RewriteEngine On
    RewriteRule ^/search/$ /search [PT]
    Alias /search /tmp/genome.fcgi/view/genome/search/status.html

    RewriteCond %{HTTP_USER_AGENT} ^curl.*
    RewriteRule ^/cachetrigger.*$ - [F]

#    FastCgiExternalServer /tmp/myapp.fcgi -host localhost:3010 -idle-timeout 3600
#    Alias / /tmp/myapp.fcgi/
    FastCgiExternalServer /tmp/myapp.fcgi -host lims-fcgi.gsc.wustl.edu:3010 -idle-timeout 3600
    Alias / /tmp/myapp.fcgi/

    <Directory "/var/www/domains/gsc.wustl.edu/imp/cgi-bin">
        AllowOverride None
        Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /var/www/domains/gsc.wustl.edu/imp/htdocs>
        Options -Indexes ExecCGI FollowSymLinks
        AllowOverride All
    </Directory>

    #   SSL Engine Switch:
    #   Enable/Disable SSL for this virtual host.
    SSLEngine on

    #   SSL Cipher Suite:
    #   List the ciphers that the client is permitted to negotiate.
    #   See the mod_ssl documentation for a complete list.
    #   to display accepted from a shell use: openssl ciphers -v 'HIGH:+MEDIUM'
    #SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCipherSuite HIGH:+MEDIUM

    #   Server Certificate:
    #   Point SSLCertificateFile at a PEM encoded certificate.  If
    #   the certificate is encrypted, then you will be prompted for a
    #   pass phrase.  Note that a kill -HUP will prompt again.  Keep
    #   in mind that if you have both an RSA and a DSA certificate you
    #   can configure both in parallel (to also allow the use of DSA
    #   ciphers, etc.)
    #SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
    #SSLCertificateFile /etc/httpd/conf/ssl.crt/server-dsa.crt
    SSLCertificateFile /var/www/domains/gsc.wustl.edu/imp/ssl/imp.gsc.wustl.edu.crt

    #   Server Private Key:
    #   If the key is not combined with the certificate, use this
    #   directive to point at the key file.  Keep in mind that if
    #   you've both a RSA and a DSA private key you can configure
    #   both in parallel (to also allow the use of DSA ciphers, etc.)
    #SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
    #SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server-dsa.key
    SSLCertificateKeyFile /var/www/domains/gsc.wustl.edu/imp/ssl/imp.gsc.wustl.edu.key

    #   Server Certificate Chain:
    #   Point SSLCertificateChainFile at a file containing the
    #   concatenation of PEM encoded CA certificates which form the
    #   certificate chain for the server certificate. Alternatively
    #   the referenced file can be the same as SSLCertificateFile
    #   when the CA certificates are directly appended to the server
    #   certificate for convinience.
    #SSLCertificateFile /etc/httpd/conf/ssl.crt/ca.crt

    #   Certificate Authority (CA):
    #   Set the CA certificate verification path where to find CA
    #   certificates for client authentication or alternatively one
    #   huge file containing all of them (file must be PEM encoded)
    #   Note: Inside SSLCACertificatePath you need hash symlinks
    #         to point to the certificate files. Use the provided
    #         Makefile to update the hash symlinks after changes.
    #SSLCACertificatePath /etc/httpd/conf/ssl.crt
    #SSLCACertificateFile /etc/httpd/conf/ssl.crt/ca-bundle.crt

    #   Certificate Revocation Lists (CRL):
    #   Set the CA revocation path where to find CA CRLs for client
    #   authentication or alternatively one huge file containing all
    #   of them (file must be PEM encoded)
    #   Note: Inside SSLCARevocationPath you need hash symlinks
    #         to point to the certificate files. Use the provided
    #         Makefile to update the hash symlinks after changes.
    #SSLCARevocationPath /etc/httpd/conf/ssl.crl
    #SSLCARevocationFile /etc/httpd/conf/ssl.crl/ca-bundle.crl

    #   Client Authentication (Type):
    #   Client certificate verification type and depth.  Types are
    #   none, optional, require and optional_no_ca.  Depth is a
    #   number which specifies how deeply to verify the certificate
    #   issuer chain before deciding the certificate is not valid.
    #SSLVerifyClient require
    #SSLVerifyDepth  10

    #   Access Control:
    #   With SSLRequire you can do per-directory access control based
    #   on arbitrary complex boolean expressions containing server
    #   variable checks and other lookup directives.  The syntax is a
    #   mixture between C and Perl.  See the mod_ssl documentation
    #   for more details.
    #<Location />
    #SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
    #            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
    #            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
    #            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
    #            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       ) \
    #           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
    #</Location>

    #   SSL Engine Options:
    #   Set various options for the SSL engine.
    #   o FakeBasicAuth:
    #     Translate the client X.509 into a Basic Authorisation.  This means that
    #     the standard Auth/DBMAuth methods can be used for access control.  The
    #     user name is the `one line' version of the client's X.509 certificate.
    #     Note that no password is obtained from the user. Every entry in the user
    #     file needs this password: `xxj31ZMTZzkVA'.
    #   o ExportCertData:
    #     This exports two additional environment variables: SSL_CLIENT_CERT and
    #     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
    #     server (always existing) and the client (only existing when client
    #     authentication is used). This can be used to import the certificates
    #     into CGI scripts.
    #   o StdEnvVars:
    #     This exports the standard SSL/TLS related `SSL_*' environment variables.
    #     Per default this exportation is switched off for performance reasons,
    #     because the extraction step is an expensive operation and is usually
    #     useless for serving static content. So one usually enables the
    #     exportation for CGI and SSI requests only.
    #   o CompatEnvVars:
    #     This exports obsolete environment variables for backward compatibility
    #     to Apache-SSL 1.x, mod_ssl 2.0.x, Sioux 1.0 and Stronghold 2.x. Use this
    #     to provide compatibility to existing CGI scripts.
    #   o StrictRequire:
    #     This denies access when "SSLRequireSSL" or "SSLRequire" applied even
    #     under a "Satisfy any" situation, i.e. when it applies access is denied
    #     and no other module can change it.
    #   o OptRenegotiate:
    #     This enables optimized SSL connection renegotiation handling when SSL
    #     directives are used in per-directory context.
    #SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire
    #<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    #    SSLOptions +StdEnvVars
    #</Files>
    #<Directory "/srv/www/cgi-bin">
    #    SSLOptions +StdEnvVars
    #</Directory>

    #   SSL Protocol Adjustments:
    #   The safe and default but still SSL/TLS standard compliant shutdown
    #   approach is that mod_ssl sends the close notify alert but doesn't wait for
    #   the close notify alert from client. When you need a different shutdown
    #   approach you can use one of the following variables:
    #   o ssl-unclean-shutdown:
    #     This forces an unclean shutdown when the connection is closed, i.e. no
    #     SSL close notify alert is send or allowed to received.  This violates
    #     the SSL/TLS standard but is needed for some brain-dead browsers. Use
    #     this when you receive I/O errors because of the standard approach where
    #     mod_ssl sends the close notify alert.
    #   o ssl-accurate-shutdown:
    #     This forces an accurate shutdown when the connection is closed, i.e. a
    #     SSL close notify alert is send and mod_ssl waits for the close notify
    #     alert of the client. This is 100% SSL/TLS standard compliant, but in
    #     practice often causes hanging connections with brain-dead browsers. Use
    #     this only for browsers where you know that their SSL implementation
    #     works correctly.
    #   Notice: Most problems of broken clients are also related to the HTTP
    #   keep-alive facility, so you usually additionally want to disable
    #   keep-alive for those clients, too. Use variable "nokeepalive" for this.
    #   Similarly, one has to force some clients to use HTTP/1.0 to workaround
    #   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
    #   "force-response-1.0" for this.
    SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

    #   Per-Server Logging:
    #   The home of a custom SSL log file. Use this when you want a
    #   compact non-error SSL logfile on a virtual host basis.
    CustomLog /var/www/domains/gsc.wustl.edu/imp/logs/ssl_request_log   ssl_combined

</VirtualHost>

</IfModule>

back to top