Forum OpenACS Development: Re: Proposed corrections to OpenACS default nsopenssl configuration
Posted by
Richard Hamilton
on 10/28/10 05:19 PM
} else { #-------------------------------------------------------------------------------------------------- # OpenSSL for Aolserver 4 #-------------------------------------------------------------------------------------------------- # # Configuration for nsopenssl v3.x modified by Richard Hamilton on 10-26-2010 # (email: mailto:richard.hamilton@webteamworks.com), based on example configuration from README in # source code directory of nsopenssl. # # Note 1: nsopenssl.so v3.x supports multiple contexts for ssl connections in Aolserver v4.5 # so that you can configure multiple ssl listeners for each virtual server. For example, # for each virtual server, you might wish to have different listeners for users and # admins, and a third context for outgoing ssl connections (the 'client' context). # # However, in OpenACS the security::locations proc has the nsopenssl context hard-coded # as 'users'. Therefore, for Openacs up to the current version (5.6.0 as at 102610) # you must only configure one context and it must be called 'users'. For this reason # the example naming convention (of the form 'vs1_user_ctx') has not been used since # it would be meaningless until OpenACS instances read their SSL context using ns_config. # This forum post refers: http://www.openacs.org/forums/message-view?message_id=2983032 # # Note 2: If you do configure more than one listener, each MUST have its own dedicated SSL key. # This makes sense since otherwise there would be no point in opening up another port. # # Note 3: Code has been added that checks for the presence of the required key and certfiles for # the OpenACS default context 'users'. The nsopenssl module will not load unless # 'users_cert.pem', 'users_key.pem', and './ca/users_cacert.pem' exist. # # The default location assumed for key and certificate files is : # /usr/local/aolserver/servers/${server}/modules/nsopenssl # # #-------------------------------------------------------------------------------------------------- set httpsport_users $httpsport ;# Multiple contexts cannot share ports. ns_section "ns/server/${server}/module/nsopenssl" ns_param RandomFile /proc/kcore ns_param SeedBytes 1024 # ServerPort is required by procs in acs-tcl/tcl/security-procs.tcl to find the https port. ns_param ServerPort $httpsport_users # setting maxinput higher than practical may leave the server vulnerable to resource DoS attacks # see http://www.panoptic.com/wiki/aolserver/166 # must set maxinput for nsopenssl as well as nssock ns_param maxinput [expr {$max_file_upload_mb * 1024 * 1024}] ;# Maximum File Size for uploads in bytes ns_section "ns/server/${server}/module/nsopenssl/sslcontexts" ns_param users "SSL context used for regular user access" # ns_param admins "SSL context used for administrator access - not supported by OpenACS" # ns_param client "SSL context used for outgoing script socket connections - not supported by OpenACS" ns_section "ns/server/${server}/module/nsopenssl/defaults" ns_param server users ;# Hard-coded into openACS security::locations proc # ns_param client client ns_section "ns/server/${server}/module/nsopenssl/sslcontext/users" ns_param Role server ns_param ModuleDir ${homedir}/servers/${server}/modules/nsopenssl ns_param CertFile users_cert.pem ns_param KeyFile users_key.pem ns_param CADir ca ;# Directory containing certificate of signing authority ns_param CAFile ca/users_cacert.pem # for Protocols "ALL" = "SSLv2, SSLv3, TLSv1" ns_param Protocols "SSLv3, TLSv1" ns_param CipherSuite "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP" ns_param PeerVerify false ns_param PeerVerifyDepth 3 ns_param Trace false # ns_section "ns/server/${server}/module/nsopenssl/sslcontext/admins" # ns_param Role server # ns_param ModuleDir /path/to/dir # ns_param CertFile admins_cert.pem # ns_param KeyFile admins_key.pem # ns_param CADir ca # ns_param CAFile ca/admins_cacert.pem # for Protocols "ALL" = "SSLv2, SSLv3, TLSv1" # ns_param Protocols "SSLv3, TLSv1" # ns_param CipherSuite "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP" # ns_param PeerVerify false # ns_param PeerVerifyDepth 3 # ns_param Trace false # ns_section "ns/server/${server}/module/nsopenssl/sslcontext/client" # ns_param Role client # ns_param ModuleDir /path/to/dir # ns_param CertFile client_cert.pem # ns_param KeyFile client_key.pem # ns_param CADir ca # ns_param CAFile ca/client_cacert.pem # for Protocols "ALL" = "SSLv2, SSLv3, TLSv1" # ns_param Protocols "SSLv3, TLSv1" # ns_param CipherSuite "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP" # ns_param PeerVerify false # ns_param PeerVerifyDepth 3 # ns_param Trace false # SSL drivers. It is possible to configure multiple driver connections within a single # virtual server, with each allocated to its own named SSL context.However this feature is # not supported by OpenACS. Each driver defines a port to listen on and an explicitly named # SSL context to associate with it. ns_section "ns/server/${server}/module/nsopenssl/ssldrivers" ns_param users "Driver for regular user access" # ns_param admins "Driver for administrator access" # ns_param client "Driver for outgoing ssl connections" ns_section "ns/server/${server}/module/nsopenssl/ssldriver/users" ns_param sslcontext users ns_param port $httpsport_users ns_param hostname $hostname ns_param address $address # following added per # http://www.mail-archive.com/aolserver@listserv.aol.com/msg07365.html # Maximum File Size for uploads: ns_param maxinput [expr {$max_file_upload_mb * 1024 * 1024}] ;# in bytes # Maximum request time ns_param recvwait [expr {$max_file_upload_min * 60}] ;# in minutes # ns_section "ns/server/${server}/module/nsopenssl/ssldriver/admins" # ns_param sslcontext admins # ns_param port $httpsport_admins ;# Not set up in OpenACS config.tcl # ns_param hostname $hostname # ns_param address $address # ns_section "ns/server/${server}/module/nsopenssl/ssldriver/client" # ns_param sslcontext client # ns_param port $httpsport_client ;# Not set up in OpenACS config.tcl # ns_param hostname $hostname # ns_param address $address }