मैंने ssl certs को letencrypt के जरिए बनाया। वे ठीक हो जाते हैं और जब मैं चलता हूं:
openssl x509 -in {ssl_cert} -text -noout
यह सभी उपयुक्त जानकारी को प्रिंट करता है और ऐसा लगता है कि सब कुछ अच्छा है। फ़ाइलें 0600
अनुमतियों के साथ रूट के स्वामित्व में हैं । यदि, दूसरी ओर, मैं वेब से एक ही बात का प्रयास करता हूं:
echo | openssl s_client -connect {host}:443
मुझे निम्नलिखित त्रुटि मिलती है:
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0bytes and written 297bytes
---
New,(NONE),Cipher is(NONE)
Secure Renegotiation IS NOT supported
Compression:NONE
Expansion:NONE
---
जो मुझे विश्वास दिलाता है कि nginx सिर्फ ssl यातायात की सेवा नहीं है। जब मैं यह कोशिश करता हूं:
nginx -V
मैं निम्नलिखित मिलता है (* महत्वपूर्ण बिट्स के आसपास)
nginx version: nginx/1.1.19
*TLS SNI support enabled*
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module *--with-http_ssl_module* --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-auth-pam --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-upstream-fair --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-dav-ext-module
netstat मुझे बताता है कि nginx चल रहा है।
$ sudo netstat -an | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
unix 3 [ ] STREAM CONNECTED 8443
चूँकि nginx को सभी ssl समर्थन की ज़रूरत है (मुझे लगता है) के साथ बनाया गया है और मेरी vhost ssl का उपयोग करने के लिए सेटअप है और प्रमाणपत्र सही है ... मैं यह पता नहीं लगा सकता कि ssl कनेक्शन में आने पर यह केवल संचार में कटौती क्यों करेगा। " ट्रैफ़िक को तार-तार करने की कोशिश की और ग्राहक एक ssl "क्लाइंट हैलो" भेजता है और एक RST वापस भेज दिया जाता है ...
मुझे यह इंगित करना चाहिए कि मेरे पास इस सर्वर पर कई vhosts सेटअप हैं और उनमें से सभी एक ही व्यवहार को प्रदर्शित करते हैं। इसलिए मैं अनुमान लगा रहा हूं कि यह कुछ अधिक सामान्य है, लेकिन मेरा नगनेक्स vhost सामान नीचे है:
मैंने अपना nginx conf फ़ाइल सेटअप किया है (केवल दिखाया गया बिट्स):
server {
listen 80;
server_name {server name};
location / {
return 301 https://$host$request_uri;
}
}
server
{
listen 443 ssl;
server_name {server name};
ssl on;
ssl_certificate {path to certs}/fullchain.pem;
ssl_certificate_key {path to certs}/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
}
इसलिए मुझे पूरा यकीन है कि सामान समस्या नहीं है। जब मैं वेबसाइट को हिट करने की कोशिश करता हूं
netstat
कि वास्तव में 443 पर नाज़िनक्स सुन रहा है? इसके अलावा, मुझे लगता है कि वहाँ के बीच रिक्त स्थान माना जाता है ssl_protocols
लेकिन यह शायद एक स्पष्ट त्रुटि का कारण होगा।
-servername {host}
खुलता कमांड में कुछ नहीं बदलता है, हालांकि यह एक महान जाँच है ... कोई पासा नहीं।
openssl s_client -connect {host}:443 -servername {host}
:?