Kemampuan penegakan versi TLS sekarang tersedia per pengikatan sertifikat pada Windows Server 2019

Posting ini ditulis oleh

Andrew Marshall, Manajer Program Keamanan Utama, Keamanan dan Kepercayaan Pelanggan

Gabriel Montenegro, Manajer Program Utama, Jaringan Inti

Niranjan Inamdar, Insinyur Perangkat Lunak Senior, Jaringan Inti

Michael Brown, Insinyur Perangkat Lunak Senior, Layanan Informasi Internet

Ivan Pashov, Pemimpin Rekayasa Perangkat Lunak Utama, Jaringan Inti

Agustus 2019

Ketika teknisi di seluruh dunia bekerja untuk menghilangkan dependensi mereka sendiri pada TLS 1.0, mereka mengalami tantangan kompleks untuk menyeimbangkan kebutuhan keamanan mereka sendiri dengan kesiapan migrasi pelanggan mereka. Hingga saat ini kami telah membantu pelanggan mengatasi masalah ini dengan menambahkan dukungan TLS 1.2 ke sistem operasi yang lebih lama, dengan mengirimkan format pengelogan baru di IIS untuk mendeteksi penggunaan TLS yang lemah oleh klien, serta memberikan panduan teknis terbaru untuk menghilangkan dependensi TLS 1.0.

Sekarang Microsoft dengan senang hati mengumumkan fitur baru yang kuat di Windows untuk membuat transisi Anda ke dunia TLS 1.2+ lebih mudah. Dimulai dengan KB4490481, Windows Server 2019 sekarang memungkinkan Anda memblokir versi TLS yang lemah agar tidak digunakan dengan sertifikat individual yang Anda tentukan. Kami menyebut fitur ini "Nonaktifkan TLS Warisan" dan secara efektif memberlakukan versi TLS dan lantai cipher suite pada sertifikat apa pun yang Anda pilih.

Nonaktifkan TLS Warisan juga memungkinkan layanan online untuk menawarkan dua pengelompokan titik akhir yang berbeda pada perangkat keras yang sama: satu yang hanya memungkinkan lalu lintas TLS 1.2+, dan yang lain yang mengakomodasi lalu lintas TLS 1.0 warisan. Perubahan diimplementasikan dalam HTTP.sys, dan bersama dengan penerbitan sertifikat tambahan, memungkinkan lalu lintas dirutekan ke titik akhir baru dengan versi TLS yang sesuai. Sebelum perubahan ini, menyebarkan kemampuan tersebut akan memerlukan investasi perangkat keras tambahan karena pengaturan tersebut hanya dapat dikonfigurasi di seluruh sistem melalui registri.

Detail skenario fitur

Skenario penyebaran umum menampilkan satu set perangkat keras di pusat data dengan pelanggan kebutuhan campuran: beberapa memerlukan TLS 1.2 sebagai minimum yang diberlakukan saat ini dan yang lain tidak selesai menghapus dependensi TLS 1.0. Gambar 1 menggambarkan pemilihan versi TLS dan pengikatan sertifikat sebagai tindakan yang berbeda. Ini adalah fungsionalitas default:

Pilihan Versi TLS default

Gambar 1: Pilihan Versi TLS Default dan Fungsionalitas Pengikatan Sertifikat

  • https://secure.contoso.com mengarahkan pelanggan Anda ke titik akhir layanan yang hanya mendukung TLS 1.2 ke atas.

  • https://legacy.contoso.com mengarahkan pelanggan dengan kebutuhan TLS 1.0 warisan (seperti yang masih bermigrasi ke TLS 1.2) ke titik akhir yang mendukung TLS 1.0 untuk waktu yang terbatas. Hal ini memungkinkan pelanggan untuk menyelesaikan pengujian kesiapan untuk TLS 1.2 tanpa gangguan layanan dan tanpa memblokir pelanggan lain yang siap untuk TLS 1.2.

