Tin tưởng một CA không đáng tin cậy - Tôi có thể hạn chế cách hệ thống tin tưởng nó không?


32

(Được đăng lên ServerFault thay vì StackOverflow vì tôi cảm thấy nó liên quan đến cấu hình HĐH hơn là mã lập trình).

Tôi hiện chịu trách nhiệm duy trì một hệ thống kết nối với dịch vụ web của bên thứ ba. Dịch vụ web này yêu cầu chứng chỉ xác thực ứng dụng khách, đủ công bằng, nhưng bản thân dịch vụ web được bảo mật bằng chứng chỉ tự ký được tạo bởi chứng chỉ ủy quyền chứng nhận gốc tự tạo - cùng gốc tạo chứng chỉ xác thực ứng dụng khách.

Chỉ cần thêm chứng chỉ dịch vụ hiện tại vào danh sách đáng tin cậy và bỏ qua chứng chỉ ủy quyền tự tạo, không may là chứng chỉ dịch vụ thay đổi thường xuyên để chứng chỉ ủy quyền phải được tin cậy để đảm bảo ứng dụng không bị hỏng khi chứng chỉ dịch vụ được gia hạn.

Tuy nhiên, tôi (cá nhân) không tin tưởng chứng chỉ CA dựa trên kinh nghiệm của tôi với công ty điều hành dịch vụ web - điều đó sẽ không làm tôi ngạc nhiên nếu nó bị rò rỉ trên web - và đáng lo ngại là chứng chỉ CA không có hạn chế sử dụng khóa nó (trong khi các cuộc tấn công MITM bên ngoài là một khả năng, mặc dù ở xa, tôi quan tâm nhiều hơn đến một chứng chỉ bị rò rỉ được sử dụng để ký mã chẳng hạn).

Tôi có thể nói với máy tính của mình (hiện là hộp máy chủ, nhưng trong các hộp máy khách để bàn thông thường trong tương lai) tin tưởng CA nhưng chỉ với một tập hợp các khóa sử dụng nhất định và một nhóm nhỏ các tên chủ đề có thể (tên miền )?

Máy chủ hiện tại là Windows Server 2012 R2, nhưng nó có thể đang chạy trên hộp Linux - mặc dù các máy tính để bàn đều là các hộp Windows.


3
Ít nhất là trên Linux, nhiều ứng dụng có tùy chọn chỉ định vị trí của chứng chỉ CA ngang hàng, vì vậy bạn có thể giới hạn phạm vi của CA này chỉ với ứng dụng sử dụng nó. Câu trả lời của @CryptoGuy cũng sẽ hoạt động trên Linux, không có gì cụ thể về cửa sổ trong đó.
Edainedil

1
@Edainedil: Mặc dù đó là dành riêng cho việc triển khai - ví dụ: Windows đã hỗ trợ các ràng buộc tên X.509 lâu hơn nhiều so với NSS hoặc GnuTLS.
grawity

Hệ thống của bạn kết nối với dịch vụ của bên thứ ba này; có thể các mã khách hàng trên hệ thống của bạn được cấu hình để tin tưởng CA của dịch vụ đó, theo cách như vậy mà nó được thực hiện chỉ cho rằng mã khách hàng , chứ không phải cho toàn bộ hệ thống của bạn?
Castaglia

@Castaglia Tôi có thể viết mã xác minh chứng chỉ của riêng mình hoạt động độc lập với hệ thống máy chủ, nhưng có những phần mềm máy khách khác mà tôi không kiểm soát được khi sử dụng dịch vụ chứng chỉ toàn hệ thống.
Đại

Câu trả lời:


40

Vâng, nó là có thể. Trong trường hợp của Windows, có một tính năng được gọi là Chứng nhận chéo hoặc Cấp dưới đủ điều kiện.

Ý tưởng là bạn ký chứng chỉ CA cấp của bên thứ ba trong môi trường của bạn. Kết quả là chứng chỉ SSL từ xa được kết nối với chứng chỉ CA gốc của bạn. Để bảo vệ bản thân khỏi các chứng chỉ giả mạo có thể, bạn triển khai Name Constraintstiện ích mở rộng chứng chỉ nơi bạn chỉ định danh sách các tên được chấp nhận. Nếu chứng chỉ CA của bên thứ ba cấp cho bất kỳ tên nào khác (không được chỉ định rõ ràng trong tiện ích mở rộng Tên ràng buộc), nó sẽ tự động bị từ chối bởi nhà cung cấp CryptoAPI của bạn.

Ngoài các ràng buộc về tên, bạn có thể mô tả các ràng buộc Sử dụng khóa nâng cao bằng cách xác định Application Policiesphần mở rộng chứng chỉ trong chứng chỉ chéo. Vì vậy, nhà cung cấp ủy thác của bạn sẽ xác nhận thành công chỉ các cách sử dụng được chỉ định trong Application Policiestiện ích mở rộng.

Thông tin thêm: Lập kế hoạch và triển khai chứng nhận chéo và cấp dưới đủ điều kiện bằng Windows Server 2003

Mặc dù, bài viết được viết chống lại Windows Server 2003, bài viết vẫn áp dụng cho phiên bản Windows Server mới nhất.

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.