Sorun büyük ölçüde versiyona bağlı gibi görünüyor. Ubuntu 14.04 LTS'de varsayılan nginx eski bir 1.4'tür. Öncelikle PPA tabanlı bir sürüm yüklemeniz gerekir
https://leftshift.io/upgrading-nginx-to-the-latest-version-on-ubuntu-servers
bunun nasıl yapılacağını gösterir:
sudo add-apt-repository ppa:nginx/stable
sudo aptitude safe-upgrade
Sonuç olarak:
nginx -v
nginx version: nginx/1.8.0
@ Xatr0z adresindeki yapılandırma https://serverfault.com/a/636455/162693 http://www.senginx.org/en/index.php/Proxy_HTTPS_Client_Certificate 'yi işaret eden yapılandırma
çalışmıyor:
çalışmayan teklif
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 ile kutudan çıkmaz. Muhtemelen sadece ipucu amaçlıdır ve bu şekilde bir yapılandırma dosyası olarak kullanılmamalıdır veya başka bir sürüme bağlıdır.
SSL ve kendinden imzalı istemci sertifikaları etkinleştirilmiş bir apache2 tabanlı arka uç sunucusu A ile test yapıyorum. Apache yapılandırma SSLOptions şu şekilde ayarlanır:
SSLOptions +ExportCertData +FakeBasicAuth + StdEnvVars
Arka uç tarafındaki bir phpinfo () betiği Sunucu ve İstemci Tarafı bilgilerini göstereceğinden, bu durum hata ayıklamayı kolaylaştırır.
Bunu doğrulamak için kullandım:
https: // arka uç / test / phpinfo
SSL sertifikası tarayıcıya yüklendiğinde ve sunucu sertifikası için SSL_SERVER_S_DN_CN ve istemci sertifikası için SSL_CLIENT_S_DN_CN gibi bölümler alıyorum.
İlk başlangıç olarak ön uç sunucu B'deki nginx'i yapılandırmak için kullandım (parçaları parantez içinde doldurun):
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;
}
}
sadece ters proxy'nin çalışıp çalışmadığını kontrol etmek için SSL İstemci Sertifikasına özgü parçanın kaplamasının kaldırılması.
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
Şimdi http: // frontend: 8080 / test / phpinfo.php çalışıyor
Sunucu sertifikası için SSL_SERVER_S_DN_CN görüntülenir ve istemci sertifikası için SSL_CLIENT_S_DN_CN (henüz) görüntülenmez
Şimdi uncommenting sonra:
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;
}
}
ve kontrol etme / yeniden başlatma
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: // ön uç: 8080 / test / phpinfo.php çalışır ve
Sunucu sertifikası için SSL_SERVER_S_DN_CN görüntülenir ve istemci sertifikası için SSL_CLIENT_S_DN_CN görüntülenir
şimdi istediğimiz gibi işlerimiz var.
Lütfen hataya dikkat edin https://trac.nginx.org/nginx/ticket/872#ticket