নতুন সার্ভার কিছু এসএসএল ত্রুটির কারণে পপেটমাস্টার থেকে কনফিগারেশন আনতে অক্ষম


14

উত্পাদন পরিবেশে তিনটি মেশিনে কিছু হার্ডওয়্যার সমস্যা ছিল এবং তা বাতিল হয়ে গেছে। পরিকাঠামো দল এগুলি পুনরায় ইনস্টল করেছে এবং তাদের একই হোস্টনাম এবং আইপি ঠিকানা দিয়েছে gave উদ্দেশ্য হ'ল এই সিস্টেমে পুতুল চালানো যাতে এগুলি আবার চালু করা যায়।


প্রয়াস

1) নিম্নলিখিত কমান্ড জারি করে পুপেটে মাস্টার থেকে পুরাতন পুতুল শংসাপত্রগুলি সরানো হয়েছিল:

puppet cert revoke grb16.company.com
puppet cert clean grb16.company.com

2) পুরানো শংসাপত্রটি সরানোর পরে, পুনরায় ইনস্টল হওয়া নোডগুলির মধ্যে একটি থেকে নিম্নলিখিত আদেশটি জারি করে একটি নতুন শংসাপত্রের অনুরোধ তৈরি করা হয়েছিল:

[root@grb16 ~]# puppet agent -t
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for grb16.company.com
Info: Certificate Request fingerprint (SHA256): 6F:2D:1D:71:67:18:99:86:2C:22:A1:14:80:55:34:35:FD:20:88:1F:36:ED:A7:7B:2A:12:09:4D:F8:EC:BF:6D
Exiting; no certificate found and waitforcert is disabled
[root@grb16 ~]#

3) একবার পুপেটমাস্টারে শংসাপত্রের অনুরোধটি দৃশ্যমান হওয়ার পরে শংসাপত্রের অনুরোধটি স্বাক্ষর করতে নিম্নলিখিত আদেশটি জারি করা হয়েছিল:

[root@foreman ~]# puppet cert sign grb16.company.com
Notice: Signed certificate request for grb16.company.com
Notice: Removing file Puppet::SSL::CertificateRequest grb16.company.com at '/var/lib/puppet/ssl/ca/requests/grb16.company.com.pem'
[root@foreman ~]# 

সমস্যা

শংসাপত্রের অনুরোধটি স্বাক্ষরিত হয়ে গেলে এবং একটি পুতুল রান শুরু করার পরে নিম্নলিখিত ত্রুটি নিক্ষেপ করা হয়:

[root@grb16 ~]# puppet agent -t
Info: Caching certificate for grb16.company.com
Error: Could not request certificate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Exiting; failed to retrieve certificate and waitforcert is disabled
[root@grb16 ~]# 

দ্বিতীয় বারের জন্য পুতুল চালানো ফলাফল:

[root@grb16 ~]# puppet agent -t
Warning: Unable to fetch my node definition, but the agent run will continue:
Warning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Info: Retrieving pluginfacts
Error: /File[/var/lib/puppet/facts.d]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not retrieve file metadata for puppet://foreman.company.com/pluginfacts: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Wrapped exception:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Info: Retrieving plugin
Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve file metadata for puppet://foreman.company.com/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Wrapped exception:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Error: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=Puppet CA: foreman.company.com]
[root@grb16 ~]# 

বিশ্লেষণ

সমস্যাটি সমাধান করার জন্য, ত্রুটি বার্তাটি তদন্ত করা হয়েছিল এবং দেখে মনে হচ্ছে সমস্যাটি এসএসএল বা পুতুল সম্পর্কিত। সম্ভবত এই প্যাকেজগুলির মধ্যে একটি ভুলভাবে ইনস্টল করা হয়েছে বা পুনরায় ইনস্টল নোডে একটি ভুল সংস্করণ ইনস্টল করা হয়েছে।

পুতুল

[root@grb16 ~]# yum list installed |grep puppet
facter.x86_64          1:2.3.0-1.el6    @puppetlabs_6_products                  
hiera.noarch           1.3.4-1.el6      @puppetlabs_6_products                  
puppet.noarch          3.7.3-1.el6      @puppetlabs_6_products                  
puppetlabs-release.noarch
                       6-11             @puppetlabs_6_products                  
ruby-augeas.x86_64     0.4.1-3.el6      @puppetlabs_6_deps                      
ruby-shadow.x86_64     1:2.2.0-2.el6    @puppetlabs_6_deps                      
rubygem-json.x86_64    1.5.5-3.el6      @puppetlabs_6_deps  

SSL এর

[root@grb16 ~]# yum list installed |grep ssl
nss_compat_ossl.x86_64 0.9.6-1.el6      @anaconda-CentOS-201410241409.x86_64/6.6
openssl.x86_64         1.0.1e-30.el6_6.4
openssl-devel.x86_64   1.0.1e-30.el6_6.4
[root@grb16 ~]# 

