Penyelesaian SSL berasaskan SNI dalam proksi terbalik Nginx
Dengan perkembangan teknologi Internet, isu keselamatan aplikasi Web telah mendapat lebih banyak perhatian. Sijil SSL, sebagai teknologi penyulitan yang menyediakan keselamatan penghantaran data, telah menjadi salah satu cara penting untuk melindungi aplikasi web. Dalam beberapa kes khas, berbilang sijil SSL perlu digunakan pada pelayan yang sama Pada masa ini, penyelesaian SSL berasaskan SNI muncul mengikut keperluan masa.
1. Apakah itu SNI (Petunjuk Nama Pelayan)
SNI ialah protokol sambungan TLS yang membolehkan pelanggan memasukkan medan lanjutan dalam mesej "Helo Pelanggan" semasa membuat sambungan SSL. , memberitahu pelayan nama hos yang ingin disambungkan oleh pelanggan. Pada satu alamat IP dan port, berbilang nama domain boleh menggunakan sijil SSL yang berbeza pada masa yang sama.
Walau bagaimanapun, SNI tidak disokong oleh semua pelayar dan pelayan. Apabila menggunakan SNI, anda mesti memastikan bahawa klien dan pelayan menyokong versi protokol SSL yang sama, dan klien mesti menyokong sambungan SNI. Penyemak imbas yang biasa digunakan pada masa ini, seperti Chrome, Firefox, IE7 dan ke atas, Opera, dsb., semuanya menyokong SNI.
2. Proksi terbalik Nginx dan SSL
Nginx ialah pelayan web berprestasi tinggi dan menyokong proksi terbalik. Proksi terbalik ialah teknologi keselamatan maklumat yang menghantar permintaan ke pelayan lain dan mengembalikan respons kepada peminta. Pelayan proksi terbalik juga membolehkan pengimbangan beban dan penyulitan SSL.
Pelayan proksi terbalik bertindak sebagai lapisan tengah untuk berkomunikasi dengan pelayan web bahagian hadapan dan bahagian belakang. Nginx menyokong dua mod perkhidmatan: http dan https. Apabila menggunakan perkhidmatan https, penyulitan dan penyahsulitan SSL diperlukan.
Sokongan SSL Nginx mempunyai dua mod: mod sijil SSL tunggal dan mod berbilang sijil berasaskan SNI. Dalam mod sijil SSL tunggal, hanya satu sijil SSL boleh digunakan, iaitu sijil SSL yang berbeza tidak boleh digunakan untuk nama domain yang berbeza. Dalam mod berbilang sijil berdasarkan SNI, penghantaran disulitkan SSL berbilang domain boleh dicapai.
3. Penyelesaian SSL berasaskan SNI
Mula-mula anda perlu memohon sijil SSL dan menjana rantaian sijil yang sepadan dan kunci peribadi. Diandaikan di sini bahawa kami ingin menggunakan dua nama domain abc.com dan xyz.com dan masing-masing menjana dua sijil.
Jana sijil:
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
Jana rantai sijil:
cat abc.com. crt domain.crt > abc.com-bundle.crt
cat xyz.com.crt domain.crt > xyz.com-bundle.crt
Dalam fail konfigurasi Nginx, anda perlu menambah konfigurasi berikut:
http {
...
# Konfigurasikan cache SSL
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# Konfigurasikan sijil SSL
pelayan {
listen 443 ssl; server_name abc.com; ssl_certificate /path/to/abc.com-bundle.crt; ssl_certificate_key /path/to/abc.com.key;
}
pelayan {
listen 443 ssl; server_name xyz.com; ssl_certificate /path/to/xyz.com-bundle.crt; ssl_certificate_key /path/to/xyz.com.key;
}
}
Nyatakan ssl_certificate dan ssl_certificate_key dalam fail konfigurasi untuk menggunakan sijil SSL yang berbeza masing-masing. Pada masa yang sama, blok pelayan perlu dikonfigurasikan untuk setiap nama domain.
Selepas memulakan semula Nginx, anda boleh mengesahkan sama ada konfigurasi itu berkuat kuasa. Masukkan abc.com dan xyz.com dalam penyemak imbas, dan penyemak imbas akan menghantar permintaan SNI semasa fasa jabat tangan TLS dan mengembalikan sijil SSL yang sepadan. Jika permintaan kembali seperti biasa, ia membuktikan bahawa penyelesaian SSL berasaskan SNI telah berkuat kuasa.
4. Ringkasan
Penyelesaian SSL berasaskan SNI boleh menggunakan berbilang sijil SSL pada pelayan yang sama, yang sesuai untuk senario yang memerlukan penggunaan penyulitan SSL berbilang domain. Walau bagaimanapun, perlu diingatkan bahawa SNI tidak disokong oleh semua pelayar dan pelayan, jadi anda perlu memastikan bahawa klien dan pelayan menyokong versi protokol SSL yang sama apabila menggunakannya, dan pelanggan mesti menyokong sambungan SNI. Semasa proses konfigurasi, anda perlu mengkonfigurasi blok pelayan untuk setiap nama domain dan menentukan sijil SSL dan kunci peribadi yang sepadan.
Atas ialah kandungan terperinci Penyelesaian SSL berasaskan SNI dalam proksi terbalik Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!