ব্যর্থ tls হ্যান্ডশেক। কোনও আইপি স্যান নেই


28

আমি লগস্ট্যাশ ফরোয়ার্ডার সেট আপ করার চেষ্টা করছি, তবে একটি সঠিক সুরক্ষিত চ্যানেল তৈরি করার ক্ষেত্রে আমার সমস্যা রয়েছে। ভার্চুয়ালবক্সে চলমান দুটি উবুন্টু (সার্ভার 14.04) মেশিন দিয়ে এটি কনফিগার করার চেষ্টা করছে। এগুলি 100% পরিষ্কার (লগস্ট্যাশের জন্য হোস্ট ফাইলটি স্পর্শ করেনি বা প্রয়োজনীয় জাভা, এনজিক্স, ইলাস্টিস অনুসন্ধান, ইত্যাদি ব্যতীত অন্য কোনও প্যাকেজ ইনস্টল করা নেই)

আমি বিশ্বাস করি না যে এটি লগস্ট্যাশ সমস্যা, তবে শংসাপত্রগুলির ভুল পরিচালনা বা লগস্ট্যাশ উবুন্টু বা ফরোয়ার্ডার মেশিনে কোনওটি সঠিক না সেট করা।

আমি কীগুলি তৈরি করেছি:

sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

লগস্ট্যাশ সার্ভারে আমার ইনপুট কনফিড:

input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

কীগুলি ফরোয়ার্ডার হোস্টে অনুলিপি করা হয়েছিল , এতে নিম্নলিখিত কনফিগারেশন রয়েছে।

{
  "network": {
    "servers": [ "192.168.2.107:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
    "ssl key": "/etc/pki/tls/certs/logstash-forwarder.key"
  },
  "files": [
    {
      "paths": [
        "/var/log/syslog",
        "/var/log/auth.log"
       ],
      "fields": { "type": "syslog" }
    }
   ]
}

লগস্ট্যাশ সার্ভার চলার সাথে সাথে আমি ফরোয়ার্ডার মেশিনে 'সুডো সার্ভিস লগস্ট্যাশ-ফরোয়ার্ডার স্টার্ট' করব , আমাকে নিম্নলিখিত বারবার ত্রুটিটি দিচ্ছি :

Jul  9 05:06:21 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:21.589762 Connecting to [192.168.2.107]:5000 (192.168.2.107)
Jul  9 05:06:21 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:21.595105 Failed to tls handshake with 192.168.2.107 x509: cannot validate certificate for 192.168.2.107 because it doesn't contain any IP SANs
Jul  9 05:06:22 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:22.595971 Connecting to [192.168.2.107]:5000 (192.168.2.107)
Jul  9 05:06:22 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:22.602024 Failed to tls handshake with 192.168.2.107 x509: cannot validate certificate for 192.168.2.107 because it doesn't contain any IP SANs

যেমনটি আমি আগে উল্লেখ করেছি, আমি বিশ্বাস করি না এটি লগস্ট্যাশ সমস্যা, তবে শংসাপত্র / মেশিন কনফিগার সমস্যা। সমস্যাটি হ'ল, আমি এটিকে সমাধান করার মতো মনে করি না। আশা করি এখানে কিছু চালাক মন আমাকে সাহায্য করতে পারে?

ধন্যবাদ

উত্তর:


40

... 192.168.2.107 x509 দিয়ে হ্যান্ডশেক করতে ব্যর্থ হয়েছে: 192.168.2.107 এর জন্য শংসাপত্রটি বৈধতা দিতে পারে না কারণ এতে কোনও আইপি স্যান নেই

এসএসএলকে পিয়ার সনাক্তকরণ প্রয়োজন, অন্যথায় আপনার সংযোগটি মধ্যবর্তী মধ্যবর্তী ব্যক্তির বিরুদ্ধে হতে পারে যা ডিক্রিপ্ট করে + তথ্য স্নিগ্ফ করে / সংশোধন করে এবং আবার এটিকে এনক্রিপ্ট করে আসল টার্গেটে ফরোয়ার্ড করে। X509 শংসাপত্রগুলির সাথে সনাক্তকরণটি করা হয় যা কোনও বিশ্বস্ত সিএর বিরুদ্ধে বৈধ হওয়া দরকার এবং যার সাথে আপনি সংযোগ করতে চান তা চিহ্নিত করতে হবে।

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

সুতরাং আপনার যা দরকার তা হ'ল:

  1. আপনার সম্পাদনার /etc/ssl/openssl.cnf logstash হোস্ট - অ্যাড subjectAltName = IP:192.168.2.107মধ্যে [v3_ca] অধ্যায়।

  2. শংসাপত্র পুনরুদ্ধার করুন

  3. উভয় হোস্টের জন্য শংসাপত্র এবং কীটি অনুলিপি করুন

পিএস -days 365ডিফল্ট শংসাপত্রের বৈধতা 30 দিনের হিসাবে শংসাপত্র তৈরি করার কমান্ডলাইনে আরও বেশি কিছু যুক্তি বিবেচনা করুন এবং আপনি সম্ভবত এটি প্রতি মাসে পুনরায় তৈরি করতে চান না ..


দ্রুত উত্তর দেওয়ার জন্য ধন্যবাদ. আমি সার্ভারে একটি নতুন শংসাপত্র তৈরি করেছি। একটি তাত্ক্ষণিক পরিদর্শন আমাকে নিম্নলিখিতটি দেয়: ইস্যুকারী: সি = এউ, এসটি = কিছু-রাজ্য, ও = ইন্টারনেট উইগজিটস পিটিআই লিমিটেড, সিএন = 192.168.2.107 যেখানে লগস্ট্যাশ সার্ভার আইপি হয় 2.107। আমি তারপরে crt এবং কীটি অন্য মেশিনে (ফরওয়ার্ডার) অনুলিপি করে কনফিগারেশনে প্রয়োগ করি। এই শব্দটি কি আপনার কাছে সঠিক? কারণ এটি এখনও একই জিনিসটি নিয়ে
জ্বলজ্বল করছে

উপরে আমার মন্তব্য উপেক্ষা করুন। আমি এখন /etc/ssl/openssl.cnf সম্পাদনা করেছি এবং সাবজেক্টআল্টনেম = আইপি: 192.168.2.107 যুক্ত করে একটি নতুন সার্ট তৈরি করেছি: 'sudo openssl req -x509 -nodes -newkey rsa: 2048 -keyout نجی / লগস্ট্যাশ-ফরওয়ার্ডার.কি - আউট সার্টস / লগস্ট্যাশ-ফরওয়ার্ডার সিআরটি 'সেগুলি অনুলিপি করে প্রয়োগ করে কনফিগার করে পুনরায় চালু করুন (উভয় বাক্সে)। দুর্ভাগ্যক্রমে এখনও একই সমস্যা। এটির জন্য অনুরূপ কেসগুলিতে বেশ সময় কাটাচ্ছে, তাই আশা করি আপনি আমাকে সঠিক পথে পরিচালিত করতে সক্ষম হবেন? :)
কনারি

1
সত্যিই একই সমস্যা বা অন্য কোনও ত্রুটি বার্তা (অজানা সিএ বা অনুরূপ)? দয়া করে শংসাপত্রের প্রয়োজনীয় অংশটি পোস্ট করুন, যেমন openssl x509 -textসার্ভারে ইনস্টল করা শংসাপত্র থেকে। দয়া করে এটি পরীক্ষা করে দেখুন openssl s_clientযে সার্ভারটি প্রত্যাশিত শংসাপত্রটি প্রত্যাবর্তন করে এবং -CApathকনফিগার করা সিএর বিরুদ্ধে বিশ্বাস চেইন যাচাই করা যেতে পারে তা পরীক্ষা করতে s_client ব্যবহার করুন
স্টিফেন অলরিচ

আমি এটি কাজ পেতে পরিচালিত। আমি সাবজেক্টআল্টনেমকে ভুল বিভাগে রেখেছি। কাজের পদ্ধতি: মূলত আমি ওপেনএসএল সিএনএফ সম্পাদনা করেছি, বিভাগে [v3_ca] আমি 'সাবজেক্টআল্টনেম = আইপি: 192.168.2.107' যুক্ত করেছি। নতুন শংসাপত্র উত্পাদন এবং সার্ভার + ক্লায়েন্ট যুক্ত। আপনার সাহায্যের জন্য ধন্যবাদ! :)
কনারি

9

লম্বারজ্যাকের জন্য যথাযথ শংসাপত্র তৈরি করার জন্য একটি স্ক্রিপ্ট রয়েছে যা লগস্ট্যাশ গিথুব টিকিটে উল্লিখিত ছিল: এসপিএস হ্যান্ডশেক ব্যর্থ হয়েছে কারণ আইপি সান অনুপস্থিত রয়েছে

ফাইলটি ডাউনলোড করুন:

curl -O https://raw.githubusercontent.com/driskell/log-courier/1.x/src/lc-tlscert/lc-tlscert.go

... এটি তৈরি করুন:

go build lc-tlscert.go

.. এবং রান:

./lc-tlscert 
Specify the Common Name for the certificate. The common name
can be anything, but is usually set to the server's primary
DNS name. Even if you plan to connect via IP address you
should specify the DNS name here.

Common name: you_domain_or_whatever

The next step is to add any additional DNS names and IP
addresses that clients may use to connect to the server. If
you plan to connect to the server via IP address and not DNS
then you must specify those IP addresses here.
When you are finished, just press enter.

DNS or IP address 1: 172.17.42.1 (th ip address to trust)
DNS or IP address 2: 

How long should the certificate be valid for? A year (365
days) is usual but requires the certificate to be regenerated
within a year or the certificate will cease working.

Number of days: 3650
Common name: what_ever
DNS SANs:
    None
IP SANs:
    172.17.42.1

The certificate can now be generated
Press any key to begin generating the self-signed certificate.

Successfully generated certificate
    Certificate: selfsigned.crt
    Private Key: selfsigned.key

Copy and paste the following into your Log Courier
configuration, adjusting paths as necessary:
    "transport": "tls",
    "ssl ca":    "path/to/selfsigned.crt",

Copy and paste the following into your LogStash configuration, 
adjusting paths as necessary:
    ssl_certificate => "path/to/selfsigned.crt",
    ssl_key         => "path/to/selfsigned.key",

1
এটি আজ আমার অনেক সময় সাশ্রয় করেছে ... যদিও গিটল্যাব-চালক হিসাবে। ধন্যবাদ!
ম্যাট মেসারস্মিথ

6

এ নিয়ে আমার আসল সমস্যা ছিল। আমি লগস্ট্যাশ ব্যবহার করছি না, আমি কেবল আইপি সানকে ডকার টিএলএস দিয়ে কাজ করার চেষ্টা করছিলাম। আমি https ( https://docs.docker.com/articles/https/ ) এর ডকার নিবন্ধে বর্ণিত শংসাপত্রটি তৈরি করব , তারপরে আমি যখন কোনও ডকার ক্লায়েন্টের সাথে সংযোগ করব:

docker --tlsverify  -H tcp://127.0.0.1:2376 version

আমি এই ত্রুটি পেতে হবে:

...
FATA[0000] An error occurred trying to connect: Get https://127.0.0.1:2376/v1.16/version: \
x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs 

যা আমাকে পাগল করে চলেছে আমি স্বীকার করি, আমি সমস্ত বিষয়ে ওপেনএসএল-এ হোঁচট খেয়েছি, সুতরাং, আমি কী আবিষ্কার করেছি তা প্রত্যেকে ইতিমধ্যে জানতে পারে। সাবজেক্ট অলনেম উদাহরণ এখানে (এবং অন্য যে কোনও জায়গায়) ওপেনএসএল সিএনএফ ফাইল আপডেট করে দেখায়। আমি কাজ করতে পারে না। আমি ওপেনএসএল.সিএনএফ-এ একটি অবস্থান তৈরি করেছি, একটি স্থানীয় ডিরেক্টরিতে এটি অনুলিপি করেছি, তারপরে এতে পরিবর্তনগুলি করেছি। আমি যখন শংসাপত্রটি পরীক্ষা করি তখন এতে এক্সটেনশনটি থাকে না:

openssl x509 -noout -text -in server-cert.pem

এই শংসাপত্রটি তৈরি করতে ব্যবহৃত কমান্ডটি এখানে (ডকার নিবন্ধ থেকে):

openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem \
    -CAcreateserial -out server-cert.pem

আপনি এই কমান্ডটিতে একটি -config openssl.cnf লাইন যুক্ত করতে পারবেন না, এটি বৈধ নয়। তেমনি আপনি ওপেনএসএল.এনএফ ফাইলটি বর্তমান ডিরেক্টরিতে অনুলিপি করতে পারবেন না, এটি পরিবর্তন করতে পারবেন এবং এটি সেভাবে কাজ করার আশা রাখবেন। কয়েক লাইন পরে আমি লক্ষ্য করেছি যে 'ক্লায়েন্ট' শংসাপত্রটি একটি -xtfile extfile.cnf ব্যবহার করে। সুতরাং, আমি এটি চেষ্টা করেছি:

echo subjectAltName = IP:127.0.0.1 > extfile.cnf
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial \
   -out server-cert.pem -extfile extfile.cnf

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

আপনি আইপি: 127.0.0.1, আইপি: 127.0.1.1 (লোকালহোস্টও নয়) এর মতো যে কোনও সংখ্যক আইপি ঠিকানা উল্লেখ করতে পারেন।


আহ-হা! আপনাকে ধন্যবাদ, আমি আপনাকে যেমন ডকার দিয়ে একই জিনিস করছি এবং এই সমস্যাটিকে হিট করছি। আমি আপনার পরামর্শ এখন চেষ্টা করব।
মার্ক জোনস

0

দ্রুত সমাধানের জন্য দয়া করে উপরে @ স্টেফেন আলরিচের সমাধান দেখুন।

রয়েছে একটি বিষয় / logstash-ফরওয়ার্ডিং প্রকল্পের GitHub মধ্যে এটি সম্পর্কে একটি আলোচনা । একটি সহজ সমাধানের জন্য এটি দেখুন (শীঘ্রই, বর্তমানে এটির উপর কাজ চলছে)।

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