Chúng tôi có một dịch vụ nội bộ chạy trên HTTP với một phiên bản Apache 2.4 (Debian Bullseye) được đặt trước dịch vụ này làm proxy cho HTTPS. Apache và HTTPS đang hoạt động, nhưng một yêu cầu bổ sung dành cho chứng chỉ ứng dụng khách -- cụ thể, các yêu cầu GET và HEAD có thể tiến hành ẩn danh, nhưng tất cả các phương thức khác phải xuất trình chứng chỉ ứng dụng khách hợp lệ phù hợp với các điều kiện nhất định.
Phần mềm chúng tôi xây dựng nhắm mục tiêu IIS, vì vậy Apache là một thứ gì đó không xác định đối với chúng tôi (người triển khai ban đầu đã rời đi). Những nỗ lực của chúng tôi để điều chỉnh cấu hình mà chúng tôi đã kế thừa có phần trang web của cấu hình (bỏ qua chỉ thị đường dẫn tệp chứng chỉ) là:
SSLVerifyClient tùy chọn
SSLVerifyDepth 10
ProxyPass /internal http://<internalIP>:/internal
ProxyPassReverse/internal http://<internalIP>:/internal
SSLOptions +StdEnvVars
<Vị trí /nội bộ>
Lệnh từ chối, cho phép
cho phép từ tất cả
<Giới hạnNgoại trừ NHẬN>
SSLRequire ( %{SSL_CLIENT_S_DN_O} eq "(org)" và %{SSL_CLIENT_S_DN_OU} eq "(unit)" và %{SSL_CLIENT_S_CN} eq "(name)" )
</LimitException>
</Vị trí>
Chúng tôi chưa thử điều này với chứng chỉ ứng dụng khách chẳng hạn. POST vì một GET đơn giản https://<proxy>/internal
hiện không thành công với thông báo 403 và error.log:
AH02229: truy cập vào proxy:http://{internalIP}/internal không thành công, lý do: Biểu thức yêu cầu SSL không được đáp ứng
Thoạt nhìn, điều này trông giống như SSLYêu cầu
kiểm tra cũng đang được áp dụng cho GET, trái ngược với <LimitExcept>
.
Có sự kết hợp của các lệnh mà chúng ta có thể sử dụng để có được hành vi mong muốn không? (Lý tưởng nhất là một trong số đó di chuyển ra khỏi biểu tượng rõ ràng hiện không được chấp nhận SSLYêu cầu
cũng.)