Come configurare SSL in apache?


10

Ho installato apache in RHEL 6. Tutto funziona bene. Cosa devono essere fatte tutte le modifiche e le configurazioni per usare https: // localhost: 443 / .

Se cambio "Ascolta 80" su 443, viene generato un errore di connessione SSL

"Errore 107 (net :: ERR_SSL_PROTOCOL_ERROR): errore protocollo SSL."

Risposte:


13

Se si utilizza apache2, è necessario effettuare le seguenti operazioni:

Passaggio 1: utilizzare OpenSSL per produrre le chiavi utilizzate per proteggere il sito. Queste chiavi vengono utilizzate per crittografare e decrittografare il traffico verso il tuo sito sicuro.

$ openssl genrsa -out mydomain.key 1024

Questo comando creerà una chiave privata a 1024 bit e la inserirà nel file mydomain.key.

Passaggio 2: genera il tuo certificato.

$ openssl req -new -key mydomain.key -x509 -out mydomain.crt

Passaggio 3: conservare la chiave privata nella directory /etc/apache2/ssl.key/e il certificato nella directory /etc/apache2/ssl.crt/.

Nota: la ssl.keydirectory deve essere leggibile solo da root.

Passaggio 4: ora è necessario modificare il httpd.conffile in /etc/apache2.

Ora questo file dovrebbe includere contenuti come questo:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>


<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>


<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>

Le prime tre righe non sono necessarie. 1. NameVirtualHostè obsoleto e verrà rimosso nelle versioni future di Apache. Attualmente è già vietato. 2. Listen 443può causare problemi se apache è già configurato per l'ascolto sulla porta 443 che su molte distribuzioni di Linux è già il caso. Aggiungi solo se sei sicuro che questa linea non sia configurata altrove.
lanoxx,

3

Non modificare Listen 80a 443in /etc/httpd/conf/httpd.conf. SSL è configurato in /etc/httpd/conf.d/ssl.conf. Su RHEL 6, SSL è abilitato e in ascolto per impostazione predefinita con un certificato autofirmato.

Puoi accedere al sito predefinito utilizzando SSL semplicemente navigando verso https://localhost(non è necessario aggiungere la porta alla fine dell'URL).

Se si desidera inoltrare tutte le richieste HTTP a HTTPS (che è ciò che credo si stia cercando di ottenere), è possibile aggiungere un reindirizzamento permanente o utilizzare il modulo Apache mod_rewrite.

Il modo più semplice e sicuro è impostare un reindirizzamento permanente. Abilita host virtuali nominati e aggiungi una Redirectdirettiva a VirtualHost in /etc/httpd/conf/httpd.conf.

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName localhost
   Redirect permanent / https://localhost
</VirtualHost>

Utilizzando mod_rewrite, si crea anche un host virtuale con nome. Questo non è il metodo consigliato, ma funzionerà.

NameVirtualHost *:80
<VirtualHost *:80>
   # Enable the Rewrite engine
   RewriteEngine On
   # Make sure the connection is not already HTTPS
   RewriteCond %{HTTPS} !=on
   # This rewrites the URL and forwards to https
   RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

Se vuoi disattivare SSL, commenta queste righe /etc/httpd/conf.d/ssl.confe riavvia Apache.

LoadModule ssl_module modules/mod_ssl.so
Listen 443

In realtà, se aggiungi il pacchetto mod_ssl per RHEL6, crea un /etc/httpd/conf.d/ssl.conf, che carica il modulo e configura <VirtualHost _default_:443>, con tutti i parametri necessari, ciascuno con commenti. Il mod_sslpacchetto non viene installato automaticamente se è stato installato il httpdpacchetto.
jsbillings,

1
Vorrei aggiungere solo una cosa alla tua riscrittura: usa [R=301,L]invece che semplicemente [R,L], in questo modo la riscrittura sta usando l' opzione permanente dei codici di stato HTTP 3xx .
dcestari,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.