Rumah > Operasi dan penyelenggaraan > Nginx > Bagaimana nginx mengkonfigurasi HSTS

Bagaimana nginx mengkonfigurasi HSTS

王林
Lepaskan: 2023-05-14 16:37:18
ke hadapan
2048 orang telah melayarinya

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.

Bagaimana nginx mengkonfigurasi HSTS

Cara HSTS berfungsi

Dasar HSTS dikeluarkan dalam pengepala respons HTTP yang dihantar daripada tapak HTTPS selamat.

Strict-Transport-Security: max-age=31536000
Salin selepas log masuk

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
Salin selepas log masuk

nginx configure HSTS

Tetapkan pengepala respons HSTS pada fail konfigurasi nginx. Parameter

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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;
    ...
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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:

  1. Tidak pernah melawati tapak web sebelum ini

  2. Dilawati baru-baru ini Memasang sistem pengendaliannya

  3. Baru-baru ini memasang semula penyemak imbasnya

  4. Bertukar kepada penyemak imbas baharu

  5. Tukar kepada peranti baharu seperti telefon bimbit

  6. Padam cache penyemak imbas

  7. 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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan