Come impostare più Host SSL con un server singolo Apache

A+ A-

In questo articolo, vi mostreremo come impostare più certificati SSL su una CentOS con Apache utilizzando solo un singolo indirizzo IP. In generale, un amministratore del sito è limitato a usare un unico certificato SSL per socket con un IP che costerà un sacco di investimento per l'azienda. Questa restrizione può portare loro di acquistare più indirizzi IP per i siti web di HTTP per il loro dominio hosting o comprare hardware che permette loro di utilizzare più schede di rete.

Ciò è consentito da un'estensione al protocollo SSL chiamato Server Name Indication (SNI). La maggior parte dei desktop correnti e browser web per cellulari supportano SNI. Il vantaggio principale di utilizzare SNI è la capacità di garantire più siti web senza dover acquistare più indirizzi IP.

Configurazione

Assicurarsi che il modulo di sicurezza mod_ssl è installato e abilitato in modo che il web server Apache può utilizzare la libreria OpenSSL e toolkit:

 # Yum install mod_ssl OpenSSL 

Eseguire i seguenti comandi

 # Mkdir -p / etc / httpd / SSL / 
 # Mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak 
 # Cd / etc / httpd / SSL / 

Generazione di Certificate Signing SSL Richiesta di file per i tuoi domini

 # Openssl genrsa -out mydomain1.key 2048 
 # Openssl req -new -key mydomain1.key -out mydomain1.csr 
 # Openssl genrsa -out domain2.key 2048 
 # Openssl req -new -key mydomain2.key -out mydomain2.csr
Inserire i seguenti dati per i certificati:
Paese Nome (2 codice a lettere) [AU]: IN
Stato o Nome Provincia (nome e cognome) [Alcuni-Stato]: Telengana
Località Nome (ad esempio, città) []: Hyderabad
Nome organizzazione (ad esempio, società) [Internet Widgits Pty Ltd]: mydomain1.com
Nome Unità organizzativa (ad esempio, la sezione) []: mydomain.com
Nome comune (ad esempio, nome di dominio completo del server o il nome) []: mydomain1.com
Indirizzo e-mail []: sslcertificate@domain1.com 

Si raccomanda di installare i certificati SSL commerciali quando siamo Distribuzione in un ambiente di produzione. Oppure, abbiamo appena generiamo certificato SSL autofirmato che viene utilizzato per scopi di sviluppo o in scena un sito web utilizzando i seguenti comandi

 # Openssl x509 -req -days 365 -in mydomain1.csr -signkey mydomain1.key -out domain1.crt 
 # Openssl x509 -req -days 365 -in mydomain2.csr -signkey mydomain2.key -out mydomain2.crt 

Modifica del file di configurazione di Apache 'ssl.conf'

 # Vi /etc/httpd/conf.d/ssl.conf 
 LoadModule ssl_module / mod_ssl.so
ascoltare 443
NameVirtualHost *: 443
     SSLPassPhraseDialog incorporato
     SSLSessionCacheTimeout 300
     predefinito SSLMutex
     file di avvio SSLRandomSeed: / dev / urandom 256
     SSLRandomSeed collegare incorporato
     SSLCryptoDevice incorporato
     SSLStrictSNIVHostCheck off
<VirtualHost *: 443>
      DocumentRoot / var / www / html / mydomain1
      ServerName mydomain1.com
      ServerAlias ​​www.mydomain1.com
      SSLEngine su
      SSLProtocol tutto -SSLv2 
      SSLCipherSuite ALL:! ADH: EXPORT: SSLv2: RC4 + RSA: + ALTA: + MEDIO: + BASSO
      SSLCertificateFile /etc/httpd/ssl/mydomain1.cr
      SSLCertificateKeyFile /etc/httpd/ssl/mydomain1.key
      logs ErrorLog / ssl_error_log
      logs TransferLog / ssl_access_log
      LogLevel mettere in guardia
      <File ~ "\. (CGI | shtml | phtml |? Php3) $">
               SSLOptions + StdEnvVars
      </ File>
      SetEnvIf User-Agent ". * MSIE. *" \
      nokeepalive ssl-impuro spegnimento \
      downgrade-1,0 forza-risposta-1.0
      CustomLog logs / ssl_request_log \
      "% T% h% {} SSL_PROTOCOL x% {} SSL_CIPHER x \"% r \ "% b" 
</ VirtualHost>
<VirtualHost *: 443>
      DocumentRoot / var / www / html / mydomain2
      ServerName mydomain2.com
      ServerAlias ​​www.mydomain2.com
      SSLEngine su
      SSLProtocol tutto -SSLv2
      SSLCipherSuite ALL:! ADH: EXPORT: SSLv2: RC4 + RSA: + ALTA: + MEDIO: + BASSO
      SSLCertificateFile /etc/httpd/ssl/mydomain2.crt
      SSLCertificateKeyFile /etc/httpd/ssl/mydomain2.key
      logs ErrorLog / ssl_error_log
      logs TransferLog / ssl_access_log
      LogLevel mettere in guardia
      <File ~ "\. (CGI | shtml | phtml |? Php3) $">
           SSLOptions + StdEnvVars
      </ File>
      SetEnvIf User-Agent ". * MSIE. *" \
      nokeepalive ssl-impuro spegnimento \
      Downgrade-1,0 forza-risposta-1.0
      CustomLog logs / ssl_request_log \
      "% T% h% {} SSL_PROTOCOL x% {} SSL_CIPHER x \"% r \ "% b"
</ VirtualHost> 

Quando stiamo usando un certificato SSL commerciale, è probabile che, l'autorità di firma includerà un certificato CA intermedio. In tal caso, creiamo un nuovo file '/etc/httpd/ssl/ca.crt' e incollare il contenuto della sostanza intermedia CA in esso, quindi abbiamo bisogno di modificare il file di configurazione 'ssl.conf' e rimuovere la seguente riga .

 SSLCertificateChainFile /etc/httpd/ssl/ca.crt 

Quindi il server web Apache può trovare il certificato CA.

Testare la configurazione di Apache

 # /etc/init.d/httpd Configtest
sintassi OK 

Re sta rt il servizio Apache affinché le modifiche abbiano effetto

 # Service httpd restart 

Aprire https://mydomain1.com e https://mymydomain2.com nel proprio browser web preferito e verificare che SSL certificati siano installati correttamente.

Dopo questa configurazione e il riavvio di Apache, è possibile accedere al sito di http con un browser che supporta SNI. Se si dispone di configurazione correttamente, allora si sarà in grado di accedere al sito senza eventuali avvisi o problemi. È possibile aggiungere quanti siti web o certificati SSL come è necessario utilizzare il processo di cui sopra.

Ads

Condividere