2012-06-12 16 views
5

Potrzebuję instalacji MediaWiki, aby wymagać użycia https (i odrzucić normalny http). Spędziłem 2 godziny na szukaniu. Ustawienie $wgServer nie działa, a zamknięcie portu 80 w httpd.conf również nie działa.Najprostszy sposób, aby MediaWiki wymagało HTTPS na wszystkich stronach?

Moja instalacja wiki jest uruchamiana na serwerze Apache.

+1

Telling Apache nie nasłuchuje na porcie 80 będzie działać, jeśli robisz to poprawnie. – jnylen

+0

Również, z jakiego systemu operacyjnego korzystasz? – jnylen

Odpowiedz

5

Moja odpowiedź zakłada, że ​​Apache nasłuchuje ruchu https na porcie 443. Jeśli tak nie jest, musisz to najpierw ustawić. Procedura będzie różna w zależności od używanego systemu operacyjnego.


Chcesz to zrobić w Apache. W moim systemie Ubuntu, jest to plik /etc/apache2/ports.conf który zawiera następujący wiersz:

Listen 80 

Będziesz mieć podobny plik konfiguracyjny, który zawiera tę linię. Usuń go i nie zapomnij ponownie uruchomić Apache.


Innym sposobem do osiągnięcia tego celu, co pozwala na bardziej skomplikowanych konfiguracji Apache, w którym umożliwiają dostęp HTTP do niektórych części serwisu, jest użycie .htaccess file w katalogu MediaWiki. Spróbuj tego:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
+0

Czy to zapewnia, że ​​wiki nie ustawi formularza logowania/wyszukiwania do opublikowania w http? –

6

Właśnie zrobić to na Ubuntu 14 (po raz pierwszy dzisiaj, więc nie może być lepszy sposób!), Ustawiając

$wgServer = "//myhostname.com/mediawiki"; 

To sprawia, że ​​nazwa serwera " protokół względny ", więc działa z protokołem HTTP lub HTTPS. Możesz prawdopodobnie ustawić go na https: // ... chociaż.

Następnie należy skonfigurować Apache2 przekierować cały ruch HTTP na HTTPS:

Edit domyślna konfiguracja SSL (zakładając, jesteś po prostu przy użyciu domyślnej witryny):

sudo vim /etc/apache2/sites-available/default-ssl.conf 

przeczytać coś takiego:

# Redirect HTTP to HTTPS 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName example.com 

    Redirect permanent/https://example.com/ 
</VirtualHost> 

# Normal HTTPS config for default site 
<VirtualHost *:443> 
    SSLEngine On 
    SSLCertificateFile /etc/apache2/ssl/apache.pem 
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key 

    ServerAdmin [email protected] 
    ServerName example.com 
    DocumentRoot /var/www/html/ 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

Włącz domyślną witrynę SSL, jeśli jeszcze jej nie masz (tworzy to łącze z witryn włączonych do stron dostępnych)

sudo a2ensite default-ssl 

ta zakłada, że ​​już uzyskał certyfikat SSL (I generowane autopodpisywany jeden), który został umieszczony w /etc/apache2/ssl/apache.pem i /etc/apache2/ssl/apache.key jak podano w config powyżej.

Wreszcie uzyskać apache do korzystania z nowego config:

sudo service apache2 restart 

(Albo reload może wystarczyć)

+0

Jak zmieniłaby się ta odpowiedź *** jeśli *** chcieliśmy, aby "example.com" było skierowane do 'www.example.com'; * i * następnie zrobić wszystko HTTPS? (Próbowałem skonfigurować tę samą konfigurację z podobnych pytań i odpowiedzi.) Myślałem, że to jest poprawne, ale loginy MediaWiki są zepsute (wszystko inne jest w porządku) Teraz próbuję "domyślnie włączyć HTTPS dla Mediawiki"). – jww

+0

Zastanawiam się, dlaczego ta "zależna od protokołu" składnia nie jest domyślna! dzięki za uratowanie mnie dzisiaj :) – lensovet

Powiązane problemy