কীভাবে একটি ভার্চুয়াল সার্ভারে ssl_verify_client = চালু এবং অন্যটিতে ssl_verify_client = OFF ব্যবহার করবেন?


9

আমি আমার ভার্চুয়াল হোস্টগুলির জন্য এসএসএল ক্লায়েন্ট যাচাইকরণকে বাধ্য করতে চাই। তবে এ থেকে কিছু পাওয়ার চেষ্টা করে "কোনও প্রয়োজনীয় এসএসএল শংসাপত্র প্রেরণ করা হয়নি" পান।

এখানে আমার পরীক্ষার কনফিগারেশন রয়েছে:

# defaults                                                                                                                                                                    
ssl_certificate /etc/certs/server.cer;                                                                                                                                 
ssl_certificate_key /etc/certs/privkey-server.pem;                                                                                                                     
ssl_client_certificate /etc/certs/allcas.pem;                                                                                                                                 

server {                                                                                                                                                                      
    listen 1443 ssl;                                                                                                                                                          
    server_name server1.example.com;                                                                                                                                          
    root /tmp/root/server1;                                                                                                                                                   

    ssl_verify_client off;                                                                                                                                                    
}                                                                                                                                                                             

server {                                                                                                                                                                      
    listen 1443 ssl;                                                                                                                                                          
    server_name server2.example.com;                                                                                                                                          
    root /tmp/root/server2;                                                                                                                                                   

    ssl_verify_client on;                                                                                                                                                     
} 

প্রথম সার্ভার 200 টিএসপি কোডের সাথে জবাব দেয়, তবে দ্বিতীয়টি "400 খারাপ অনুরোধ, কোনও এসএসএল শংসাপত্র প্রেরণ করা হয়নি, nginx / 1.0.4"।

সম্ভবত, একই আইপিতে ssl_verify_client ব্যবহার করা অবর্ণনীয়? আমি কি এই সার্ভারগুলিকে বিভিন্ন আইপি বেঁধে রাখতে পারি, এটি কি আমার সমস্যার সমাধান করবে?

উত্তর:


4

আমি একই ধরণের সমস্যায় পড়েছি, তবে ssl_verify_clientsসার্ভার ব্লকের চেয়ে সার্ভার ব্লকের মধ্যে অবস্থানের ব্লকগুলির মধ্যে পার্থক্য খুঁজছি । আপনি সম্ভবত দু'টি সার্ভারে ডিফল্ট এসএসএল কনফিগার স্টাফ স্থানান্তরিত করে সমস্যার সমাধান করতে পারেন (এটি সদৃশ করুন, বা এগুলি সমস্ত একটি সার্ভার ব্লকে রেখে দিন, একাধিক সাব-ডোমেন গ্রহণ করুন এবং অবস্থানগুলি ব্যবহার করুন)।

অবস্থান ভিত্তিক সমাধানের জন্য, নিম্নলিখিত কাজের মতো দেখায়। ব্যবহার

ssl_verify_client optional;

সার্ভার ব্লকে, এবং যদি বিভিন্ন অবস্থানগুলিতে if-বিবৃতি ব্যবহার করুন, যেমন:

if ($ssl_client_verify != SUCCESS) { return 403; }

ওয়েবপ্যাপে অ্যাডমিনকে অ্যাক্সেস দেওয়ার জন্য আমার এটি করা দরকার ছিল, তবুও গিথাবকে ক্লায়েন্ট এসএসএল সার্টি না দিয়ে গিথুব থেকে ওয়েবহুকগুলি অনুমতি দিন।


2

আপনি যদি একই আইপি ঠিকানা এবং পোর্টে একাধিক নাম-ভিত্তিক ভার্চুয়াল হোস্ট (এসএনআই ব্যবহার করে) রাখতে চান তবে ssl_verify_clientএই হোস্টগুলির জন্য বিভিন্ন সেটিংস সহ আপনাকে কমপক্ষে nginx> = 1.0.9 এ আপগ্রেড করতে হবে ।

