SSL Server setup
Hello,(forgive the monster post)
I finished installing an Apache 2.x server with SSL on a windows box. I have a few virtual hosts set up (ssl and non-ssl) on the server. Regular port 80 requests work fine as well as cgi, shtml, etc. but not my secure port 443 connections.
Geting a bit stuck with some of the configurations though...
It appears my ssl keeps on shutting down when i start the server since i keep seeing the following when i start the server.
Code:
[Mon May 03 15:44:27 2004] [notice] Parent: Created child process 12776 [Mon May 03 15:44:27 2004] [warn] Init: Session Cache is not configured [hint: SSLSessionCache] [Mon May 03 15:44:27 2004] [notice] Child 11720: Released the start mutex [Mon May 03 15:44:28 2004] [notice] Child 12776: Child process is running [Mon May 03 15:44:28 2004] [notice] Child 12776: Acquired the start mutex. [Mon May 03 15:44:28 2004] [notice] Child 12776: Starting 250 worker threads. [Mon May 03 15:44:28 2004] [notice] Child 11720: Waiting for 250 worker threads to exit. [Mon May 03 15:44:28 2004] [notice] Child 11720: All worker threads have exited. [Mon May 03 15:44:28 2004] [notice] Child 11720: Child process is exiting
so then i tested the Server manually using the following from the command line:
Code:
openssl s_client -connect secure.domain1.com:443 -state -debug
Code:
Loading 'screen' into random state - done connect: Bad file descriptor connect:errno=10061
some sample config info (i use external files for the virual hosts):
virtual host file:
Code:
<VirtualHost *:80> ServerAdmin webmaster@domain1.com ServerName domain1.com ServerAlias www.domain1.com DocumentRoot C:/www/domain1.com/docs TransferLog C:/www/domain1.com/logs/access.log ErrorLog C:/www/domain1.com/logs/error.log ScriptAlias /cgi-bin/ C:/www/domain1.com/docs/cgi-bin/ # ErrorDocument 500 "/cgi-bin/errors/error500.cgi" # ErrorDocument 404 "/cgi-bin/errors/error404.cgi" # ErrorDocument 401 "/cgi-bin/errors/error401.cgi" # ErrorDocument 403 "/cgi-bin/errors/error403.cgi" </VirtualHost>
Code:
<VirtualHost *:443> SSLEngine on ServerName secure.domain1.com ServerAlias ssl.domain1.com ServerAdmin webmaster@domain1.com DocumentRoot C:/www/domain1.com/docs TransferLog C:/www/domain1.com/logs/ssl-access.log ErrorLog C:/www/domain1.com/logs/ssl-error.log CustomLog C:/www/domain1.com/logs/ssl-request.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" SSLCACertificateFile C:/www/domain1.com/ssl/secure.domain1.com.cert SSLCertificateFile C:/www/domain1.com/ssl/secure.domain1.com.crt SSLCertificateKeyFile C:/www/domain1.com/ssl/secure.domain1.com.key SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "C:/www/domain1.com/docs/cgi-bin"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 </VirtualHost>
Code:
# Note: Virtual host SSL config information is stored in the appropriate virtual host files. SSLRandomSeed startup builtin SSLRandomSeed connect builtin #SSLRandomSeed startup file:/dev/random 512 #SSLRandomSeed startup file:/dev/urandom 512 #SSLRandomSeed connect file:/dev/random 512 #SSLRandomSeed connect file:/dev/urandom 512 <IfDefine SSL> # # When we also provide SSL we have to listen to the # standard HTTP port (see above) and to the HTTPS port # # Note: Configurations that use IPv6 but not IPv4-mapped addresses need two # Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443" # Listen *:443 #Listen [::]:443 #Listen 0.0.0.0:443 ## ## SSL Global Context ## ## All SSL configuration in this context applies both to ## the main server and all SSL-enabled virtual hosts. ## # # Some MIME-types for downloading Certificates and CRLs # AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl # Pass Phrase Dialog: # Configure the pass phrase gathering process. # The filtering dialog program (`builtin' is a internal # terminal dialog) has to provide the pass phrase on stdout. SSLPassPhraseDialog builtin # Inter-Process Session Cache: # Configure the SSL Session Cache: First the mechanism # to use and second the expiring timeout (in seconds). #SSLSessionCache none #SSLSessionCache shmht:logs/ssl_scache(512000) #SSLSessionCache shmcb:logs/ssl_scache(512000) SSLSessionCache dbm:logs/ssl_scache SSLSessionCacheTimeout 300 # Semaphore: # Configure the path to the mutual exclusion semaphore the # SSL engine uses internally for inter-process synchronization. SSLMutex file:logs/ssl_mutex #added SSLLog logs/SSL.log SSLLogLevel info SSLVerifyClient 1 SSLVerifyDepth 10 SSLCacheServerPath logs/ssl_cache SSLCacheServerPort 1234 </IfDefine>
Code:
LoadModule ssl_module modules/mod_ssl.so <IfDefine SSL> AddModule mod_ssl.c </IfDefine> . . . <IfDefine SSL> # General ssl config goes here; Specific config found in each virtual host Include conf/ssl.conf </IfDefine> NameVirtualHost *:80 Include conf/vhosts/*.conf <IfDefine SSL> NameVirtualHost *:443 Include conf/vhosts/*.sslconf <Directory "C:/www/*/ssl"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> </IfDefine>
Any suggestions would be appreciated.