2

At my work I installed Mediawiki (latest version) on a Apache webserver 2.4.6 with PHP 5. Everthing works fine when I want to access the wiki pages locally and I configure a hostname in Mediawiki

$wgServer = https://en.wiki.example.com. 

Now once I clear this hostname configuration in Mediawik, then it should grab the hostname that it gets webserver. This happens but the format of the hostname is

http://en.wiki.example.com:443 

which is an incorrect URL (because of mixing HTTP with HTTPS).

I think this is an Apache problem because when I try to browse to

https://en.wiki.example.com/wiki 

it redirects to

http://en.wiki.example.com:443/wiki/index.php/Main_Page 

and I get a Bad Request error. Trailing slash behind wiki does not have any effect.

VirtualHost:

<VirtualHost *:443> ServerName https://en.wiki.example.com ServerAlias https://en.wiki.example.com en.wiki.external.com Alias /wiki /var/www/wiki-en ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log <Directory /var/www/wiki-en> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> 

SSL + Default virtualhost:

Listen 443 https NameVirtualHost *:443 ## ## SSL Global Context ## ## All SSL configuration in this context applies both to ## the main server and all SSL-enabled virtual hosts. ## SSLStrictSNIVHostCheck off # 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 exec:/usr/libexec/httpd-ssl-pass-dialog # Inter-Process Session Cache: # Configure the SSL Session Cache: First the mechanism # to use and second the expiring timeout (in seconds). SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLSessionCacheTimeout 300 # Pseudo Random Number Generator (PRNG): # Configure one or more sources to seed the PRNG of the # SSL library. The seed data should be of good random quality. # WARNING! On some platforms /dev/random blocks if not enough entropy # is available. This means you then cannot use the /dev/random device # because it would lead to very long connection times (as long as # it requires to make more entropy available). But usually those # platforms additionally provide a /dev/urandom device which doesn't # block. So, if available, use this one instead. Read the mod_ssl User # Manual for more details. SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin #SSLRandomSeed startup file:/dev/random 512 #SSLRandomSeed connect file:/dev/random 512 #SSLRandomSeed connect file:/dev/urandom 512 # # Use "SSLCryptoDevice" to enable any supported hardware # accelerators. Use "openssl engine -v" to list supported # engine names. NOTE: If you enable an accelerator and the # server does not start, consult the error logs and ensure # your accelerator is functioning properly. # SSLCryptoDevice builtin #SSLCryptoDevice ubsec ## ## SSL Virtual Host Context ## <VirtualHost _default_:443> # General setup for the virtual host, inherited from global configuration DocumentRoot "/var/www/html" # Use separate log files for the SSL virtual host; note that LogLevel # is not inherited from httpd.conf. ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on # SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: SSLProtocol all -SSLv2 # SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_ssl documentation for a complete list. SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 # 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. A new # certificate can be generated using the genkey(1) command. SSLCertificateFile /etc/certificates/certificate.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/certificates/certificateprivatekey.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. #SSLCertificateChainFile /etc/pki/tls/certs/server-chain.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) #SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt # Access Control: #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> # SSL Protocol Adjustments: BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # Per-Server Logging: CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> 

Because the stylesheet and scripts location are all resolved I see the same URL pattern (

http://en.wiki.example.com:443/wiki/load.php.... 

). Same goes for the URL variables in Mediawiki. Does anyone see what I am doing wrong here? Thanks in advance. Also I added underscores to remove link formatting in this question.

Edit: updated urls.

1
  • By formatting an URL as code it won't be transformed to an active hyperlink and please use RFC 2606 http://example.com, example.org et al. when obfuscating domain names. Commented Jan 12, 2016 at 8:39

2 Answers 2

0

At first glance: You need an SSLEngine on in each VirtualHost entry that needs to support SSL. By default the SSL/TLS Protocol Engine is disabled for both the main server and all configured virtual hosts.

Also the ServerAlias directive should be followed by a hostname not by an URL; leave out the https:// there.

1
  • Thank you! After adding SSLEngine on and copying the SSLCertificateFile and SSLCertificateKeyFile to the virtualhost it worked. Commented Jan 12, 2016 at 9:01
1

Make sure that you have the same ServerAlias and ServerName listed in the <VirtualHost *:80> section of your configuration file. Otherwise, Apache will not know what to do with the non-secure (http) requests for the wiki and will instead offer the only option that is sees, which is available on port 443.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.