Maison  >  Article  >  Opération et maintenance  >  Solution SSL basée sur SNI dans le proxy inverse Nginx

Solution SSL basée sur SNI dans le proxy inverse Nginx

王林
王林original
2023-06-10 21:57:152350parcourir

Solution SSL basée sur SNI dans le proxy inverse Nginx

Avec le développement de la technologie Internet, les problèmes de sécurité des applications Web reçoivent de plus en plus d'attention. Le certificat SSL, en tant que technologie de cryptage assurant la sécurité de la transmission des données, est devenu l'un des moyens importants pour protéger les applications Web. Dans certains cas particuliers, plusieurs certificats SSL doivent être déployés sur le même serveur. À l'heure actuelle, des solutions SSL basées sur SNI apparaissent selon les besoins.

1. Qu'est-ce que SNI (Server Name Indication) ?

SNI est un protocole d'extension TLS qui permet au client d'inclure des champs étendus dans le message "Client Hello" lors de l'établissement d'une connexion SSL pour indiquer au serveur que le client souhaite connecter. Sur une seule adresse IP et un seul port, plusieurs noms de domaine peuvent utiliser différents certificats SSL en même temps.

Cependant, SNI n'est pas pris en charge par tous les navigateurs et serveurs. Lorsque vous utilisez SNI, vous devez vous assurer que le client et le serveur prennent en charge la même version du protocole SSL et que le client doit prendre en charge les extensions SNI. Les navigateurs actuellement couramment utilisés, tels que Chrome, Firefox, IE7 et versions ultérieures, Opera, etc., prennent tous en charge SNI.

2. Proxy inverse Nginx et SSL

Nginx est un serveur Web hautes performances et prend en charge le proxy inverse. Un proxy inverse est une technologie de sécurité de l'information qui envoie des requêtes à un autre serveur et renvoie la réponse au demandeur. Les serveurs proxy inverses permettent également l'équilibrage de charge et le cryptage SSL.

Le serveur proxy inverse agit comme une couche intermédiaire pour communiquer avec le serveur Web front-end et le back-end. Nginx prend en charge deux modes de service : http et https. Lors de l'utilisation des services https, le cryptage et le déchiffrement SSL sont requis.

La prise en charge SSL de Nginx propose deux modes : le mode de certificat SSL unique et le mode de certificats multiples basé sur SNI. En mode certificat SSL unique, un seul certificat SSL peut être utilisé, c'est-à-dire que différents certificats SSL ne peuvent pas être utilisés pour différents noms de domaine. Dans le mode multi-certificats basé sur SNI, une transmission cryptée SSL multi-domaine peut être réalisée.

3. Solution SSL basée sur SNI

  1. Générer un certificat SSL

Vous devez d'abord demander un certificat SSL et générer la chaîne de certificat et la clé privée correspondantes. On suppose ici que nous souhaitons utiliser deux noms de domaine abc.com et xyz.com et générer respectivement deux certificats.

Générer un certificat :

openssl req -newkey rsa:2048 -nodes -keyout abc.com.key -out abc.com.csr
openssl x509 -req -days 365 -in abc.com.csr -signkey abc.com .key -out abc.com.crt

openssl req -newkey rsa:2048 -nodes -keyout xyz.com.key -out xyz.com.csr
openssl x509 -req -days 365 -in xyz.com.csr - signkey xyz.com.key -out xyz.com.crt

Générer une chaîne de certificats :

cat abc.com.crt domain.crt > ;
ssl_session_timeout 10m;

    # Configurer le certificat SSL
  1. serveur {
  2. listen 443 ssl;
    server_name abc.com;
    ssl_certificate /path/to/abc.com-bundle.crt;
    ssl_certificate_key /path/to/abc.com.key;
}

server {

listen 443 ssl;
server_name xyz.com;
ssl_certificate /path/to/xyz.com-bundle.crt;
ssl_certificate_key /path/to/xyz.com.key;

}
}

Spécifiez ssl_certificate et ssl_certificate_key dans le fichier de configuration pour utiliser respectivement différents certificats SSL. Parallèlement, un bloc serveur doit être configuré pour chaque nom de domaine.


Vérifier la configuration

Après avoir redémarré Nginx, vous pouvez vérifier si la configuration prend effet. Entrez abc.com et xyz.com dans le navigateur, et le navigateur enverra une requête SNI pendant la phase de négociation TLS et renverra le certificat SSL correspondant. Si la requête revient normalement, cela prouve que la solution SSL basée sur SNI a pris effet.

4. Résumé


La solution SSL basée sur SNI peut déployer plusieurs certificats SSL sur le même serveur, ce qui convient aux scénarios nécessitant l'utilisation du cryptage SSL multi-domaine. Cependant, il convient de noter que SNI n'est pas pris en charge par tous les navigateurs et serveurs, vous devez donc vous assurer que le client et le serveur prennent en charge la même version du protocole SSL lors de son utilisation, et que le client doit prendre en charge l'extension SNI. Pendant le processus de configuration, vous devez configurer un bloc de serveur pour chaque nom de domaine et spécifier le certificat SSL et la clé privée correspondants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn