যতক্ষণ না আমি পড়েছি প্রতিটি উত্তর স্পষ্টত ভুল ছিল না, এসএনআইয়ের উচিত আমি যা চাই তা করা সম্ভব করে দেওয়া উচিত, তবুও প্রতিটি গাইড আমাকে ঠিক কী করতে বলছেন তা করতে বলে।
এবং এখনও nginx ভুল শংসাপত্র পরিবেশন করা হয় তাই আমি স্পষ্টত কিছু ভুল করছি।
❯ sudo nginx -V | grep SNI %1
nginx version: nginx/1.10.3
built with OpenSSL 1.1.0f 25 May 2017
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-qJwWoo/nginx-1.10.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/ngi
nx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fa
stcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_reques
t_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --wit
h-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/build/nginx-qJwWoo/nginx-1.10.3/debian/modules/nginx-auth-pam --add-dynamic-module=/build/nginx-qJwWoo/nginx-1.10.3/debian/modules/nginx-dav-
ext-module --add-dynamic-module=/build/nginx-qJwWoo/nginx-1.10.3/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-qJwWoo/nginx-1.10.3/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/nginx-qJwWoo/nginx-1.10.3/debian/modules/ngx_http_substitutions_filter_m
odule
আমার কনফিগারগুলি দেখতে দেখতে এখানে:
server {
listen 443 ssl default_server;
listen [::]:443 ssl;
server_name one.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/one.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/one.example.com/privkey.pem;
index index.html;
root /var/www/one.example.com/site;
}
server {
#listen 443 ssl default_server;
listen [::]:443 ssl;
server_name two.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/two.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/two.example.com/privkey.pem;
index index.html;
root /var/www/two.example.com/site;
}
যদি listen 443 ssl default_server;
উভয় সার্ভারে আমার কাছে নির্দেশ থাকে তবে এটি দুটি ডোমেনের জন্য সেই সার্ভারের জন্য এসএসএল শংসাপত্রটি ফিরিয়ে দেবে। যদি আমি উভয় ডোমেন থেকে এটি সরিয়ে ফেলি তবে আমি কেবল কিছুই পাই না - উভয় সার্ভার ডোমেনই সংযোগ প্রত্যাখ্যান করে।
এখানে আমার কী ভুল হচ্ছে? আমি কী বুঝতে পারি না এসএনআই কীভাবে কাজ করে? আমার এনগিনেক্স এসএনআই সমর্থন সক্ষম করে তৈরি করা হয়েছে। এবং এখনও ... আমি কেবলমাত্র একটি সাবডোমেনের জন্য সরবরাহ করা এসএসএল শংসাপত্র পাব।
openssl s_client -servername two.example.com -connect two.example.com:443
এবং এটি আমাকে সিএন দেয় one.example.com
। যদি আমি কোনটির ডিফল্ট সার্ভারটি অদলবদল করি তবে আমি অন্যান্য উপায়ে জিনিসগুলি পাই।
-servername one -connect two
এবং তারপরে বিপরীত। ওপেনসেল এস_স্লায়েন্ট এবং ক্রোম উভয়ই একই আচরণ পর্যবেক্ষণ করে - একমাত্র আপাত সংজ্ঞায়িত বৈশিষ্ট্যটি হ'ল ডিফল্ট সার্ভার লাইন।
default_server
ব্লক রাখতে পছন্দ করি যা কোনও সাইটই ফেরত না।
openssl s_client
করে থাকেন তবে-servername hostname
বিকল্পটি যুক্ত করার বিষয়টি নিশ্চিত করুন যাতে ক্লায়েন্টটি আসলে এসএনআই ব্যবহার করে।