Vấn đề dường như chủ yếu là phiên bản phụ thuộc. Trên Ubuntu 14.04 LTS, nginx mặc định là một lỗi thời 1.4. Trước tiên, bạn cần cài đặt phiên bản dựa trên PPA
https://lerafthift.io/upgrad-nginx-to-the-latest-version-on-ubfox-servers
chỉ ra cách làm điều này với:
sudo add-apt-repository ppa:nginx/stable
sudo aptitude safe-upgrade
bạn nên kết thúc với:
nginx -v
nginx version: nginx/1.8.0
Cấu hình từ @ xatr0z trả lời https://serverfault.com/a/636455/162693 trỏ đến http://www.senginx.org/en/index.php/Proxy_HTTPS_Client_Cert ve
không hoạt động:
đề xuất không làm việc
backend {
server some-ip:443;
}
server {
listen 80;
location / {
proxy_ssl_certificate certs/client.crt;
proxy_ssl_certificate_key certs/client.key;
proxy_pass https://backend;
}
}
không hoạt động ngoài hộp với 1.8.0. Nó có thể chỉ là một gợi ý và không được sử dụng như một tệp cấu hình như vậy hoặc phụ thuộc vào phiên bản khác.
Tôi đang thử nghiệm với máy chủ phụ trợ dựa trên apache2 A có SSL và chứng chỉ ứng dụng khách tự ký được kích hoạt. Cấu hình SSLOptions của Apache được đặt thành:
SSLOptions +ExportCertData +FakeBasicAuth + StdEnvVars
Điều này làm cho việc gỡ lỗi tình huống dễ dàng hơn vì tập lệnh phpinfo () ở phía phụ trợ sẽ hiển thị thông tin Phía máy chủ và Máy khách.
Để xác minh điều này tôi đã sử dụng:
https: // phụ trợ / kiểm tra / phpinfo
với chứng chỉ SSL được cài đặt trong trình duyệt và tôi nhận được các phần như: SSL_SERVER_S_DN_CN cho chứng chỉ máy chủ và SSL_CLIENT_S_DN_CN cho chứng chỉ ứng dụng khách.
Khi bắt đầu đầu tiên, tôi đã sử dụng (điền vào các phần trong ngoặc) để định cấu hình nginx trên máy chủ ngoại vi B:
server {
listen 8080;
server_name <frontend>;
location / {
proxy_buffering off;
proxy_pass https://<backend>;
#proxy_ssl_certificate certs/<SSL Client Certificate>.crt;
#proxy_ssl_certificate_key certs/<SSL Client Certificate>.key;
}
}
bỏ qua phần cụ thể của Chứng chỉ máy khách SSL chỉ để kiểm tra xem proxy ngược có hoạt động không.
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
service nginx restart
nginx stop/waiting
nginx start/running, process 8931
Bây giờ http: // frontend: 8080 / test / phpinfo.php hoạt động
SSL_SERVER_S_DN_CN cho chứng chỉ máy chủ được hiển thị và SSL_CLIENT_S_DN_CN cho chứng chỉ ứng dụng khách chưa (chưa) được hiển thị
Bây giờ sau khi bỏ ghi chú:
server {
listen 8080;
server_name <frontend>;
location / {
proxy_buffering off;
proxy_pass https://<backend>;
proxy_ssl_certificate certs/<SSL Client Certificate>.crt;
proxy_ssl_certificate_key certs/<SSL Client Certificate>.key;
}
}
và kiểm tra / khởi động lại
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
service nginx restart
nginx stop/waiting
nginx start/running, process 8931
http: // frontend: 8080 / test / phpinfo.php hoạt động và
SSL_SERVER_S_DN_CN cho chứng chỉ máy chủ được hiển thị và SSL_CLIENT_S_DN_CN cho chứng chỉ ứng dụng khách được hiển thị
Vì vậy, bây giờ chúng tôi có những thứ làm việc như yêu cầu.
Vui lòng lưu ý lỗi https://trac.nginx.org/nginx/ticket/872#ticket