Tình huống là thế này: Có hai Dịch vụ Web WCF, một là máy khách (WCFClient) và một là máy chủ (WCFServer), được triển khai trên các máy khác nhau. Tôi cần liên lạc chứng chỉ giữa hai người trong số họ.
Trên máy chủ WCF, tôi đã thiết lập liên kết để sử dụng chứng chỉ làm loại thông tin xác thực ứng dụng khách.
Ngoài ra, trong phần hành vi tôi có các cài đặt khác
storeLocation="LocalMachine" storeName="Những người đáng tin cậy" x509FindType="FindBySubjectName" /> |
Trên dịch vụ WCF của máy khách, tôi đã thêm hành vi điểm cuối này
<điểm cuốihành="" vi="">
x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="TrustedPeople" />
| điểm>
Khi tôi muốn kiểm tra dịch vụ của mình, tôi nhận được thông báo lỗi:
Không có chứng chỉ dịch vụ nào được cung cấp cho mục tiêu 'http://blablabla...'. Chỉ định chứng chỉ dịch vụ trong ClientCredentials.
Thế là tôi bắt đầu tìm kiếm thông tin trên mạng. Sau khi thử rất nhiều thứ, điều duy nhất thực sự hiệu quả là thêm cái này vào ứng dụng khách của tôi:
storeLocation="LocalMachine"
storeName="Những người đáng tin cậy"
x509FindType="FindBySubjectName" />
Như bạn có thể tưởng tượng, vâng, điều này có nghĩa là tôi cần sử dụng chứng chỉ máy chủ trên máy khách của mình. Đây rõ ràng là một điều rất xấu. Nó hoạt động tốt cho mục đích thử nghiệm của tôi nhưng không được chấp nhận để triển khai.
Tôi muốn hiểu chính xác nguyên nhân gây ra thông báo lỗi này và các giải pháp khả thi.
Chỉnh sửa sau: Trong dự án này, máy khách không thể có chứng chỉ máy chủ (ngay cả khi không có khóa riêng). Đây là tiêu chuẩn của hệ thống và rất khó để vượt qua nó (trong sự quan liêu
thuật ngữ). Sẽ có nhiều máy khách, mỗi máy khách chạy một dịch vụ WCF máy khách và mỗi máy khách chỉ nên biết chứng chỉ riêng của mình. Máy chủ sẽ biết chứng chỉ máy chủ và tất cả chứng chỉ ứng dụng khách.
đang tìm kiếm đâyNó nói,
Khi xem xét xác thực, bạn có thể quen nghĩ chủ yếu về danh tính khách hàng. Tuy nhiên, trong bối cảnh WCF, xác thực thường đề cập đến xác thực lẫn nhau không chỉ cho phép nhận dạng tích cực các khách hàng mà còn cho phép khách hàng xác định một cách tích cực. Các dịch vụ WCF mà chúng được kết nối tới. Xác thực lẫn nhau đặc biệt quan trọng đối với các dịch vụ WCF kết nối Internet, vì kẻ tấn công có thể giả mạo dịch vụ WCF và chiếm đoạt các cuộc gọi của khách hàng để tiết lộ dữ liệu nhạy cảm.
Thông tin xác thực dịch vụ sẽ được sử dụng phụ thuộc phần lớn vào sơ đồ xác thực ứng dụng khách mà bạn chọn. Thông thường, nếu bạn đang sử dụng xác thực ứng dụng khách không phải của Windows, chẳng hạn như xác thực tên người dùng hoặc chứng chỉ, thì chứng chỉ dịch vụ sẽ được sử dụng cho cả xác thực dịch vụ và bảo vệ thư. bằng cách sử dụng xác thực máy khách Windows, thông tin xác thực Windows của danh tính quy trình có thể được sử dụng cho cả xác thực dịch vụ và bảo vệ thư.
Theo ý kiến của tôi, bạn确实Cần có chứng chỉ máy chủ trên máy khách, đây là điều tốt chứ không phải điều xấu. Xin lưu ý rằng bạn不需要(cũng không nên như vậy) của máy chủkhóa riêngĐặt nó trên máy khách. Khóa riêng không được bao gồm trong chứng chỉ - chỉ có khóa chung.
Có chứng chỉ máy chủ trên máy khách có nghĩa là chỉ có khóa chung của máy chủ trên máy khách. Lợi ích là bây giờ máy khách biết nó đang nói chuyện với một máy chủ thực.
Tôi không quen với các dịch vụ WCF, nhưng theo mức độ sử dụng chứng chỉ, điều này có vẻ ổn.
Tôi là một lập trình viên xuất sắc, rất giỏi!