Secara tradisional, Anda memerlukan dua host yang terpisah secara fisik untuk menangani semua lalu lintas dan menyediakan penerapan versi TLS, karena melayani permintaan TLS dengan versi protokol minimum memerlukan penonaktifan protokol yang lebih lemah melalui pengaturan registri di seluruh sistem. Kami telah membuat fungsionalitas ini tersedia lebih tinggi ke tumpukan, di mana sesi TLS terikat ke sertifikat, sehingga versi TLS minimum tertentu dapat ditetapkan seperti yang dijelaskan pada Gambar 2 di bawah ini.

Memberlakukan versi TLS minimum untuk sertifikat yang dipilih

Gambar 2: Nonaktifkan fitur TLS Warisan yang memberlakukan versi TLS minimum untuk sertifikat yang dipilih, Secure.contoso.com.

Panduan penyebaran fitur

Fitur Nonaktifkan TLS Warisan dapat disebarkan melalui UI Server Layanan Informasi Internet (IIS), melalui perintah PowerShell atau API HTTP.sys C++.

Opsi #1: Konfigurasi UI IIS (Tersedia di Windows 10 versi 2004 dan Windows Server versi 2004 dan yang lebih baru)

Buat pengikatan situs untuk Sertifikat SSL "secure.contoso.com" seperti yang ditunjukkan di bawah ini, lalu centang "Nonaktifkan TLS Warisan" dan klik OK.

IIS UI

Opsi #2: PowerShell (Tersedia di Windows 10 versi 2004 dan Windows Server versi 2004 dan yang lebih baru)

Di PowerShell Anda dapat mereferensikan bendera SSL seperti ini:

[Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS

Lebih mudah untuk membuat variabel bernama yang lebih pendek untuk mereka:

$Sni = [Microsoft.Web.Administration.SslFlags]::Sni
    
$Sni\_CCS = [Microsoft.Web.Administration.SslFlags]::Sni + [Microsoft.Web.Administration.SslFlags]::CentralCertStore
    
$CCS = [Microsoft.Web.Administration.SslFlags]::CentralCertStore
    
$DisableLegacyTLS = [Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS
    
 $storeLocation = "Cert:\\LocalMachine\\My"

Contoh pembuatan situs yang mengikat ke situs baru dan menonaktifkan TLS warisan:

$BindingInformation = "\*:443:"

$siteName = "contoso"

$Thumbprint = $certificate.ThumbPrint

New-IISSite dengan nilai properti Sslflag DisableLegacyTLS:

New-IISSite $siteName "$env:systemdrive\\inetpub\\wwwroot" "\*:443:secure.contoso.com" https $certificate.Thumbprint $DisableLegacyTLS $storeLocation -passthru

Contoh menambahkan pengikatan situs ke situs yang ada dan menonaktifkan TLS warisan:

New-IISSiteBinding -Name "Default Web Site" -BindingInformation $BindingInformation -CertificateThumbPrint $certificate.Thumbprint -Protocol https -SslFlag $DisableLegacyTLS, $CCS -Force -verbose

Selain itu, seseorang dapat memecahkan masalah dan menguji fitur ini dengan Netsh:

  • Menambahkan pengikatan baru:

    netsh http menambahkan parameter reguler sslcert <> disablelegacytls=enable

  • Memperbarui pengikatan yang ada:

    netsh http update sslcert <regular parameters> disablelegacytls=enable

  • Periksa apakah diatur pada pengikatan:

    netsh http menunjukkan parameter reguler sslcert <>

    Tonton Nonaktifkan Versi TLS Warisan : Set/Not Set

Opsi #3: C++ HTTP.sys API (Tersedia Sekarang)

Seiring dengan Nonaktifkan TLS Warisan, penambahan berikut telah dilakukan untuk HTTP.sys:

  • HTTP_SERVICE_CONFIG_SSL_PARAM. DefaultFlags sekarang mendukung nilai baru berikut:

  • HTTP_SERVICE_CONFIG_SSL_FLAG_ENABLE_SESSION_TICKET: Mengaktifkan/Menonaktifkan Tiket Sesi untuk titik akhir SSL tertentu.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_LOG_EXTENDED_EVENTS : Aktifkan/Nonaktifkan pengelogan peristiwa yang diperluas untuk titik akhir SSL tertentu. Kejadian tambahan dicatat ke Log Peristiwa Windows. Hanya ada satu peristiwa yang didukung pada saat ini yang dicatat ketika jabat tangan SSL gagal.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS: Mengaktifkan/Menonaktifkan versi TLS warisan untuk titik akhir SSL tertentu. Mengatur bendera ini akan menonaktifkan TLS1.0/1.1 untuk titik akhir tersebut dan juga akan membatasi cipher suite yang dapat digunakan untuk suite sandi HTTP2.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_TLS12 : Aktifkan/Nonaktifkan TLS1.2 untuk titik akhir SSL tertentu.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_HTTP2: Aktifkan/Nonaktifkan HTTP/2 untuk titik akhir SSL tertentu.

Cara paling sederhana untuk mengaktifkan/menonaktifkan fungsionalitas ini per sertifikat di C++ adalah dengan bendera HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS yang disediakan oleh API HTTP.sys HttpSetServiceConfiguration.

Saat Nonaktifkan TLS Warisan diatur, pembatasan berikut diberlakukan:

  • Nonaktifkan protokol SSL2, SSL3, TLS1.0, dan TLS1.1.

  • Nonaktifkan sandi enkripsi DES, 3DES, dan RC4 (jadi hanya AES yang digunakan).

  • Nonaktifkan cipher enkripsi AES dengan mode rantai CBC (jadi hanya AES GCM yang digunakan).

  • Nonaktifkan pertukaran kunci RSA.

  • Nonaktifkan pertukaran kunci DH dengan ukuran kunci kurang dari 2048.

  • Nonaktifkan pertukaran kunci ECDH dengan ukuran kunci kurang dari 224.

Dokumentasi resmi perubahan ini pada docs.Microsoft.com akan datang.

Langkah selanjutnya untuk penerapan versi TLS

Nonaktifkan TLS Warisan menyediakan kemampuan baru yang kuat untuk memberlakukan lantai suite versi/cipher TLS pada pengikatan sertifikat/titik akhir tertentu. Ini juga mengharuskan Anda merencanakan penamaan sertifikat yang dikeluarkan dengan fungsionalitas ini diaktifkan. Beberapa pertimbangannya meliputi:

  • Apakah saya ingin jalur default ke titik akhir layanan saya memberlakukan TLS 1.2 hari ini, dan memberikan sertifikat yang berbeda sebagai titik akses "warisan" cadangan untuk pengguna yang membutuhkan TLS 1.0?

  • Haruskah sertifikasi www.contoso.com default dan sudah digunakan menggunakan Nonaktifkan TLS Warisan? Jika demikian, saya mungkin perlu memberikan sertifikat legacy.contoso.com dan mengikatnya ke titik akhir yang memungkinkan TLS 1.0.

  • Bagaimana cara terbaik untuk mengomunikasikan penggunaan sertifikat ini yang direkomendasikan kepada pelanggan saya?

Anda dapat memanfaatkan fitur ini untuk memenuhi kebutuhan grup besar pelanggan - mereka yang memiliki kewajiban untuk menggunakan TLS 1.2+, dan mereka yang masih mengerjakan migrasi dari TLS 1.0, semuanya tanpa pengeluaran perangkat keras tambahan. Selain ketersediaan pengikatan versi TLS per sertifikat per sertifikat saat ini di Windows Server 2019, Microsoft akan melihat untuk membuat Nonaktifkan TLS Warisan tersedia di seluruh layanan online berdasarkan permintaan pelanggan.