Tôi đang tìm kiếm một thiết lập mà tôi muốn có chứng chỉ ứng dụng khách SSL cho tất cả trừ một IP nguồn.
Ý tưởng của tôi là thiết lập
ssl_verify_client tùy chọn;
và để thêm một câu lệnh if phức tạp vào các vị trí.
Tuy nhiên tôi không biết làm thế nào để viết một câu lệnh if như vậy.
# điều này yêu cầu chứng chỉ ứng dụng khách ssl cho tất cả các vị trí
địa điểm / {
if ($ssl_client_verify != "THÀNH CÔNG") {
trả lại 403;
...
}
# bây giờ phải viết gì để yêu cầu chứng chỉ ssl trừ khi IP nguồn là ví dụ: 1.2.3.4
địa điểm /hai {
nếu (?????) {
trả lại 403;
...
}
Chỉnh sửa: Thông tin bổ sung
công tắc ssl_verify_client với giá trị không bắt buộc
nói với khách hàng rằng họ có thể nhưng không phải gửi chứng chỉ ứng dụng khách.
Vì vậy, bằng cách kiểm tra biến $var_ssl_client_verify Tôi có thể xem chứng chỉ ứng dụng khách đã được xuất trình và hợp lệ hay chưa (THÀNH CÔNG
) hay không.
Quy tắc này sẽ được áp dụng cho tất cả các máy khách không có IP nguồn nhất định. Đối với một IP nguồn cụ thể, tôi không muốn xác minh chứng chỉ ứng dụng khách.
Những gì tôi cần là một cái gì đó như
if ($ssl_client_verify != "THÀNH CÔNG" and source_ip != 1.2.3.4 ) {
trả lại 403;
}
Chỉnh sửa 2: Tôi đã thay đổi tiêu đề từ
thiết lập nginx để yêu cầu chứng chỉ ứng dụng khách cho tất cả trừ một IP nguồn nhất định
đến
thiết lập nginx để yêu cầu các điều kiện nhất định của vị trí cho tất cả trừ một IP nguồn nhất định
vì những gì tôi thực sự đang gặp khó khăn không liên quan gì đến chứng chỉ ứng dụng khách, mà liên quan đến việc kết hợp các câu lệnh if và lọc có điều kiện trên địa chỉ IP nguồn.