Autor Zpráva
Enko
Profil
Ahoj,
v konfiguraci apache nejsem zrovna moc zběhlý a po dvou hodinách zkoušení podle různých manuálů zapnutí SSL se obracím sem pro radu. Mám na Ubuntu 14.04 webserver s Apache 2.2 kde mi běží spoustu webů. Weby jsou umístěné ve /var/www/html/nejakyweb/.
Pokud chci například nějaký web přidat, tak v /etc/apache2/conf.d/vhosts.conf přidám následující:
<VirtualHost 192.168.1.11>
ServerName nejakyweb
DocumentRoot /var/www/html/nejakyweb
</VirtualHost>

S takovýmto nastavením jsem se nikdy předtím nesetkal a proto ani nevím, jak v tomto povolit SSL. Když jsem postupoval podle tohoto návodu, zasekl jsem se na bodu 3, protože nevím, kam vložit konfiguraci pro SSL.
Když si pustím "netstat -tap | grep https", tak mi to vrátí "tcp 0 0 *:https *:* LISTEN 21439/apache2".
jany
Profil
predpokladam, ze certifikaty mas vygenerovane napr. podla toho
openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/nejakyweb.pem -keyout /etc/apache2/ssl/nejakyweb.key
Povol moduly (je mozne, ze uz ich budes mat povolene)
a2enmod rewrite && a2enmod headers && a2enmod ssl
Do tohto suboru
nano /etc/apache2/conf-available/nejakyweb-ssl.conf
daj tento zapis
<VirtualHost *:80>
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
<VirtualHost *:443>
    ServerName www.nejakyweb.tld
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/nejakyweb.pem
    SSLCertificateKeyFile /etc/apache2//ssl/nejakyweb.key
    DocumentRoot /var/www/html/nejakyweb

    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
    </IfModule>
</VirtualHost>
nasledne enabluj a restartuj
    a2enconf nejakyweb-ssl.conf
    service apache2 restart
Ak este chces aby to smerovalo s http na https tak mozes to upravit v konfiguracii apache2, alebo pre ten ktory virtul si vytvoris v koreni .htaccess
nano /var/www/html/nejakyweb/.htaccess
a v .htaccess bude
    RewriteEngine On
     RewriteCond %{HTTPS} off
     RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Davex
Profil
jany:
1) Ten konfigurační soubor pro web bych raději dal do /etc/apache2/sites-available/nejakyweb-ssl.conf a konfiguraci zapnul příkazem a2ensite nejakyweb-ssl.conf.

2) Doporučuji ještě vypnout SSL 2, SSL 3 a slabé šifry. Konfigurace se dá jednoduše vygenerovat: Mozilla SSL Configuration Generator. A konfigurační volby, které se tam vyskytují za koncem sekce <VirtualHost>, je potom potřeba opravit či doplnit do souboru /etc/apache2/mods-available/ssl.conf.

3) Případně doporučuji tento návod pro získání SSL certifikátu, kde je popsáno vyrobení správných souborů s certifikáty.
Keeehi
Profil
Taktéž mohu doporučit Davexem zmíněný návod. Je sice trochu nepřehledný v místě kde se popisuje spojování certifikátů, neboť alespoň mě dorazili jinak pojmenované, ale s trochou rozumu se ti dá zvládnout.

Ještě by možná stálo zauvažovat nad letsencrypt.org Jejich klient by měl umět právě v rámci instalace certifikátu provést i konfiguraci apache. Já mám od nich jen certifikát, konfiguraci si dělám ručně takže nemohu přímo posoudit výsledek.
Enko
Profil
Ahoj,
děkuji za odpovědi, ale stále se mi to nedaří zprovoznit.
Jen doplním, že se jedná o web na intranetu, tzn není platný FQDN. Takže Lets Encrypt ani jiný certifikát vydaný certifikační autoritou není možné použít. Lets Encrypt jsem zkoušel jako první, ale nejde kvůli výše zmiňovanému. Tak jsem si vytvořil svůj certifikát, který pak nainstaluji na klientské stanice přes SCCM.

jany:
predpokladam, ze certifikaty mas vygenerovane napr. podla toho
Ano

Povol moduly (je mozne, ze uz ich budes mat povolene)
Moduly povoleny

Do tohto suboru
nano /etc/apache2/conf-available/nejakyweb-ssl.conf
Složku conf-available vůbec v adresáři apache2 nemám. Mám tam jenom adresáře conf.d, mods-available, mods-enabled, sites-available, sites-enabled, ssl a soubory apache2.conf, envvars, httpd.conf, magic, ports.conf.

daj tento zapis
Tento zápis jsem zkus dát, jak píše Davex do " /etc/apache2/sites-available/mujweb-ssl.conf"„a konfiguraci zapnul příkazem a2ensite mujweb-ssl.conf.“. Poté restartuji apache2 a stránka se mi na HTTPS nenačte. Načte se mi jen na HTTP. Jen doplním, že veškeré konfigurace k webům na tomto serveru mám uložené pouze zde: /etc/apache2/conf.d/vhosts.conf.
Obsah tohoto souboru vypadá následovně:

NameVirtualHost 192.168.5.11

<VirtualHost 192.168.5.11>
ServerName db.nejakyserver.ad
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost 192.168.5.11>
ServerName db
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost 192.168.5.11>
ServerName mujweb
DocumentRoot /var/www/html/mujweb
</VirtualHost>

<VirtualHost 192.168.5.11>
ServerName mujweb2
DocumentRoot /var/www/html/mujweb2
</VirtualHost>

#atd...

Předpokládám, že tuto konfiguraci pro SSL bych měl vložit někam sem, ale nepodařilo se mi to udělat tak, aby to fungovalo. Složky /etc/apache2/sites-available/ a /etc/apache2/sites-enabled/ obsahují pouze výchozí šablony.
Davex
Profil
Enko:
Složku conf-available vůbec v adresáři apache2 nemám.
To je trochu divné, protože součástí distribuce Ubuntu 14.04 je Apache verze 2.4.7 a ty v úvodu píšeš o verzi 2.2. Tam by teoreticky mohla být jiná syntaxe příkazů a2ensite - například mám tušení, že někde vadilo uvádění přípony konfiguračního souboru v příkazech a2enmod, a2ensite apod.

Je v adresáři /etc/apache2/sites-enabled/ odkaz na soubor /etc/apache2/sites-available/mujweb-ssl.conf? Není port 443 blokovaný ve firewallu?

Jen doplním, že veškeré konfigurace k webům na tomto serveru mám uložené pouze zde: /etc/apache2/conf.d/vhosts.conf.
Tento přístup ke konfiguraci je také možný a neměl by ničemu vadit. Kdysi byla celá konfigurace Apache jenom v jednom souboru, ale bylo to nepraktické, když v ní bylo potřeba něco změnit.
Enko
Profil
Děkuju všem za pomoc. Už jsem to zprovoznil. Musel jsem prostudovat dokumentaci Apache, bylo tam ne úplně běžné nastavení pro virtual hosty a samozřejmě jsem se špatně podíval a mám na tom stroji Ubuntu 12. Moc děkuji všem za pomoc.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: