Điểm:0

Từ chối kết nối dựa trên mẫu trong nginx

lá cờ vn

trong nginx.conf tôi đã thêm một mệnh đề if để lọc các kết nối ssl dựa trên cn.

Ví dụ

bản đồ $ssl_client_s_dn $ssl_client_s_dn_cn {
    mặc định "";
    ~/CN=(?<CN>[^/]+) $CN;
}

người phục vụ {
    nghe 80 default_server;
    server_name nginx-server;
    trả về 301 https://$server_name$request_uri;

    nghe 443 ssl;
    nghe [::]:443 ssl;
    
    server_name nginx-server;
    
    ssl_certificate /path/to/server/cert.pem
    ssl_certificate_key /path/to/nginx-server/privatekey.pem

    địa điểm / {

        if ($ssl_client_s_dn_cn !~ "khách hàng") {
            trả lại 403;
        }
        gốc /usr/share/nginx/html;
        chỉ mục index.html index.htm;
    }
}

Bây giờ từ dòng lệnh, tôi đang cố gắng cuộn tròn bằng cách cung cấp chứng chỉ có DN tương tự như C=GB,ST=London,L=Thành phố,O=MyOrg,OU=myOU,CN=khách hàng Tôi gặp lỗi 403.

Tôi cũng đã thử với các chứng chỉ khác, bất kể chứng chỉ DN/CN là gì, tôi nhận thấy rằng Nginx trả về 403. Trong nhật ký truy cập, tôi đã cố ghi nhật ký $ssl_client_s_dn giá trị trong nhật ký, nhưng nó để trống.

Tôi lấy tài liệu tham khảo từ http://nginx.org/en/docs/http/ngx_http_ssl_module.html

Tôi đang thiếu gì ở đây?

cập nhật:

Nếu tôi mã hóa cứng giá trị trong hàm sau để trả về máy khách thì nó hoạt động tốt:

bản đồ $ssl_client_s_dn $ssl_client_s_dn_cn {
"khách hàng" mặc định;

}

Tôi nhận thấy rằng giá trị của ssl_client_s_dn có thể để trống theo nhật ký nginx. Nó có liên quan gì đến việc kích hoạt mô-đun ngx_http_ssl_module không?

Tôi đã kiểm tra $ nginx V Tôi nghĩ rằng mô-đun được liệt kê.

Đầu ra được đính kèm trong một hình ảnh nhập mô tả hình ảnh ở đây

Không chắc chắn những gì tôi đang thiếu! Xin vui lòng giúp đỡ?

Cảm ơn, JE

Ivan Shatsky avatar
lá cờ gr
Sử dụng `,` char thay vì `/` như được hiển thị trong câu trả lời [này](https://stackoverflow.com/a/64899673/7121513).
java_enthu avatar
lá cờ vn
Cảm ơn vì nhận xét @IvanShatsky. Tôi đã tìm ra vấn đề là do thiếu chỉ thị. Tôi sẽ đăng nó như một câu trả lời để nó có thể hữu ích cho người khác. Đánh giá cao ai đó đã xem câu hỏi và đăng bình luận. Cảm ơn.
Điểm:0
lá cờ vn

Tôi quản lý để sửa chữa nó. Đăng giải pháp ở đây chỉ trong trường hợp nó có thể hỗ trợ ai đó trong cùng một chiếc thuyền.

Trong cấu hình của tôi thiếu bit là ssl_verify_client tùy chọn; cho đến khi chúng tôi chỉ định Tôi biết được rằng trừ khi chúng tôi đề cập đến ssl_verify_client bật hoặc tùy chọn, biến $ssl_client_s_dn không được đặt. Nó sẽ tiếp tục in trống.

Nhận thức muộn có nghĩa là nếu không kích hoạt xác minh ứng dụng khách, máy chủ sẽ làm gì với chủ đề DN của ứng dụng khách. Tuy nhiên, tôi sẽ vui hơn nếu nhật ký nginx đề cập đến chỉ thị bị thiếu. Tôi đã phải tìm ra nó bằng cách thử và sai. Nhưng rất vui vì cuối cùng nó đã hoạt động.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.