Rumah >Operasi dan penyelenggaraan >Nginx >Bagaimana nginx mengkonfigurasi HSTS
Netcraft baru-baru ini menerbitkan penyelidikan mereka tentang menguji tapak web SSL/TLS dan menyatakan bahawa hanya 5% pengguna melaksanakan HSTS Keselamatan Pengangkutan Ketat HTTP dengan betul.
Apakah itu HSTS
HTTPS (SSL dan TLS) memastikan keselamatan komunikasi antara pengguna dan tapak web, menyukarkan penyerang memintas, mengubah suai dan menyamar. Apabila pengguna memasukkan nama domain atau pautan http:// secara manual, permintaan pertama ke tapak web tidak disulitkan, menggunakan http biasa. Tapak web yang paling selamat dengan serta-merta menghantar semula ubah hala yang menghalakan pengguna ke sambungan https Walau bagaimanapun, penyerang lelaki di tengah mungkin boleh memintas permintaan http awal dan dengan itu mengawal respons pengguna yang seterusnya.
Sudah tentu HSTS wujud untuk menyelesaikan masalah keselamatan yang berpotensi ini. Walaupun pengguna memasukkan nama domain atau sambungan http, penyemak imbas akan menaik taraf kepada sambungan https dengan ketat.
Cara HSTS berfungsi
Dasar HSTS dikeluarkan dalam pengepala respons HTTP yang dihantar daripada tapak HTTPS selamat.
Strict-Transport-Security: max-age=31536000
Apabila penyemak imbas melihat pengepala ini daripada tapak HTTPS, ia tahu bahawa nama domain hanya boleh diakses melalui HTTPS (SSL atau TLS). Dan cache maklumat ini ke 31536000, iaitu 1 tahun.
Parameter includeSubDomains pilihan memberitahu penyemak imbas bahawa dasar tersebut digunakan untuk semua subdomain di bawah domain semasa.
Strict-Transport-Security: max-age=31536000; includeSubDomains
nginx configure HSTS
Tetapkan pengepala respons HSTS pada fail konfigurasi nginx. Parameter
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
sentiasa memastikan semua respons menetapkan pengepala ini, termasuk respons ralat yang dijana secara dalaman. versi nginx lebih awal daripada 1.7.5 tidak menyokong parameter sentiasa dan respons ralat yang dijana secara dalaman tidak menetapkan maklumat pengepala ini.
peraturan pewarisan arahan add_header:
blok konfigurasi nginx mewarisi blok enkapsulasi di mana arahan add_header terletak, jadi anda hanya perlu meletakkan arahan add_header dalam blok pelayan peringkat atas. Terdapat juga pengecualian penting. Jika blok mengandungi arahan add_header itu sendiri, ia tidak akan mewarisi pengepala daripada blok yang disertakan dan anda perlu mentakrifkan semula semua arahan add_header.
server { listen 443 ssl; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # This 'location' block inherits the STS header location / { root /usr/share/nginx/html; } # Because this 'location' block contains another 'add_header' directive, # we must redeclare the STS header location /servlet { add_header X-Served-By "My Servlet Handler"; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; proxy_pass http://localhost:8080; } }
Uji Keselamatan Pengangkutan Ketat HTTP:
Setelah pengguna mencadangkan dasar HSTS, tempoh maklumat cachenya ditentukan mengikut umur maksimum. Pada masa ini, penyemak imbas akan menafikan akses kepada perkhidmatan web melalui HTTP yang tidak disulitkan dan enggan memberikan pengecualian untuk ralat sijil (jika tapak web tersebut sebelum ini menyerahkan sijil yang sah dan dipercayai). Jika parameter includeSubDomanis ditentukan, sekatan ini juga dikenakan pada semua subdomain di bawah domain semasa.
Apabila anda menguji HSTS, tetapkan masa umur maksimum lebih pendek.
Sama ada setiap respons HTTPS perlu mempunyai pengepala STS:
Matlamat kami adalah untuk memberikan dasar HSTS secepat mungkin apabila pengguna memulakan respons HTTPS. Jika mereka menerima dasar HSTS semasa sesi, mereka masih terdedah kepada serangan rampasan HTTP. Penyemak imbas hanya perlu melihat pengepala STS sekali, jadi tidak semestinya perlu menambahkannya pada setiap blok lokasi dan setiap respons. Walau bagaimanapun, hanya menambahkannya ke halaman utama atau halaman log masuk mungkin tidak mencukupi, jika anda hanya menambahkannya pada respons cache, pelanggan mungkin tidak melihatnya. Pastikan anda meliputi seberapa banyak URL anda yang munasabah, memberi perhatian khusus kepada kandungan dinamik.
HTTP dan HTTPS secara selari
Kadangkala tapak web perlu dijalankan di bawah HTTP dan HTTPS pada masa yang sama
server { listen 80; listen 443 ssl; ... }
Kadangkala, permintaan http perlu dilencongkan ke https
server { listen 80 default_server; listen [::]:80 default_server; server_name _; # Discourage deep links by using a permanent redirect to home page of HTTPS site return 301 https://$host; # Alternatively, redirect all HTTP links to the matching HTTPS page # return 301 https://$host$request_uri; } server { listen 443 ssl; server_name www.ttlsa.com; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; }
Tingkatkan HSTS
Lindungi klien daripada pemintasan HTTP dari masa ia melihat pengepala STS hingga umur maksimum yang diisytiharkan. Walau bagaimanapun, HSTS bukanlah penyelesaian yang sempurna untuk rampasan sesi HTTP. Pengguna masih terdedah jika mereka mengakses tapak web yang dilindungi HSTS melalui HTTP:
Tidak pernah melawati tapak web sebelum ini
Dilawati baru-baru ini Memasang sistem pengendaliannya
Baru-baru ini memasang semula penyemak imbasnya
Bertukar kepada penyemak imbas baharu
Tukar kepada peranti baharu seperti telefon bimbit
Padam cache penyemak imbas
Belum melawat tapak baru-baru ini dan umur maksimum tamat tempoh
Untuk menyelesaikan masalah ini, Google berkeras untuk mengekalkan nama domain tapak "senarai pramuat HSTS" dan nama subdomain dan menyerahkannya melalui https://hstspreload.appspot.com/ nama domainnya. Senarai nama domain ini diedarkan dan dikod keras ke dalam pelayar web utama. Pelanggan yang mengakses nama domain dalam senarai ini akan menggunakan HTTPS secara aktif dan menafikan akses kepada tapak menggunakan HTTP.
Setelah pengepala STS ditetapkan atau domain anda diserahkan kepada senarai pramuat HSTS, adalah mustahil untuk mengalih keluarnya. Ini adalah keputusan sehala untuk menjadikan nama domain anda tersedia melalui HTTPS.
Atas ialah kandungan terperinci Bagaimana nginx mengkonfigurasi HSTS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!