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
Không chắc chắn những gì tôi đang thiếu! Xin vui lòng giúp đỡ?
Cảm ơn,
JE