ปัญหาดูเหมือนจะขึ้นอยู่กับรุ่นส่วนใหญ่ บน Ubuntu 14.04 LTS ค่าเริ่มต้น nginx คือ 1.4 ที่ล้าสมัย ก่อนอื่นคุณต้องติดตั้งรุ่นที่ใช้ PPA
https://leftshift.io/upgrading-nginx-to-the-latest-version-on-ubuntu-servers
แสดงวิธีการทำดังนี้:
sudo add-apt-repository ppa:nginx/stable
sudo aptitude safe-upgrade
คุณควรท้ายด้วย:
nginx -v
nginx version: nginx/1.8.0
การกำหนดค่าจาก @ xatr0z คำตอบhttps://serverfault.com/a/636455/162693ชี้ไปที่ http://www.senginx.org/en/index.php/Proxy_HTTPS_Client_Certificate
ไม่ทำงาน:
ข้อเสนอที่ไม่ทำงาน
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;
}
}
ไม่ทำงานนอกกรอบด้วย 1.8.0 อาจมีความหมายว่าเป็นเพียงคำใบ้เท่านั้นและไม่ควรใช้เป็นไฟล์กำหนดค่าดังกล่าวหรือขึ้นกับรุ่นอื่น
ฉันกำลังทดสอบกับเซิร์ฟเวอร์แบ็กเอนด์ที่ใช้ apache2 A ที่เปิดใช้ SSL และใบรับรองไคลเอ็นต์ที่ลงชื่อด้วยตนเอง Apache config SSLOptions ถูกตั้งค่าเป็น:
SSLOptions +ExportCertData +FakeBasicAuth + StdEnvVars
สิ่งนี้ทำให้การดีบักสถานการณ์ง่ายขึ้นเนื่องจากสคริปต์ phpinfo () ที่ด้านหลังจะแสดงข้อมูลเซิร์ฟเวอร์และฝั่งไคลเอ็นต์
เพื่อตรวจสอบสิ่งนี้ฉันใช้:
https: // แบ็กเอนด์ / ทดสอบ / phpinfo
เมื่อติดตั้งใบรับรอง SSL ในเบราว์เซอร์และฉันได้รับส่วนต่างๆเช่น: SSL_SERVER_S_DN_CN สำหรับใบรับรองเซิร์ฟเวอร์และ SSL_CLIENT_S_DN_CN สำหรับใบรับรองไคลเอ็นต์
เป็นการเริ่มต้นครั้งแรกที่ฉันใช้ (กรอกข้อมูลลงในวงเล็บ) เพื่อกำหนดค่า nginx บนเซิร์ฟเวอร์ส่วนหน้า 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;
}
}
uncomenting ส่วนใบรับรองเฉพาะไคลเอ็นต์ SSL เพียงเพื่อตรวจสอบว่า reverse proxy ทำงานได้หรือไม่
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: // ส่วนหน้า: 8080 / test / phpinfo.php ใช้งานได้
SSL_SERVER_S_DN_CN สำหรับใบรับรองเซิร์ฟเวอร์แสดงขึ้นและ SSL_CLIENT_S_DN_CN สำหรับใบรับรองไคลเอ็นต์ยังไม่ปรากฏ (ยัง)
หลังจาก uncommenting:
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;
}
}
และการตรวจสอบ / รีสตาร์ท
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: // ส่วนหน้า: 8080 / test / phpinfo.phpทำงานและ
SSL_SERVER_S_DN_CN สำหรับใบรับรองเซิร์ฟเวอร์แสดงขึ้นและ SSL_CLIENT_S_DN_CN สำหรับใบรับรองไคลเอ็นต์จะปรากฏขึ้น
ดังนั้นตอนนี้เรามีสิ่งที่ทำงานตามที่ขอ
โปรดทราบข้อผิดพลาดhttps://trac.nginx.org/nginx/ticket/872#ticket