Mengabaikan CA menengah di Linux?

18

Dari blog ini .

CA perantara adalah sertifikat yang ditandatangani oleh CA root yang dapat menandatangani sertifikat sewenang-wenang untuk situs web apa pun.

Mereka sama kuatnya dengan root CA, tetapi tidak ada daftar lengkap yang dipercaya sistem Anda, karena root CA dapat membuat yang baru sesuka hati, dan sistem Anda akan memercayai mereka pada pandangan pertama. Ada RIBUAN login CT.

Bulan ini satu yang menarik muncul, muncul pada bulan September 2015: "Blue Coat Public Services Intermediate CA", ditandatangani oleh Symantec. (Sejauh ini, tidak ada sertifikat yang ditandatangani CA ini yang mencapai log atau sensus CT.)

Saya pikir ini akan menjadi kesempatan yang baik untuk menulis bagaimana secara eksplisit mempercayai CA perantara yang jika tidak akan dipercaya dalam OS X. Itu tidak akan menghentikan root CA dari menyerahkan perantara baru ke organisasi yang sama, tetapi lebih baik daripada tidak sama sekali.

Ketika saya mencoba langkah-langkah di blog di Ubuntu, saya mengunduh sertifikat ini https://crt.sh/?id=19538258 . Ketika saya membuka .crt itu mengimpor ke Gnome Keyring, tapi kemudian saya tidak bisa menemukan cara untuk "mempercayakan" sertifikat setelah mengimpornya.

raphael
sumber

Jawaban:

8

Hanya untuk mempersulit, Linux memiliki lebih dari satu perpustakaan untuk bekerja dengan sertifikat.

Jika Anda menggunakan Mozilla NSS, Anda bisa aktif Ketidakpercayaan (terminologi mereka) sertifikat menggunakan certutil 's -t trustargspilihan:

$ certutil -d <path to directory containing database> -M -t p -n "Blue Coat Public Services Intermediate CA"

Untuk Firefox, <path to directory containing database>biasanya ~/.mozilla/firefox/<???>.profiledi mana <???>beberapa karakter mencari random. (certutil adalah mis. dalam paket libnss3-tools ubuntu)

Rinciannya adalah sebagai berikut:

-M untuk memodifikasi database

-t p untuk mengatur kepercayaan untuk Dilarang

-n untuk melakukan operasi pada sertifikat yang disebutkan

Bahkan di dalam NSS, tidak semua aplikasi berbagi basis data yang sama; jadi Anda mungkin harus mengulangi proses ini. Misalnya, untuk melakukan hal yang sama untuk Chrome, ubah -d <path>ke -d sql:.pki/nssdb/.

$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"

Namun, tidak semua aplikasi menggunakan NSS, jadi ini bukan solusi lengkap. Sebagai contoh, saya tidak percaya itu mungkin dilakukan dengan perpustakaan OpenSSL.

Akibatnya, aplikasi apa pun yang menggunakan OpenSSL untuk menyediakan pembangunan rantai sertifikat (TLS, IPSec, dll) akan mempercayai rantai dengan sertifikat Blue Coat dan tidak ada yang dapat Anda lakukan selain menghapus CA Root yang menandatanganinya dari toko anchor trust Anda (yang akan konyol mengingat itu adalah Symantec Root CA karena Anda akan berakhir tidak mempercayai setengah dari Internet), sedangkan aplikasi yang bergantung pada NSS dapat dikonfigurasi lebih terperinci untuk tidak mempercayai rantai apa pun yang memiliki sertifikat Blue Coat di dalamnya .

Sebagai contoh, saya percaya OpenVPN menggunakan OpenSSL sebagai pustaka untuk sertifikat, oleh karena itu kakak bisa mendengarkan lalu lintas OpenVPN Anda tanpa sepengetahuan Anda jika Anda terhubung ke penyedia VPN komersial yang menggunakan OpenVPN. Jika Anda benar-benar khawatir tentang itu maka periksa siapa Root CA penyedia VPN komersial Anda - jika itu Symantec / Verisign maka mungkin sudah waktunya untuk membuangnya untuk orang lain?

Perhatikan bahwa SSH tidak menggunakan sertifikat X509 karena itu Anda dapat terhubung dan terowongan menggunakan SSH tanpa khawatir tentang serangan Blue Coat MITM.

garethTheRed
sumber
Saya memperbarui pertanyaan untuk menunjukkan bahwa ketika saya mengklik dua kali pada sertifikat itu diimpor ke keyring gnome. Saya berhasil menemukan cara untuk mengimpornya ke Firefox dalam jawaban saya di bawah ini.
raphael
Untuk OpenSSL tidak hanya menghapus sert yang sama dengan tidak mempercayakan itu? Bagaimanapun, itu hanya dapat memvalidasi sertifikat yang diketahuinya.
Bratchley
1
@Bratchley - Bagaimana jika sertifikat yang dicurigai dikirim (sebagaimana mestinya) sebagai bagian dari jabat tangan TLS? Itu hanya akan dipercaya, kecuali ada cara (karena ada dengan Mozilla NSS, Windows & OS-X) untuk menegaskan bahwa itu selalu tidak dapat dipercaya.
garethTheRed
@garethTheRed Saya mungkin kehilangan sesuatu, tetapi jika perpustakaan meminta sertifikat untuk divalidasi maka tidak akan melakukan CRL atau menghapus root tepercaya CA menyelesaikan masalah? Apakah itu sertifikat klien atau server, itu masih harus memerlukan validasi.
Bratchley
1
Iya. Bluecoat dikeluarkan sertifikat CA oleh Verisign untuk digunakan dalam perangkat man-in-the-middle. OP bertanya bagaimana tidak mempercayai sertifikat ini. Jadi ini tentang tidak mempercayai sertifikat bawahan bahwa atasan yang menerbitkan CA (Root dalam kasus ini) tidak akan mencabut, ketika, seperti yang Anda katakan, Anda tidak ingin mengabaikan kepercayaan root (Verisign).
garethTheRed
0

Saya belum bisa berkomentar, jadi saya harus berkomentar di sini bahwa di Ubuntu Gnome 15.10, ketika saya menggunakan pendekatan @ garethTheRed, saya mendapatkan:

~$ certutil -d ~/.mozilla/firefox/<directory>.default -M -t p -n "Blue Coat Public Services Intermediate CA" 
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_BAD_DATABASE: security library: bad database.

~$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_UNRECOGNIZED_OID: Unrecognized Object Identifier.

"Blue Coat Systems, Inc." juga tidak bekerja.

(Ini adalah sertifikat yang saya impor: https://crt.sh/?id=19538258 )

Diagon
sumber
Apakah Anda mengunduh dan mengimpor sertifikat terlebih dahulu?
raphael
Ya, saya mengimpor yang ini: crt.sh/?id=19538258 . (Sepertinya saya bisa berkomentar sekarang! :)
Diagon
Saya pikir Anda hanya dapat mengomentari jawaban Anda sendiri. Saya belum benar-benar mencoba prosedur ini.
raphael
lihat jawaban saya di bawah ini
raphael
@raphael - Saya mencoba mengedit di bawah ini, memberi tahu Anda bahwa: Sementara tautan di atas menjelaskan "-t p" sebagai "dilarang (tidak dipercaya secara eksplisit)", halaman manual Ubuntu 15.10 menggambarkannya sebagai "p - Valid peer". Saya harap Anda tidak melakukan hal yang salah.
Diagon