বিভিন্ন সার্ভারে ইনস্টল থাকা এসএসএল এবং পুতুল প্যাকেজগুলির মধ্যে কোনও তফাত খুঁজে পাওয়া যায় নি। যে সমস্ত সিস্টেমগুলি বাতিল বা পুনরায় ইনস্টল করা হয়নি সেগুলি এখনও পুতুল চালাতে সক্ষম। সমস্যাটি পুনরায় ইনস্টল করা সার্ভারে সীমাবদ্ধ। নোট করুন যে পুতুল অন্য দুটি পুনরায় ইনস্টল করা সার্ভারে চালিত হয়নি। কী কারণে এই সমস্যা সৃষ্টি হচ্ছে এবং কীভাবে এটি সমাধান করবেন?


1
Ehh। আপনি শংসাপত্রগুলি বাতিল করেছেন, তবে সিআরএল এখনও আপডেট হয়নি। আপনিও নতুন সার্টিফিকেট জারি করেছেন?
হরিণ হান্টার

যদি আমি প্রক্রিয়াটি সঠিকভাবে বুঝতে পারি, তবে puppet agent -tআমি প্রথমে ক্লায়েন্টটিতে যা চালাই তা এটি শংসাপত্র তৈরি করে এবং তা পুতুলমাস্টারের কাছে অনুমোদনের জন্য প্রেরণ করে, তাই যদি নতুন শংসাপত্র দেওয়ার সঠিক উপায়টি হয় তবে আমি তা করি।
Itai Ganot

@ ইটাইগানোট প্রকৃতপক্ষে, তবে কখনও কখনও এজেন্টের / var / lib / পুতুল / এসএসএলে থাকা কিছু পুরানো বা পুরানো শংসাপত্রগুলি বিবাদযুক্ত হয়
030

আমি একই ত্রুটির মধ্যে দৌড়েছি। আরেকটি জিনিস যাচাই করতে হবে যদি দ্বিতীয় অনুরোধটি নোডের মতো একই fqdn দেখায়। অনুরোধটি পুতুল মাস্টারের fqdn দেখায়।
অতিথি

উত্তর:


20

সংক্ষিপ্ত উত্তর

সমস্যাটি CRL is not yet valid forইঙ্গিত দেয় যে পুতুল-এজেন্ট এবং পুতুলমাস্টারের মধ্যে সময় সিঙ্কের বাইরে । সময় সিঙ্ক করুন (এনটিপি)। পাশাপাশি পুতুল-এজেন্ট এবং পুতুলমাস্টার থেকে শংসাপত্রটি সরান এবং এজেন্টে পুতুল চালান।


বিস্তৃত উত্তর

CRL is not yet valid for নিম্নলিখিত স্নিপেটে থাকে।

নিম্নলিখিত পরীক্ষা কোড স্নিপেট বর্ণনা কি সমস্যা কারণ:

it 'includes the CRL issuer in the verify error message' do
  crl = OpenSSL::X509::CRL.new
  crl.issuer = OpenSSL::X509::Name.new([['CN','Puppet CA: puppetmaster.example.com']])
  crl.last_update = Time.now + 24 * 60 * 60
  ssl_context.stubs(:current_crl).returns(crl)

  subject.call(false, ssl_context)
  expect(subject.verify_errors).to eq(["CRL is not yet valid for /CN=Puppet CA: puppetmaster.example.com"])
end

ssl_context

let(:ssl_context) do
  mock('OpenSSL::X509::StoreContext')
end

বিষয়

subject do
  described_class.new(ssl_configuration,
  ssl_host)
end

কোডটিতে ওপেনএসএসএল :: এক্স 509 :: সিআরএল ক্লাসের স্নিপেটস অন্তর্ভুক্ত রয়েছে ।

ইস্যুকারী = (P1)

               static VALUE
ossl_x509crl_set_issuer(VALUE self, VALUE issuer)
{
    X509_CRL *crl;

    GetX509CRL(self, crl);

    if (!X509_CRL_set_issuer_name(crl, GetX509NamePtr(issuer))) { /* DUPs name */
        ossl_raise(eX509CRLError, NULL);
    }
    return issuer;
}

last_update = (P1)

               static VALUE
ossl_x509crl_set_last_update(VALUE self, VALUE time)
{
    X509_CRL *crl;
    time_t sec;

    sec = time_to_time_t(time);
    GetX509CRL(self, crl);
    if (!X509_time_adj(crl->crl->lastUpdate, 0, &sec)) {
        ossl_raise(eX509CRLError, NULL);
    }

    return time;
}

LAST_UPDATED সময় বর্তমান সময় প্লাস একটি অতিরিক্ত দিন হবে এবং বিষয় ফাংশন কল যে পাস হবে কল ফাংশন যে বাস default_validator বর্গ

