Rumah > hujung hadapan web > tutorial js > Cara Menggunakan SSL/TLS dengan Node.js

Cara Menggunakan SSL/TLS dengan Node.js

Jennifer Aniston
Lepaskan: 2025-02-10 13:06:35
asal
597 orang telah melayarinya

Artikel ini menerangkan bagaimana untuk menjamin pelayan Express.js anda dengan HTTPS menggunakan sijil Let's Encrypt, dan meningkatkan keselamatan dengan HSTS dan parameter Diffie-Hellman yang lebih kuat.

How to Use SSL/TLS with Node.js Dalam landskap digital hari ini, HTTPS tidak boleh dirunding. Ia dijangkakan oleh pengguna, faktor ranking Google, dan pelayar secara aktif menyerlahkan tapak yang kurang. Tutorial ini menunjukkan menambah sijil Let's Enrypt ke aplikasi Express.js anda. Walau bagaimanapun, keselamatan pihak klien adalah sama pentingnya; Kami akan meneroka menguatkuasakan sambungan yang disulitkan ke pelayan luaran, walaupun tidak diaktifkan secara lalai.

(Nota: Untuk persediaan SSL proksi terbalik nginx dengan aplikasi nod, lihat hujung cepat kami, "Mengkonfigurasi nginx dan ssl dengan node.js".)

Takeaways utama:

HTTPS adalah penting untuk keselamatan laman web pada tahun 2020 dan seterusnya, menawarkan pengesahan, privasi, kerahsiaan, dan integriti data. Ini faktor kedudukan Google dan jangkaan pengguna.

    node.js lalai ke http, tetapi modul
  • membolehkan komunikasi pelanggan yang selamat. Ini memerlukan sijil SSL, mudah diperoleh dan bebas dari Let's Encrypt.
  • Certbot memudahkan Let's Encrypt Penjanaan dan Pengurusan Sijil, Mengesahkan Keaslian Pemegang Sijil untuk Sambungan Pelanggan Pelanggan yang selamat. https
  • HTTP Security Pengangkutan Ketat (HSTS), dilaksanakan melalui modul nod topi keledar, memaksa semua lalu lintas melalui HTTPS, mengurangkan serangan penurunan protokol dan merampas cookie.
  • Keselamatan SSL/TLS diperkuat dengan menghasilkan kunci Diffie-Hellman yang lebih lama (2048-bit) untuk pertukaran kunci pelayan yang dipertingkatkan.
  • https di mana -mana:

Standard HTTP/2 (RFC 7540, Mei 2015) Mandat penyulitan, menjadikan HTTPS lalai. Ini meningkatkan penggunaan HTTPS. Dari perspektif penyemak imbas, mencapai tahap IP melibatkan lapisan ini:

Pelayar Pelanggan

    http
  1. ssl/tls
  2. tcp
  3. ip
  4. HTTPS adalah HTTP melalui SSL/TLS, mewarisi peraturan HTTP semasa menambah: Pengesahan melalui kunci dan sijil; menyulitkan, komunikasi asimetrik untuk privasi dan kerahsiaan; dan integriti data melalui transmisi TAMPER-bukti. Bertentangan dengan persepsi masa lalu, overhead SSL/TLS adalah minimum, walaupun untuk operasi berskala besar seperti Google (di bawah 1% beban CPU dan overhead rangkaian 2%). Seperti yang dinyatakan oleh Ilya Grigorik, satu -satunya kesesakan prestasi tidak mencukupi penggunaan HTTPS.
  5. TLS 1.3 adalah versi terkini, menggantikan SSL 3.0 (walaupun tidak beroperasi). Ia menggunakan tiga saluran yang disulitkan: rantaian sijil, kriptografi utama awam untuk pertukaran utama, dan kriptografi simetri untuk pemindahan data. SHA2 atau algoritma hashing yang lebih kuat disyorkan (SHA1 usang). Peningkatan data melanggar permintaan pengguna bahan api untuk keselamatan dalam talian yang dipertingkatkan. HTTPS EFF Everywhere Extension Extension menguatkuasakan penyulitan di mana mungkin, termasuk permintaan menulis semula untuk tapak dengan sokongan HTTPS separa atau menyekat HTTP sepenuhnya.

    How to Use SSL/TLS with Node.js

    Komunikasi Asas:

    Pengesahan sijil melibatkan mengesahkan tandatangan, tarikh tamat tempoh, rantaian akar yang dipercayai, dan status pembatalan. Sijil Pihak Berkuasa Sijil yang Dipercayai (CAS); Kompromi CA membatalkan semua sijilnya. Urutan Https Handshake: Inisialisasi Pelanggan, Sijil dan Mesej Pertukaran Utama dari Pelayan, Pertukaran Kunci Pelanggan dan Spesifikasi Cipher, Pengesahan Pelayan, dan Penutupan Handshake.

    How to Use SSL/TLS with Node.js urutan ini bebas daripada http; HTTPS hanya mengubah pengendalian soket. Permintaan HTTP kekal, tetapi soket menyulitkan kandungan (tajuk dan badan).

    pelaksanaan https di express.js:

    node.js menggunakan modul

    untuk komunikasi selamat. Penggunaannya mencerminkan modul

    : https http

    Ganti
    const https = require("https"),
      fs = require("fs");
    
    const options = {
      key: fs.readFileSync("/srv/www/keys/my-site-key.pem"),
      cert: fs.readFileSync("/srv/www/keys/chain.pem")
    };
    
    const app = express();
    
    app.use((req, res) => {
      res.writeHead(200);
      res.end("hello world\n");
    });
    
    app.listen(8000);
    
    https.createServer(options, app).listen(8080);
    Salin selepas log masuk
    dan

    dengan laluan sijil yang dihasilkan (dijelaskan di bawah). /srv/www/keys/my-site-key.pem /srv/www/keys/chain.pem

    Penjanaan sijil dengan Certbot:

    Certbot mengautomasikan Let's Encrypt Penjanaan dan Pengurusan Sijil. Pasang certBot (arahan berbeza dengan OS; contoh ini menggunakan Ubuntu):

    Plugin
    sudo apt-get update
    sudo apt-get install software-properties-common
    sudo add-apt-repository universe
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    Salin selepas log masuk
    memudahkan penjanaan sijil dan pengesahan. Jalankan:

    certonly --webroot

    Sediakan alamat e -mel anda. Output menunjukkan laluan ke fail kunci dan sijil peribadi anda; Gunakan ini dalam objek
    certbot certonly --webroot -w /var/www/example/ -d www.example.com -d example.com
    Salin selepas log masuk
    di atas.

    options

    Peningkatan Keselamatan:

      HTTP Security Pengangkutan Ketat (HSTS):
    • Gunakan Middleware Helmet:
    const helmet = require("helmet");
    // ...
    app.use(helmet());
    Salin selepas log masuk
      Parameter Diffie-Hellman yang lebih kuat:
    • Menjana kunci DH 2048-bit menggunakan OpenSSL:
    tambah
    openssl dhparam -out /var/www/example/sslcert/dh-strong.pem 2048
    Salin selepas log masuk
    ke objek

    : dhparam options

    const options = {
      // ...
      dhparam: fs.readFileSync("/var/www/example/sslcert/dh-strong.pem")
    };
    Salin selepas log masuk
    Kesimpulan:

    Seksyen Soalan Lazim telah ditinggalkan untuk keringkasan, tetapi maklumat yang disediakan merangkumi aspek teras teks asal.

Atas ialah kandungan terperinci Cara Menggunakan SSL/TLS dengan Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan