Không tin tưởng một CA trung gian trong Linux?


18

Từ blog này .

CA trung gian là chứng chỉ được ký bởi một CA gốc có thể ký chứng chỉ tùy ý cho bất kỳ trang web nào.

Chúng cũng mạnh như CA gốc, nhưng không có danh sách đầy đủ về những cái mà hệ thống của bạn tin tưởng, bởi vì CA gốc có thể tạo ra những cái mới theo ý muốn và hệ thống của bạn sẽ tin tưởng chúng ngay từ cái nhìn đầu tiên. Có THOUSANDS đăng nhập vào CT.

Tháng này, một thông tin thú vị đã xuất hiện, được tạo ra rõ ràng vào tháng 9 năm 2015: "CA trung gian dịch vụ công cộng Blue Coat", được ký bởi Symantec. (Không có chứng chỉ nào được ký bởi CA này đã đạt đến nhật ký CT hoặc Censys cho đến nay.)

Tôi nghĩ rằng đây là một cơ hội tốt để viết ra cách không tin tưởng một CA trung gian mà đáng tin cậy trong OS X. Nó sẽ không ngăn CA gốc chuyển giao một trung gian mới cho cùng một tổ chức, nhưng tốt hơn là không có gì.

Khi tôi thử các bước trong blog trong Ubuntu, tôi tải xuống chứng chỉ này https://crt.sh/?id=19538258 . Khi tôi mở .crt, nó sẽ nhập vào Khóa Gnome, nhưng sau đó tôi không thể tìm cách "không tin cậy" chứng chỉ sau khi nhập.

Câu trả lời:


8

Chỉ để làm cho mọi thứ trở nên khó khăn, Linux có nhiều hơn một thư viện để làm việc với các chứng chỉ.

Nếu bạn đang sử dụng NSS của Mozilla, bạn có thể Tích cực Không tin cậy (thuật ngữ của họ) một chứng chỉ bằng tùy chọn của certutil-t trustargs :

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

Đối với Firefox, <path to directory containing database>thường là ~/.mozilla/firefox/<???>.profilenơi <???>có một số ký tự tìm kiếm ngẫu nhiên. (certutil là ví dụ: trong gói libnss3-tools của ubfox)

Sự cố như sau:

-M sửa đổi cơ sở dữ liệu

-t p đặt niềm tin thành Cấm

-n để thực hiện các hoạt động trên giấy chứng nhận được đặt tên

Ngay cả trong NSS, không phải tất cả các ứng dụng đều có chung cơ sở dữ liệu; vì vậy bạn có thể phải lặp lại quá trình này Ví dụ: để thực hiện tương tự cho Chrome, hãy thay đổi -d <path>thành -d sql:.pki/nssdb/.

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

Tuy nhiên, không phải tất cả các ứng dụng đều sử dụng NSS, vì vậy đây không phải là một giải pháp hoàn chỉnh. Ví dụ: tôi không tin có thể làm điều này với thư viện OpenSSL.

Do đó, bất kỳ ứng dụng nào sử dụng OpenSSL để cung cấp việc xây dựng chuỗi chứng chỉ (TLS, IPSec, v.v.) sẽ tin tưởng một chuỗi có chứng chỉ Blue Coat và bạn không thể làm gì về việc loại bỏ Root CA đã ký từ đó cửa hàng neo tin cậy của bạn (sẽ thật ngớ ngẩn khi coi đó là Symantec Root CA vì bạn sẽ mất một nửa Internet, trong khi các ứng dụng dựa trên NSS có thể được cấu hình chi tiết hơn để không tin tưởng bất kỳ chuỗi nào có chứng chỉ Blue Coat trong đó .

Ví dụ: tôi tin rằng OpenVPN sử dụng OpenSSL làm thư viện cho các chứng chỉ, do đó, người anh lớn có thể nghe lưu lượng OpenVPN của bạn mà bạn không biết nếu bạn đang kết nối với nhà cung cấp VPN thương mại sử dụng OpenVPN. Nếu bạn thực sự lo lắng về điều đó thì hãy kiểm tra xem Root CA của nhà cung cấp VPN thương mại của bạn là ai - nếu đó là Symantec / Verisign thì có lẽ đã đến lúc bỏ chúng cho người khác?

Lưu ý rằng SSH không sử dụng chứng chỉ X509 do đó bạn có thể kết nối và tạo đường hầm bằng SSH mà không phải lo lắng về các cuộc tấn công MITM của Blue Coat.


Tôi đã cập nhật câu hỏi để chỉ ra rằng khi tôi nhấp đúp vào chứng chỉ, nó đã được nhập vào khóa gnome. Tôi đã cố gắng tìm cách nhập nó vào Firefox trong câu trả lời của tôi dưới đây.
raphael

Đối với OpenSSL, việc xóa chứng chỉ có giống như không tin tưởng không? Nó chỉ có thể xác nhận certs nó biết về sau tất cả.
Bratchley

1
@Bratchley - Điều gì sẽ xảy ra nếu giấy chứng nhận nghi ngờ đã được gửi (như nó phải vậy) như là một phần của cái bắt tay TLS? Nó chỉ đơn giản là đáng tin cậy, trừ khi có một cách (như có với Mozilla NSS, Windows & OS-X) để khẳng định rằng nó luôn không đáng tin cậy.
garethThe

@garethTheRed Tôi có thể thiếu một cái gì đó, nhưng nếu thư viện yêu cầu chứng nhận được xác thực thì sẽ không thực hiện CRL hoặc xóa CA gốc đáng tin cậy giải quyết vấn đề? Cho dù đó là máy khách hay máy chủ, nó vẫn cần phải xác nhận.
Bratchley

1
Vâng. Bluecoat đã được Verisign cấp giấy chứng nhận CA để sử dụng cho các thiết bị trung gian. OP hỏi làm thế nào để không tin tưởng chứng chỉ này. Vì vậy, đây là về việc không tin tưởng một chứng chỉ cấp dưới mà CA cấp trên (Root trong trường hợp này) sẽ không bị thu hồi, khi, như bạn nói, bạn không muốn không tin vào root (Verisign).
garethThe

0

Tôi chưa thể nhận xét, vì vậy tôi sẽ phải nhận xét ở đây rằng trên Ubuntu Gnome 15.10, khi tôi sử dụng phương pháp của @ garethTheRed, tôi nhận được:

~$ 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.

"Hệ thống áo xanh, Inc." cũng không hoạt động.

(Đây là chứng chỉ tôi đã nhập: https://crt.sh/?id=19538258 )


Bạn đã tải xuống và nhập chứng chỉ đầu tiên?
raphael

Có, tôi đã nhập cái này: crt.sh/?id=19538258 . (Có vẻ như tôi có thể nhận xét ngay bây giờ! :)
chéo

Tôi nghĩ bạn chỉ có thể nhận xét về câu trả lời của riêng bạn. Tôi chưa thực sự thử quy trình này.
raphael

xem câu trả lời của tôi dưới đây
raphael

@raphael - Tôi đã cố gắng chỉnh sửa bên dưới, cho bạn biết rằng: Mặc dù liên kết ở trên mô tả "-t p" là "bị cấm (không tin tưởng rõ ràng)", trang man Ubuntu 15.10 mô tả nó là "p - ngang hàng hợp lệ". Tôi hy vọng bạn đã không làm điều sai trái.
chéo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.