কেন ALPN আমার সার্ভার দ্বারা সমর্থিত নয়?


11

আমি বর্তমানে এনজিআইএনএক্স 1.11.9 এবং ওপেনসেল 1.0.2 জি ব্যবহার করে একটি উবুন্টু 16.04.1 এলটিএস সার্ভার চালাচ্ছি।

আমি যা কিছু পড়েছি তার অনুসারে, এই সংস্করণগুলিতে ALPN সমর্থন করা উচিত, তবুও আমি যখন কেসিডিএন এর এইচটিটিপি / ২ পরীক্ষার সরঞ্জামটিতে পরীক্ষা চালাচ্ছি তখন আমি "এএলপিএন সমর্থিত নয়" পেয়েছিকীসিডিএন পরীক্ষার রিপোর্টের স্ক্রিন ক্যাপচার

এবং যখন আমি মৃত্যুদন্ড কার্যকর করি তখন আমি echo | openssl s_client -alpn h2 -connect example.com:443 | grep ALPNপাই:

depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = EssentialSSL Wildcard, CN = *.example.com
verify return:1
No ALPN negotiated
DONE

ALPN সক্ষম না করা HTTP2 সম্পূর্ণরূপে সক্ষম হওয়া থেকে অক্ষম করে। আমি কীভাবে ALPN সক্ষম করব?

সম্পাদনা

nginx -V শো:

nginx version: nginx/1.11.9
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
built with OpenSSL 1.0.1f 6 Jan 2014 (running with OpenSSL 1.0.2g  1 Mar 2016)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

সম্পাদনা # 2

openssl version -a আউটপুট:

OpenSSL 1.0.2h  3 May 2016
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include  -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/ssl"

1
built with OpenSSL 1.0.1f- উত্তরটি অনুমান করুন
আলেক্সি টেন

আপনি আপনার এনগিনেক্স কোথায় পেলেন? সম্ভবত আপনি সরকারী উবুন্টু রেপোতে থাকা একটি দিয়ে আটকে থাকা উচিত। এটি 1.10.0 হবে, তবে কমপক্ষে এটি ওপেনসেলের সঠিক সংস্করণের বিরুদ্ধে নির্মিত হবে
আলেক্সি টেন

এনজিআইএনএক্স আনবুন্টু ডিস্ট্রো নিয়ে এসেছিলাম আমি আমার হোস্ট ডিজিটালওশন থেকে ইনস্টল করেছি, এটি সম্ভবত সম্ভব যে আমি 14.04 থেকে 16.04 পর্যন্ত সম্পাদিত আপগ্রেডের কারণে হয়েছিল is দেখে মনে হচ্ছে এটিকে সমাধান করার জন্য আমার কোনওভাবে এনজিআইএনএক্স পুনর্নির্মাণ করা দরকার।
গডউইন

আপনি কি এর আউটপুট যুক্ত openssl version -aকরতে পারেন, যাতে আমরা দেখতে পারি যে আপনার ওপেনএসএসএলটি কোনও অপ্রত্যাশিত পতাকা / বিকল্পগুলি নিয়ে নির্মিত হয়েছিল কিনা?
কাস্তাগলিয়া

@ কাস্টাগলিয়া, অবশ্যই, আমি প্রশ্নটি আপডেট করেছি।
গডউইন

উত্তর:


11

@ অ্যালেক্সিটেন যেমন উল্লেখ করেছেন, মূল কারণটি হ'ল যদিও আমি ওপেনএসএসএল 1.0.2 জি ইনস্টল করেছি, এনজিআইএনএক্স ওপেনএসএসএল দিয়ে তৈরি করা দরকার ছিল এবং এটি 1.0.1f দিয়ে নির্মিত হয়েছিল যা ALPN সমর্থন করে না।

এনজিআইএনএক্স ওপেনএসএসএল ১.০.২ বা তারপরে পুনর্নির্মাণ এবং পুনরায় ইনস্টল করা দরকার। আমি অনলাইনে কয়েকটি টিউটোরিয়াল পেয়েছি তবে আমি একটি ডিজিটাল মহাসাগর সার্ভার ব্যবহার করায়, এই সমস্যাটি আমার জন্য সমাধান করতে আমি এই সহায়তা বিষয়টি ব্যবহার করেছি: https://www.digitalocean.com/commune/questions/how-to-get-already- ইনস্টল-nginx-থেকে-ব্যবহার-OpenSSL-1-0-2-জন্য-alpn

আমার প্রথমে কয়েকটি নতুন লাইব্রেরি ইনস্টল করার দরকার ছিল:

apt-get install libgeoip-dev libgd2-xpm-dev libperl-dev

আমি তখনই এই স্ক্রিপ্টটি চালিয়েছি: https://gist.github.com/AJMaxwell/f6793605068813aae888216b02364d85

আমি আবার ব্যবহার শুরু sudo shutdown -r nowএবং nginx -Vআবার দৌড়ে । এবার এটি আমাকে দিয়েছে:

nginx version: nginx/1.11.0
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
built with OpenSSL 1.0.2h  3 May 2016
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-openssl=/root/openssl-1.0.2h --add-module=/root/ngx_pagespeed-release-1.11.33.2-beta

আমি আবার কী-সিডিএন-এর http2 পরীক্ষাও চালিয়েছি এবং এটি পাস করেছে।


2

আমি একটি বাশ স্ক্রিপ্ট তৈরি করেছি যা দেবিয়ান / উবুন্টু, আরএইচএল / সেন্টোস এবং অন্যান্য ডিস্ট্রোজে ওপেনএসএসএল দ্বারা স্বয়ংক্রিয়ভাবে এনগিনেক্স ডাউনলোড, সংকলন এবং ইনস্টল করে। ফলস্বরূপ বাইনারি হ'ল ওপেনএসএসএল এর সর্বশেষতম সংস্করণ নিয়ে আসা ব্যতীত তার অফিসিয়াল সংগ্রহস্থলের মাধ্যমে Nginx বিতরণকারী হিসাবে ঠিক একই।

স্ক্রিপ্টটি ওপেনএসএসএল ইনস্টলেশনটি পরিবর্তন করে না, কেবল এনগিনেক্স বাইনারি। আপনি যদি বেসরকারী উত্স দ্বারা নির্মিত এবং বিতরণ করা প্যাকেজগুলির উপর নির্ভর করতে না চান তবে এটি একটি ভাল বিকল্প।

https://github.com/victordzmr/nginx-compiler


আপনি যদি পাতাগুলি না ছাপিয়ে থাকেন তবে তালিকার চিহ্নবিহীন বাইনারিগুলি ইনস্টল করার পরিবর্তে আপনি কেন প্যাকেজগুলির উপর নির্ভর করবেন না?
ছানা 21

1
@ চিক্স এটি একটি স্ক্রিপ্ট যা বাইনারি নয়, এনগিনেক্স তৈরি করে। অজানা উত্স থেকে বাইনারিগুলি ডাউনলোড করা বিপজ্জনক হতে পারে, তাই এটি তৈরি করেছি।
ভিক্টর ডিয়াজ

1

Nginx পিপিএ ইনস্টল করুন এবং এটি ALPN সমর্থন করবে:

sudo add-apt-repository ppa:nginx/stable
sudo apt update
sudo apt dist-upgrade -y

1
আরও ভাল বন্ধ hda-me/nginx-stableযাতে আপনি ব্রটলি এবং গতিশীল মডিউলগুলি চালাতে পারেন
জ্যাকব ইভান্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.