class Puppet::SSL::Validator::DefaultValidator #< class Puppet::SSL::Validator
  attr_reader :peer_certs
  attr_reader :verify_errors
  attr_reader :ssl_configuration

  FIVE_MINUTES_AS_SECONDS = 5 * 60

  def initialize(
    ssl_configuration = Puppet::SSL::Configuration.new(
    Puppet[:localcacert], {
      :ca_auth_file => Puppet[:ssl_client_ca_auth]
    }),

    ssl_host = Puppet::SSL::Host.localhost)
    reset!
    @ssl_configuration = ssl_configuration
    @ssl_host = ssl_host
  end

  def call(preverify_ok, store_context)
    if preverify_ok
      ...
    else
      ...
      crl = store_context.current_crl
      if crl
        if crl.last_update && crl.last_update < Time.now + FIVE_MINUTES_AS_SECONDS
          ...
        else
          @verify_errors << "#{error_string} for #{crl.issuer}"
        end
        ...
      end
    end
  end

যদি preverify_ok মিথ্যা হয় তবে অন্য ধারাটি প্রযোজ্য। if crl.last_update && crl.last_update < Time.now + FIVE_MINUTES_AS_SECONDSমিথ্যা হিসাবে ফলাফল কারণ সময়টি অতিরিক্ত দিনের সাথে আটকানো হয়েছে অন্য বিবৃতিটি প্রযোজ্য হবে। @verify_errors << "#{error_string} for #{crl.issuer}"ফলাফল মূল্যায়ন CRL is not yet valid for /CN=Puppet CA: puppetmaster.example.com

সমস্যা সমাধানের জন্য:

  1. পুতুল-এজেন্ট এবং পুতুলমাস্টারের মধ্যে সময় সিঙ্ক করুন। উভয় নোডে এনটিপি সার্ভারটি (ভাল) চলছে?
  2. এজেন্ট থেকে সম্পূর্ণ এসএসএল ফোল্ডার ( / var / lib / পুতুল / এসএসএল ) সরিয়ে বা পুনর্নবীকরণ করুন।
  3. জারি করে মাস্টারের কাছ থেকে শংসাপত্রটি প্রত্যাহার করুন sudo puppet cert clean <fqdn-puppet-agent>
  4. অটোসাইন অক্ষম থাকলে সার্টটিতে স্বাক্ষর করুন
  5. এজেন্টের উপর পুতুল চালান

উপসংহারে, পুতুল-এজেন্টস এবং পুতুলমাস্টারের সময়টি পুরো সময় সিঙ্ক করা উচিত। সর্বাধিক অনুমোদিত বিচ্যুতি 5 মিনিটের ছাড়িয়ে যাওয়ার ফলে সমস্যা দেখা দেবে।


আমি এখনও এটি পেয়েছি: "[রুট @ grb16 ~] # পুতুল এজেন্ট -t তথ্য: grb16.company.com এর জন্য শংসাপত্রের শংসাপত্র তথ্য: সিএ-র জন্য শংসাপত্র_প্রেমীকরণ তালিকাটি ত্রুটি: শংসাপত্রের জন্য অনুরোধ করা যায়নি: এসএসএল_ কানেক্টটি ফিরে এসেছে = 1 ত্রুটিযুক্ত = 0 রাষ্ট্র = এসএসএলভি 3 সার্ভার শংসাপত্র বি পড়ুন: শংসাপত্র যাচাইকরণ ব্যর্থ হয়েছে: [সিএনএল এখনও / সিএন = পুতুল সিএ: foreman.company.com এর জন্য বৈধ নয়] প্রস্থান করা হচ্ছে; শংসাপত্র পুনরুদ্ধার করতে ব্যর্থ হয়েছে এবং ওয়েটফোসার্ট অক্ষম রয়েছে
Itai Ganot

@ ইটাইগানোট ঠিক আছে / var / lib / পুতুল / এসএসএল সরানো হয়েছে। পুপেটমাস্টার থেকে সার্ট সরানো হয়েছে। আপনি কি এজেন্টটি সঠিক পুতুলের সাথে যুক্ত করতে পারেন কিনা তা পরীক্ষা করতে পারেন?
030

এটি করে: [রুট @ grb16 ~] # গ্রেপ সার্ভার /etc/puppet/puppet.conf সার্ভার = foreman.company.com
ইতাই গণট

1
তুমি সেই লোক! বোকা আমাকে, মেশিনের সময় অঞ্চল সম্পাদনা করতে ভুলে গেছি। অনেক ধন্যবাদ!
Itai Ganot

1
আমারও এই সমস্যা ছিল দেখা যাচ্ছে যে আমার আমার নোডে এনটিপি পুনঃসূচনা করার দরকার ছিল:systemctl restart ntpd
রেড ক্রিকেট

2

একই ইস্যুতে দৌড়ে গেল।

আমাদের পুতুল সেটআপটি গিটহাব ব্যবহার করে সংস্করণে নিয়ন্ত্রিত, সুতরাং আমরা যখনই কোনও নতুন পুতুলমাস্টার সরবরাহ করি তখন আমরা শংসাপত্রের সমস্যাগুলিতে চলে যাই। সাধারণত puppet ca --clean --allকাজ করে তবে আমরা নিম্নলিখিতটি আরও নির্ভরযোগ্য পেয়েছি:

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