| 
 
 
 | 
| Keep Server Online 
 If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation.
 
 or
 
 
   
 A donation makes a contribution towards the costs, the time and effort that's going in this site and building.
 
 Thank You! Steffen
 
 Your donations will help to keep this site alive and well, and continuing building binaries. Apache Lounge is not sponsored.
 |  | 
 | 
| | 
| | 
|  Topic: Apache virtual host works on port 80 but fails on 443 |  |  
| Author |  |  
| kdwoell 
 
 
 Joined: 24 Aug 2012
 Posts: 7
 
 
 | 
|  Posted: Sat 20 Apr '13 0:29    Post subject: Apache virtual host works on port 80 but fails on 443 |   |  
| 
 |  
| OS: RHEL 6.4 SELinux: permissive mode
 Apache: 2.2, mod_fcgid, mod_suxec, mod_ssl enabled
 Common Name: www.user.dept.university.edu
 (Note:user names, accounts, organizations etc. sanitized)
 
 Junior administrator. I have been trying to figure out why Apache will serve PHP-based web pages over port 80 but not over 443. Here is the virtual host block excerpt from httpd.conf:
 
  	  | Code: |  	  | <VirtualHost *:80> ServerName user.dept.univsersity.edu
 ServerAlias user
 DocumentRoot /home/user/public_html/subdirectory
 <IfModule mod_fcgid.c>
 SuexecUserGroup user user
 <Directory /home/user/public_html/subdirectory>
 Options +ExecCGI
 DirectoryIndex index.php index.html
 AllowOverride All
 AddHandler fcgid-script .php
 FcgiWrapper /var/www/php-fcgi-scripts/user/php-fcgi-starter .php
 Order allow,deny
 Allow from all
 </Directory>
 </IfModule>
 </VirtualHost>
 | 
 
 Here is the virtual host block excerpt from SSL.conf (I modified the RHEL6 default conf). Per the RH documentation, SSL is now handled via ssl.conf, so there are no 443 related entries for the virtual host in httpd.conf.
 
 
  	  | Code: |  	  | LoadModule ssl_module modules/mod_ssl.so SSLPassPhraseDialog  builtin
 SSLSessionCache        shmcb:/var/cache/mod_ssl/scache(512000)
 SSLSessionCacheTimeout  300
 SSLMutex default
 
 SSLRandomSeed startup file:/dev/urandom  256
 SSLRandomSeed connect builtin
 SSLCryptoDevice builtin
 NameVirtualHost *:443
 
 <VirtualHost xxx.xxx.xxx.xxx:443> #IP redacted
 ServerName www.user.dept.university.edu
 DocumentRoot /home/user/public_html/subdirectory
 <IfModule mod_fcgid.c>
 SuexecUserGroup user user
 <Directory /home/user/public_html/subdirectory>
 Options +ExecCGI
 AllowOverride All
 AddHandler fcgid-script .php
 FCGIWrapper /var/www/php-fcgi-scripts/user/php-fcgi-starter .php
 Order allow,deny
 Allow from all
 </Directory>
 </IfModule>
 
 ErrorLog logs/ssl_error_log
 TransferLog logs/ssl_access_log
 LogLevel warn
 SSLEngine on
 SSLProtocol all -SSLv2
 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
 SSLCertificateFile /etc/pki/CA/user.crt
 SSLCertificateKeyFile /etc/pki/CA/private/user.key
 <Files ~ "\.(cgi|shtml|phtml|php3?)$">
 SSLOptions +StdEnvVars
 </Files>
 <Directory "/var/www/cgi-bin">
 SSLOptions +StdEnvVars
 </Directory>
 SetEnvIf User-Agent ".*MSIE.*" \
 nokeepalive ssl-unclean-shutdown \
 downgrade-1.0 force-response-1.0
 CustomLog logs/ssl_request_log \
 "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 </VirtualHost>
 | 
 
 I'm waiting for the commercial SSL cert to arrive so in the interim I'm using a self-signed OpenSSL cert. I was careful not to forget the "www" prefaced in front off the Common Name when generating the cert, i.e. "www.user.dept.university.edu"
 
 I can access http://localhost via 80 no problems. No errors in Apache and suexec logs.
 When I access https://localhost over 443 I get this browser error:
 
 
  	  | Quote: |  	  | An error occurred during a connection to localhost. 
 SSL received a record that exceeded the maximum permissible length.
 
 (Error code: ssl_error_rx_record_too_long)
 | 
 
 Here is associated Apache error_log entry (but no suexec log errors):
 
  	  | Quote: |  	  | [Thu Apr 18 22:22:49 2013] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01 [Thu Apr 18 22:22:49 2013] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01
 | 
 
 When I access the site from the Internet on 80 it works fine. When I access the site from the Internet over port 443 (https://blah blah) I get these errors:
 
 
  	  | Quote: |  	  | Forbidden You don't have permission to access / on this server.
 Apache/2.2.15 (Red Hat) Server at www.user.dept.university.edu Port 443
 | 
 
 The Apache log error:
 
  	  | Quote: |  	  | xx.xx.xxx.xxx - - [18/Apr/2013:22:35:25 -0400] "GET / HTTP/1.1" 403 291 xx.xx.xxx.xxx - - [18/Apr/2013:22:35:25 -0400] "GET /favicon.ico HTTP/1.1" 404 298
 | 
 
 The ssl_error_log:
 
  	  | Quote: |  	  | [Thu Apr 18 22:35:25 2013] [error] [client xx.xx.xxx.xxx] Directory index forbidden by Options directive: /home/user/public_html/subdirectory/ [Thu Apr 18 22:35:25 2013] [error] [client xx.xx.xxx.xxx] File does not exist: /home/user/public_html/subdirectory/favicon.ico
 | 
 
 I suspect an issue with the virtual host block in ssl.conf. The other possibility is I improperly generated the self-signed cert using the documentation from RH
 Appreciate any insights!
 |  |  
| Back to top |  |  
| James Blond Moderator
 
  
 Joined: 19 Jan 2006
 Posts: 7442
 Location: EU, Germany, Next to Hamburg
 
 | 
|  Posted: Tue 23 Apr '13 10:58    Post subject: |   |  
| 
 |  
| I think you don't load mod_fcgid and then your <directory block isn't working 
 <IfModule mod_fcgid.c>
 |  |  
| Back to top |  |  
| kdwoell 
 
 
 Joined: 24 Aug 2012
 Posts: 7
 
 
 | 
|  Posted: Tue 23 Apr '13 15:40    Post subject: |   |  
| 
 |  
| I thought for the 3rd time to carefully compare the vhost block for 80 to the vhost entry in ssl.conf for 443. Somehow I missed this entry in the ssl.conf: 
 
  	  | Code: |  	  | DirectoryIndex index.php index.html | 
 
 For security I included this directive for the port 80 vhost block but must have dropped during all the nano editing in ssl.conf. So I can access the site now over SSL.
 However, after restart Apache still complains about:
 
 
  	  | Code: |  	  | 
 [root@hostname user]# service httpd restart
 Stopping httpd:                                            [  OK  ]
 Starting httpd: [Sun Apr 21 16:43:21 2013] [warn] NameVirtualHost *:443 has no VirtualHosts
 Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
 Some of your private key files are encrypted for security reasons.
 In order to read them you have to provide the pass phrases.
 
 Server www.user.dept.university.edu:443 (RSA)
 Enter pass phrase:
 
 OK: Pass Phrase Dialog successful.
 [  OK  ]
 | 
 
 [/code]
 |  |  
| Back to top |  |  
| James Blond Moderator
 
  
 Joined: 19 Jan 2006
 Posts: 7442
 Location: EU, Germany, Next to Hamburg
 
 | 
|  Posted: Tue 23 Apr '13 16:52    Post subject: |   |  
| 
 |  
| The issue is that the key is still encrypted with a password. So you have to decryt it with something like 
 
  	  | Code: |  	  | openssl rsa -in your.key -out your.key | 
 |  |  
| Back to top |  |  
| kdwoell 
 
 
 Joined: 24 Aug 2012
 Posts: 7
 
 
 | 
|  Posted: Tue 23 Apr '13 18:47    Post subject: |   |  
| 
 |  
| I think you missed the point of my question. 
 
  	  | Quote: |  	  | Starting httpd: [Sun Apr 21 16:43:21 2013] [warn] NameVirtualHost *:443 has no VirtualHosts | 
 
 Why does Apache complain there is no VirtualHosts when clearly ssl.conf has a vhost block?
 
 Regarding, the key- for security I want a passphrase? Correct? [/code]
 |  |  
| Back to top |  |  
 
 | 
 |  | 
 |  |