Masalah ini tampaknya sebagian besar bergantung pada versi. Di Ubuntu 14.04 LTS, nginx default adalah yang sudah usang 1.4. Pertama, Anda perlu menginstal versi berbasis PPA
https://leftshift.io/upgrading-nginx-to-the-latest-version-on-ubuntu-servers
menunjukkan cara melakukan ini dengan:
sudo add-apt-repository ppa:nginx/stable
sudo aptitude safe-upgrade
Anda harus berakhir dengan:
nginx -v
nginx version: nginx/1.8.0
Konfigurasi dari @ xatr0z jawab https://serverfault.com/a/636455/162693 mengarah ke http://www.senginx.org/en/index.php/Proxy_HTTPS_Client_Certificate
tidak berfungsi:
proposal tidak bekerja
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;
}
}
tidak bekerja di luar kotak dengan 1.8.0. Itu mungkin dimaksudkan sebagai petunjuk saja dan tidak untuk digunakan sebagai file konfigurasi atau tergantung pada versi lain.
Saya menguji dengan server backend berbasis apache2 A dengan SSL dan sertifikat klien yang ditandatangani sendiri diaktifkan. Konfigurasi Apache SSLOptions diatur ke:
SSLOptions +ExportCertData +FakeBasicAuth + StdEnvVars
Ini membuat proses debug lebih mudah karena skrip phpinfo () di sisi backend akan menampilkan informasi Server dan Sisi Klien.
Untuk memverifikasi ini saya gunakan:
https: // backend / test / phpinfo
dengan sertifikat SSL yang diinstal di browser dan saya mendapatkan bagian seperti: SSL_SERVER_S_DN_CN untuk sertifikat server dan SSL_CLIENT_S_DN_CN untuk sertifikat klien.
Sebagai permulaan pertama saya menggunakan (mengisi bagian dalam tanda kurung) untuk mengkonfigurasi nginx pada server frontend 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;
}
}
membatalkan bagian khusus Sertifikat Klien SSL hanya untuk memeriksa apakah proxy terbalik itu sendiri berfungsi.
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
Sekarang http: // frontend: 8080 / test / phpinfo.php berfungsi The
SSL_SERVER_S_DN_CN untuk sertifikat server ditampilkan dan SSL_CLIENT_S_DN_CN untuk sertifikat klien belum (belum) ditampilkan
Sekarang setelah berhenti komentar:
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;
}
}
dan memeriksa / memulai kembali
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 berfungsi dan
SSL_SERVER_S_DN_CN untuk sertifikat server ditampilkan dan SSL_CLIENT_S_DN_CN untuk sertifikat klien ditampilkan
jadi sekarang kami dapat pekerjaan sesuai yang diminta.
Harap perhatikan bug https://trac.nginx.org/nginx/ticket/872#ticket