পুরানো এনজিন্স সংস্করণগুলিতে ssl_verify_clientএকই আইপি + পোর্ট সংমিশ্রণে অন্যান্য সমস্ত নাম-ভিত্তিক ভার্চুয়াল হোস্টের জন্য ডিফল্ট ভার্চুয়াল হোস্টের জন্য সেটিংস ব্যবহৃত হত। কিছু অন্যান্য এসএসএল বিকল্পগুলি ( ssl_verify_depth, ssl_prefer_server_ciphers)ও একইভাবে পরিচালনা করা হয়েছিল। আলাদাভাবে আইপি বা পোর্ট ব্যবহার করা যদি আপনি একেবারে আপগ্রেড না করতে পারেন তবে তা কার্যকর হতে পারে।

১.০.৯ এর জন্য এনগিনেক্স চেঞ্জলগ থেকে নোট :

*) Bugfix: the "ssl_verify_client", "ssl_verify_depth", and
   "ssl_prefer_server_ciphers" directives might work incorrectly if SNI
   was used.

এনজিনেক্স উত্সে প্রাসঙ্গিক পরিবর্তনগুলি: ট্রাঙ্কে r4034 , 1.0 শাখায় r4246


0

আপনি কি আপনার ব্রাউজারে সিএ "/etc/certs/allcas.pem" স্বাক্ষরিত ক্লায়েন্ট শংসাপত্র (PKCS12 ফর্ম্যাটে) লোড করেছেন? ফায়ারফক্সে, আপনি পছন্দসমূহ -> উন্নত -> এনক্রিপশন -> শংসাপত্র দেখুন -> আপনার শংসাপত্রগুলিতে গিয়ে নিজের ক্লায়েন্টের শংসাপত্রগুলি পরীক্ষা করতে পারেন।

ডিফল্টরূপে "অফ" থাকলে প্যারামিটারের মান "ssl_verify_client"। এসএসএল ক্লায়েন্ট শংসাপত্র বাধ্যতামূলক না হলে আপনি "optionচ্ছিক" মানটিও ব্যবহার করতে পারেন।


আমি কার্ল - কার্ট ... একই ফলাফল সহ ব্যবহার করছি।
আলেকজান্ডার আর্তেমনকো

এনগিনেক্সের ত্রুটি লগটিতে আকর্ষণীয় কিছু আছে? (সম্ভবত /var/log/nginx/error.log)
ব্যবহারকারী 1025596

0

আমি কোনও এনগিনেক্স বিশেষজ্ঞ নই, তবে এসপিএস এবং ভার্চুয়াল হোস্টগুলি ব্যবহার করে অ্যাপাচি-তে একই সমস্যা দেখেছি। সমস্যাটি সেই ক্রম যা ভার্চুয়াল হোস্টের চয়ন বনাম সার্ভার SSL আলোচনার হাত পরিচালনা করে hand প্রথম পদক্ষেপটি এনক্রিপ্ট হওয়া সংযোগটি স্থাপন করা এবং এর পরে কেবলমাত্র সার্ভারটি আপনাকে হোস্টনামটির জন্য জিজ্ঞাসা করছে তা দেখতে পাবে। এবং এটি না জানা অবধি এটি ডিফল্ট সেটিংটি ব্যবহার করবে - যা এই ক্ষেত্রে প্রথম হোস্ট, যা এসএসএল সংযোগ স্থাপনের জন্য ক্লায়েন্ট শংসাপত্রের প্রয়োজন।

সুতরাং, সংক্ষিপ্ত উত্তর - এক্ষেত্রে আপনার পৃথক পোর্ট বা পৃথক আইপি ঠিকানা থাকা ভাল do


-1

আমি একই সমস্যার মুখোমুখি হয়েছি এবং একটি সমাধান খুঁজে পেয়েছি।

default_serverদ্বিতীয় সার্ভারের জন্য পতাকা যোগ করার চেষ্টা করুন

listen 443 ssl default_server;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.