logstash-filter-elasticsearch 3.12.0 → 3.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ecfb3d5b15acecc9b301e27f77f5170ead83708c2722db56324807e3663cc08
4
- data.tar.gz: bd8798a9f82792afb79b1be85936bdf51967dd74c91d6b45bb24b7cadec16e1b
3
+ metadata.gz: aa249a04a85198ffab82e97a53f15c8c1ce3792b0d7f737962979aaccf0b8a78
4
+ data.tar.gz: 1501f7b558ead54e7701b0048b5f1f9847d250e96ebdf4cd2875000f733ad8c0
5
5
  SHA512:
6
- metadata.gz: b76de8e2722b3b1c5cf11efd0a29cc827042e48d584215e14fb9272349bc5cb50aa04b763a52ff26800ad36f64f2c1870cab27a38dbf94776fde5a25f75a7e08
7
- data.tar.gz: 9304e6e00443b13fe5888ae62d0f9c0610cb6917cf148b21373afae460602548172a61efa4fed287e085421c7e9ef26bcebaf7a8ec1aee70a12449942b226a3e
6
+ metadata.gz: c31a11c7588de85b8bbdb922c8938946a651230080202b2442dcea5fc3ef686e499aa74b3f10df9df172713b4b007e0e3ba539b7dff838fccb33da116c3aacbf
7
+ data.tar.gz: 3bcd227e3ba31712287bb27367959b8a5e032a7e9fa5a907f1ae7018e4422db6b3275bbcb3f88d83d6d623d5f015c2ae80a66a148e2bcb3a84181a801e486640
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 3.14.0
2
+ - Added support for configurable retries with new `retry_on_failure` and `retry_on_status` options [#160](https://github.com/logstash-plugins/logstash-filter-elasticsearch/pull/160)
3
+
4
+ ## 3.13.0
5
+ - Added support for this plugin identifying itself to Elasticsearch with an SSL/TLS client certificate using a new `keystore` option [#162](https://github.com/logstash-plugins/logstash-filter-elasticsearch/pull/162)
6
+
1
7
  ## 3.12.0
2
8
  - Added support for `ca_trusted_fingerprint` when run on Logstash 8.3+ [#158](https://github.com/logstash-plugins/logstash-filter-elasticsearch/pull/158)
3
9
 
data/docs/index.asciidoc CHANGED
@@ -110,6 +110,7 @@ Authentication to a secure Elasticsearch cluster is possible using _one_ of the
110
110
  * <<plugins-{type}s-{plugin}-user>> AND <<plugins-{type}s-{plugin}-password>>
111
111
  * <<plugins-{type}s-{plugin}-cloud_auth>>
112
112
  * <<plugins-{type}s-{plugin}-api_key>>
113
+ * <<plugins-{type}s-{plugin}-keystore>> and/or <<plugins-{type}s-{plugin}-keystore_password>>
113
114
 
114
115
  [id="plugins-{type}s-{plugin}-autz"]
115
116
  ==== Authorization
@@ -141,8 +142,12 @@ This plugin supports the following configuration options plus the <<plugins-{typ
141
142
  | <<plugins-{type}s-{plugin}-query>> |<<string,string>>|No
142
143
  | <<plugins-{type}s-{plugin}-query_template>> |<<string,string>>|No
143
144
  | <<plugins-{type}s-{plugin}-result_size>> |<<number,number>>|No
145
+ | <<plugins-{type}s-{plugin}-retry_on_failure>> |<<number,number>>|No
146
+ | <<plugins-{type}s-{plugin}-result_on_status_>> |<<number,number list>>|No
144
147
  | <<plugins-{type}s-{plugin}-sort>> |<<string,string>>|No
145
148
  | <<plugins-{type}s-{plugin}-ssl>> |<<boolean,boolean>>|No
149
+ | <<plugins-{type}s-{plugin}-keystore>> |a valid filesystem path|No
150
+ | <<plugins-{type}s-{plugin}-keystore_password>> |<<password,password>>|No
146
151
  | <<plugins-{type}s-{plugin}-tag_on_failure>> |<<array,array>>|No
147
152
  | <<plugins-{type}s-{plugin}-user>> |<<string,string>>|No
148
153
  |=======================================================================
@@ -327,11 +332,30 @@ the {ref}/query-dsl.html[Elasticsearch query documentation].
327
332
  [id="plugins-{type}s-{plugin}-result_size"]
328
333
  ===== `result_size`
329
334
 
330
- * Value type is <<number,number>>
331
- * Default value is `1`
335
+ * Value type is <<number,number>>
336
+ * Default value is `1`
332
337
 
333
338
  How many results to return
334
339
 
340
+ [id="plugins-{type}s-{plugin}-retry_on_failure"]
341
+ ===== `retry_on_failure`
342
+
343
+ * Value type is <<number,number>>
344
+ * Default value is `0` (retries disabled)
345
+
346
+ How many times to retry an individual failed request.
347
+
348
+ When enabled, retry requests that result in connection errors or an HTTP status code included in <<plugins-{type}s-{plugin}-retry_on_status>>
349
+
350
+ [id="plugins-{type}s-{plugin}-retry_on_status"]
351
+ ===== `retry_on_status`
352
+
353
+ * Value type is <<number,number list>>
354
+ * Default value is an empty list `[]`
355
+
356
+ Which HTTP Status codes to consider for retries (in addition to connection errors) when using <<plugins-{type}s-{plugin}-retry_on_failure>>,
357
+
358
+
335
359
  [id="plugins-{type}s-{plugin}-sort"]
336
360
  ===== `sort`
337
361
 
@@ -348,6 +372,22 @@ Comma-delimited list of `<field>:<direction>` pairs that define the sort order
348
372
 
349
373
  SSL
350
374
 
375
+ [id="plugins-{type}s-{plugin}-keystore"]
376
+ ===== `keystore`
377
+
378
+ * Value type is <<path,path>>
379
+ * There is no default value for this setting.
380
+
381
+ The keystore used to present a certificate to the server. It can be either .jks or .p12
382
+
383
+ [id="plugins-{type}s-{plugin}-keystore_password"]
384
+ ===== `keystore_password`
385
+
386
+ * Value type is <<password,password>>
387
+ * There is no default value for this setting.
388
+
389
+ Set the keystore password
390
+
351
391
  [id="plugins-{type}s-{plugin}-tag_on_failure"]
352
392
  ===== `tag_on_failure`
353
393
 
@@ -12,6 +12,8 @@ module LogStash
12
12
 
13
13
  def initialize(logger, hosts, options = {})
14
14
  ssl = options.fetch(:ssl, false)
15
+ keystore = options.fetch(:keystore, nil)
16
+ keystore_password = options.fetch(:keystore_password, nil)
15
17
  user = options.fetch(:user, nil)
16
18
  password = options.fetch(:password, nil)
17
19
  api_key = options.fetch(:api_key, nil)
@@ -32,9 +34,23 @@ module LogStash
32
34
  # set ca_file even if ssl isn't on, since the host can be an https url
33
35
  ssl_options.update(ssl: true, ca_file: options[:ca_file]) if options[:ca_file]
34
36
  ssl_options.update(ssl: true, trust_strategy: options[:ssl_trust_strategy]) if options[:ssl_trust_strategy]
37
+ if keystore
38
+ ssl_options[:keystore] = keystore
39
+ logger.debug("Keystore for client certificate", :keystore => keystore)
40
+ ssl_options[:keystore_password] = keystore_password.value if keystore_password
41
+ end
42
+
43
+ client_options = {
44
+ hosts: hosts,
45
+ transport_class: ::Elasticsearch::Transport::Transport::HTTP::Manticore,
46
+ transport_options: transport_options,
47
+ ssl: ssl_options,
48
+ retry_on_failure: options[:retry_on_failure],
49
+ retry_on_status: options[:retry_on_status]
50
+ }
35
51
 
36
52
  logger.info("New ElasticSearch filter client", :hosts => hosts)
37
- @client = ::Elasticsearch::Client.new(hosts: hosts, transport_options: transport_options, transport_class: ::Elasticsearch::Transport::Transport::HTTP::Manticore, :ssl => ssl_options)
53
+ @client = ::Elasticsearch::Client.new(client_options)
38
54
  end
39
55
 
40
56
  def search(params)
@@ -66,6 +66,13 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
66
66
  # SSL Certificate Authority file
67
67
  config :ca_file, :validate => :path
68
68
 
69
+ # The keystore used to present a certificate to the server.
70
+ # It can be either .jks or .p12
71
+ config :keystore, :validate => :path
72
+
73
+ # Set the keystore password
74
+ config :keystore_password, :validate => :password
75
+
69
76
  # Whether results should be sorted or not
70
77
  config :enable_sort, :validate => :boolean, :default => true
71
78
 
@@ -75,6 +82,12 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
75
82
  # Tags the event on failure to look up geo information. This can be used in later analysis.
76
83
  config :tag_on_failure, :validate => :array, :default => ["_elasticsearch_lookup_failure"]
77
84
 
85
+ # How many times to retry on failure?
86
+ config :retry_on_failure, :validate => :number, :default => 0
87
+
88
+ # What status codes to retry on?
89
+ config :retry_on_status, :validate => :number, :list => true, :default => [500, 502, 503, 504]
90
+
78
91
  # config :ca_trusted_fingerprint, :validate => :sha_256_hex
79
92
  include LogStash::PluginMixins::CATrustedFingerprintSupport
80
93
 
@@ -109,6 +122,10 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
109
122
  @query_dsl = file.read
110
123
  end
111
124
 
125
+ if @keystore_password && !@keystore
126
+ fail "`keystore_password` was provided, without a `keystore`"
127
+ end
128
+
112
129
  validate_authentication
113
130
  fill_user_password_from_cloud_auth
114
131
  fill_hosts_from_cloud_id
@@ -204,6 +221,10 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
204
221
  :proxy => @proxy,
205
222
  :ssl => @ssl,
206
223
  :ca_file => @ca_file,
224
+ :retry_on_failure => @retry_on_failure,
225
+ :retry_on_status => @retry_on_status,
226
+ :keystore => @keystore,
227
+ :keystore_password => @keystore_password,
207
228
  :ssl_trust_strategy => trust_strategy_for_ca_trusted_fingerprint
208
229
  }
209
230
  end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-elasticsearch'
4
- s.version = '3.12.0'
4
+ s.version = '3.14.0'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Copies fields from previous log events in Elasticsearch to current events "
7
7
  s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
@@ -29,4 +29,3 @@ Gem::Specification.new do |s|
29
29
 
30
30
  s.add_development_dependency 'logstash-devutils'
31
31
  end
32
-
@@ -301,6 +301,15 @@ describe LogStash::Filters::Elasticsearch do
301
301
  end
302
302
  end
303
303
 
304
+ context 'with client-level retries' do
305
+ let(:config) do
306
+ super().merge(
307
+ "retry_on_failure" => 3,
308
+ "retry_on_status" => [500]
309
+ )
310
+ end
311
+ end
312
+
304
313
  context "if query is on nested field" do
305
314
  let(:config) do
306
315
  {
@@ -559,6 +568,28 @@ describe LogStash::Filters::Elasticsearch do
559
568
  end
560
569
  end
561
570
  end
571
+
572
+ describe "retry_on_failure" do
573
+ let(:config) { super().merge("retry_on_failure" => 3) }
574
+
575
+ it 'propagates to the client' do
576
+ plugin.register
577
+
578
+ client = plugin.send(:get_client).client
579
+ expect( extract_transport(client).options[:retry_on_failure] ).to eq(3)
580
+ end
581
+ end
582
+
583
+ describe "retry_on_status" do
584
+ let(:config) { super().merge("retry_on_status" => [500, 502, 503, 504]) }
585
+
586
+ it 'propagates to the client' do
587
+ plugin.register
588
+
589
+ client = plugin.send(:get_client).client
590
+ expect( extract_transport(client).options[:retry_on_status] ).to eq([500, 502, 503, 504])
591
+ end
592
+ end
562
593
  end
563
594
 
564
595
  describe "ca_trusted_fingerprint" do
@@ -593,6 +624,42 @@ describe LogStash::Filters::Elasticsearch do
593
624
  end
594
625
  end
595
626
 
627
+ describe "keystore and keystore_password" do
628
+ let(:keystore_path) { Pathname.new("fixtures/test_certs/ls.chain.p12").expand_path(__dir__).cleanpath.to_s }
629
+ let(:keystore_password) { '12345678' }
630
+
631
+ let(:config) do
632
+ {
633
+ 'keystore' => keystore_path,
634
+ 'keystore_password' => keystore_password,
635
+ }
636
+ end
637
+
638
+ subject(:plugin) { described_class.new(config) }
639
+
640
+ before(:each) { allow(plugin).to receive(:test_connection!) }
641
+
642
+ it 'is passed to the Manticore client' do
643
+ expect(Manticore::Client).to receive(:new)
644
+ .with(
645
+ a_hash_including(
646
+ ssl: a_hash_including(
647
+ keystore: keystore_path,
648
+ keystore_password: keystore_password
649
+ )
650
+ )
651
+ ).and_call_original
652
+
653
+ allow(plugin.logger).to receive(:debug).and_call_original
654
+ expect(plugin.logger).to receive(:debug).with(a_string_including('Keystore for client certificate'), anything)
655
+
656
+ plugin.register
657
+
658
+ # the client is built lazily, so we need to get it explicitly
659
+ plugin.send(:get_client).client
660
+ end
661
+ end
662
+
596
663
  describe "defaults" do
597
664
 
598
665
  let(:config) { Hash.new }
@@ -0,0 +1,47 @@
1
+ [ req ]
2
+ distinguished_name= req_distinguished_name
3
+ attributes= req_attributes
4
+
5
+ [ req_distinguished_name ]
6
+ countryName= Country Name (2 letter code)
7
+ countryName_min= 2
8
+ countryName_max= 2
9
+ stateOrProvinceName= State or Province Name (full name)
10
+ localityName= Locality Name (eg, city)
11
+ 0.organizationName= Organization Name (eg, company)
12
+ organizationalUnitName= Organizational Unit Name (eg, section)
13
+ commonName= Common Name (eg, fully qualified host name)
14
+ commonName_max= 64
15
+ emailAddress= Email Address
16
+ emailAddress_max= 64
17
+
18
+ [ req_attributes ]
19
+ challengePassword= A challenge password
20
+ challengePassword_min= 4
21
+ challengePassword_max= 20
22
+
23
+ [ certificate_authority ]
24
+ subjectKeyIdentifier = hash
25
+ authorityKeyIdentifier = keyid:always,issuer
26
+ basicConstraints = critical, CA:true
27
+ keyUsage = critical, digitalSignature, cRLSign, keyCertSign
28
+
29
+ [ elasticsearch_server ]
30
+ basicConstraints = CA:FALSE
31
+ nsCertType = server
32
+ nsComment = "OpenSSL Generated Server Certificate"
33
+ subjectKeyIdentifier = hash
34
+ authorityKeyIdentifier = keyid,issuer:always
35
+ keyUsage = critical, digitalSignature, keyEncipherment
36
+ extendedKeyUsage = serverAuth
37
+ subjectAltName = "DNS:elasticsearch"
38
+
39
+ [ logstash_client ]
40
+ basicConstraints = CA:FALSE
41
+ nsCertType = client, email
42
+ nsComment = "OpenSSL Generated Client Certificate"
43
+ subjectKeyIdentifier = hash
44
+ authorityKeyIdentifier = keyid,issuer
45
+ keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
46
+ extendedKeyUsage = clientAuth, emailProtection
47
+ subjectAltName = "DNS:logstash, DNS:localhost, IP:127.0.0.1"
@@ -0,0 +1,45 @@
1
+ # warning: do not use the certificates produced by this tool in production.
2
+ # This is for testing purposes only
3
+ set -e
4
+
5
+ script_dir="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
6
+ openssl_ext_file="${script_dir}/generate_test_certs.openssl.cnf"
7
+
8
+ rm -rf "${script_dir}/test_certs"
9
+ mkdir "${script_dir}/test_certs"
10
+ cd "${script_dir}/test_certs"
11
+
12
+ echo "GENERATED CERTIFICATES FOR TESTING ONLY." >> ./README.txt
13
+ echo "DO NOT USE THESE CERTIFICATES IN PRODUCTION" >> ./README.txt
14
+
15
+ # certificate authority
16
+ openssl genrsa -out ca.key 4096
17
+ openssl req -new -x509 -days 1826 -extensions "certificate_authority" -key "ca.key" -out "ca.crt" -subj "/C=LS/ST=NA/L=Http Input/O=Logstash/CN=root" -config "${openssl_ext_file}"
18
+ openssl x509 -in "ca.crt" -outform der | sha256sum | awk '{print $1}' > "ca.der.sha256"
19
+
20
+ # es from ca
21
+ openssl genrsa -out "es.key" 4096
22
+ openssl req -new -key "es.key" -out "es.csr" -subj "/C=LS/ST=NA/L=Http Input/O=Logstash/CN=server" -config "${openssl_ext_file}"
23
+ openssl x509 -req -extensions "elasticsearch_server" -extfile "${openssl_ext_file}" -days 1096 -in "es.csr" -CA "ca.crt" -CAkey "ca.key" -set_serial 03 -sha256 -out "es.crt"
24
+ cat "es.crt" "ca.crt" > "es.chain.crt"
25
+ openssl x509 -in "es.crt" -outform der | sha256sum | awk '{print $1}' > "es.der.sha256"
26
+
27
+ # ls from ca
28
+ openssl genrsa -out "ls.key" 4096
29
+ openssl req -new -key "ls.key" -out "ls.csr" -subj "/C=LS/ST=NA/L=Http Input/O=Logstash/CN=server" -config "${openssl_ext_file}"
30
+ openssl x509 -req -extensions "logstash_client" -extfile "${openssl_ext_file}" -days 1096 -in "ls.csr" -CA "ca.crt" -CAkey "ca.key" -set_serial 03 -sha256 -out "ls.crt"
31
+ cat "ls.crt" "ca.crt" > "ls.chain.crt"
32
+ openssl x509 -in "ls.crt" -outform der | sha256sum | awk '{print $1}' > "ls.der.sha256"
33
+
34
+ # verify :allthethings
35
+ openssl verify -CAfile "ca.crt" "es.crt"
36
+ openssl verify -CAfile "ca.crt" "ls.crt"
37
+
38
+ # create pkcs12 keystores (pass:12345678)
39
+ openssl pkcs12 -export -in "ls.chain.crt" -inkey ls.key -out "ls.chain.p12" -name "logstash" -passout 'pass:12345678'
40
+
41
+ # use java keytool to convert all pkcs12 keystores to jks-format keystores (pass:12345678)
42
+ keytool -importkeystore -srckeystore "ls.chain.p12" -srcstoretype "pkcs12" -srcstorepass "12345678" -destkeystore "ls.chain.jks" -deststorepass "12345678" -alias logstash
43
+
44
+ # cleanup csr, we don't need them
45
+ rm -rf *.csr
@@ -0,0 +1,2 @@
1
+ GENERATED CERTIFICATES FOR TESTING ONLY.
2
+ DO NOT USE THESE CERTIFICATES IN PRODUCTION
@@ -1,20 +1,32 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIDSTCCAjGgAwIBAgIUUcAg9c8B8jiliCkOEJyqoAHrmccwDQYJKoZIhvcNAQEL
3
- BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
4
- cmF0ZWQgQ0EwHhcNMjEwODEyMDUxNDU1WhcNMjQwODExMDUxNDU1WjA0MTIwMAYD
5
- VQQDEylFbGFzdGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTCC
6
- ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK1HuusRuGNsztd4EQvqwcMr
7
- 8XvnNNaalerpMOorCGySEFrNf0HxDIVMGMCrOv1F8SvlcGq3XANs2MJ4F2xhhLZr
8
- PpqVHx+QnSZ66lu5R89QVSuMh/dCMxhNBlOA/dDlvy+EJBl9H791UGy/ChhSgaBd
9
- OKVyGkhjErRTeMIq7rR7UG6GL/fV+JGy41UiLrm1KQP7/XVD9UzZfGq/hylFkTPe
10
- oox5BUxdxUdDZ2creOID+agtIYuJVIkelKPQ+ljBY3kWBRexqJQsvyNUs1gZpjpz
11
- YUCzuVcXDRuJXYQXGqWXhsBPfJv+ZcSyMIBUfWT/G13cWU1iwufPy0NjajowPZsC
12
- AwEAAaNTMFEwHQYDVR0OBBYEFMgkye5+2l+TE0I6RsXRHjGBwpBGMB8GA1UdIwQY
13
- MBaAFMgkye5+2l+TE0I6RsXRHjGBwpBGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
14
- hvcNAQELBQADggEBAIgtJW8sy5lBpzPRHkmWSS/SCZIPsABW+cHqQ3e0udrI3CLB
15
- G9n7yqAPWOBTbdqC2GM8dvAS/Twx4Bub/lWr84dFCu+t0mQq4l5kpJMVRS0KKXPL
16
- DwJbUN3oPNYy4uPn5Xi+XY3BYFce5vwJUsqIxeAbIOxVTNx++k5DFnB0ESAM23QL
17
- sgUZl7xl3/DkdO4oHj30gmTRW9bjCJ6umnHIiO3JoJatrprurUIt80vHC4Ndft36
18
- NBQ9mZpequ4RYjpSZNLcVsxyFAYwEY4g8MvH0MoMo2RRLfehmMCzXnI/Wh2qEyYz
19
- emHprBii/5y1HieKXlX9CZRb5qEPHckDVXW3znw=
2
+ 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
31
+ 4O26CUzCDyhhBy+/wiuG6Fk37YskQBCgs37Mww==
20
32
  -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ 241943c7ea305d5489fce87550f53c0655b2419dcd0e8e4c7a164abc8e82808c
@@ -1,27 +1,51 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- aPmrOc8WX/SdkVihRXRZwxAZOOrgoyyYAcYL+xI+T9EBESh3UoC9R2ibb2MYG7Ha
23
- 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
- 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
- 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
- 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
27
51
  -----END RSA PRIVATE KEY-----
@@ -0,0 +1,68 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
36
+ -----END CERTIFICATE-----
37
+ -----BEGIN CERTIFICATE-----
38
+ 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
67
+ 4O26CUzCDyhhBy+/wiuG6Fk37YskQBCgs37Mww==
68
+ -----END CERTIFICATE-----
@@ -1,20 +1,36 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIDNjCCAh6gAwIBAgIUF9wE+oqGSbm4UVn1y9gEjzyaJFswDQYJKoZIhvcNAQEL
3
- BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
4
- cmF0ZWQgQ0EwHhcNMjEwODEyMDUxNTI3WhcNMjQwODExMDUxNTI3WjANMQswCQYD
5
- VQQDEwJlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK2S2by0lgyu
6
- 1JfgGgZ41PNXbH2qMPMzowguVVdtZ16WM0CaEG7lnLxmMcC+2Q7NnGuFnPAVQo9T
7
- Q3bh7j+1PkCJVHUKZfJIeWtGc9+qXBcO1MhedfwM1osSa4bfwM85G+XKWbRNtmSt
8
- CoUuKArIyZkzdBAAQLBoQyPf3DIza1Au4j9Hb3zrswD6e7n2PN4ffIyil1GFduLJ
9
- 2275qqFiOhkEDUhv7BKNftVBh/89O/5lSqAQGuQ1aDRr8TdHwhO71u4ZIU/Pn6yX
10
- LGBWrQG53+qpdCsxGvJTfbtIEYUDTN83CirIxDKJgc1QXOEldylztHf4xnQ7ZarJ
11
- tqF6pUzHbRsCAwEAAaNnMGUwHQYDVR0OBBYEFFQUK+6Cg2kExRj1xSDzEi4kkgKX
12
- MB8GA1UdIwQYMBaAFMgkye5+2l+TE0I6RsXRHjGBwpBGMBgGA1UdEQQRMA+CDWVs
13
- YXN0aWNzZWFyY2gwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAinaknZIc
14
- 7xtQNwUwa+kdET+I4lMz+TJw9vTjGKPJqe082n81ycKU5b+a/OndG90z+dTwhShW
15
- f0oZdIe/1rDCdiRU4ceCZA4ybKrFDIbW8gOKZOx9rsgEx9XNELj4ocZTBqxjQmNE
16
- Ho91fli5aEm0EL2vJgejh4hcfDeElQ6go9gtvAHQ57XEADQSenvt69jOICOupnS+
17
- LSjDVhv/VLi3CAip0B+lD5fX/DVQdrJ62eRGuQYxoouE3saCO58qUUrKB39yD9KA
18
- qRA/sVxyLogxaU+5dLfc0NJdOqSzStxQ2vdMvAWo9tZZ2UBGFrk5SdwCQe7Yv5mX
19
- qi02i4q6meHGcw==
2
+ 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
20
36
  -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ 8fa8b9c3fb555544a031e5080719ab47b38c4d2d2c2dcbf01dd1555092da7e54
@@ -1,27 +1,51 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- fPPc5wlhAoGBAOD3z0JH2eyR/1RHILFsWInH2nDbKHHuCjhFIL2XloeXsJkiJZ95
14
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- DZOJUF+ko7cWXSZkeTIBH/jrGOdP4tTALZt6DNt+Gz7xwPO5tGgV
2
+ MIIJKQIBAAKCAgEAsET/D1QzwBLiia72AnPxCSf5AdOxsKkDIKaUJvYGI0GQcIU+
3
+ CzKzZRtyOIKLK5qSfg2+yfd1cBmHQgwvH5P4pXb8AbZVgJbFbD7mIfP494IBKwF4
4
+ GfM8hHF9gFPlqs745fqAtzDKoszs075/rVE8YvQvCGqclKW25oyvJOhXIh0K038a
5
+ nQk0RMekg001V+3bEqC26oIeaS4hj80RGCKngamLcZ8upZ5WgItLvH4s53kM23eY
6
+ djjDpOc2RWDmev4dLaV6cE3i+joBO7XBIvR3pXOyav2FV+05IiOqCiC4EZZuGCIh
7
+ 8DN7J3Y2LKtwZ/XQjpu7OdkIDJN/wP5+kZ4JM79Iih+fA1gnznHcuZVuNkh5Uxgu
8
+ NToDNW/yE9j95k1dIc9Gp/tx0FIYSM2jmoq3DSTDQ9jp7gcqnbGCMMw8IuZG7U+H
9
+ 1t0hWbYu0iIDBOMFUwi3fPLxTiIOn/zH7NU+DtgIi6Qb9Czx2ElFKBJKrGa/OBxI
10
+ le+vvMvkzsy2P/x9sa5LjXD9G/QpvG9J10KJOT6xjoqI3X4/Wfowwh51y/Wjk4Zr
11
+ 0kRjgsrkBNd3fr2ouHHPd5QBzC2W/+tM2XD51vbhCwjSmz6FstZXBwadUrBpi5UT
12
+ SMGzo9LeVPiIaD7z+fuBUD/4J9ZyOF6OjqayJ6Zf95ASGvlw3iND8UPvteMCAwEA
13
+ AQKCAgAb4s53HlsRh+tO3N8OhEkdqbU7FMKHsDVOdQv7HfDaowS2yF2IZ/z5gd4Q
14
+ EpbxzwJd7s7AJOXvVhqP2F2cIUy04J39p1rffPq+pTTDKlW40lhc9V6KvHBWg53X
15
+ L26mFxhJSdgTIyTrnH/a/8gzIybqgLbwHe2nlo/Y6WjL7fXa771GuFT9gvdB6lOc
16
+ chp+TqLZz5MghnVJLoMgvNB3gQP+/1OQJh67FNGahG724v83n27pSYJVMaXB8NIl
17
+ J69OxeTX09YK7kd6TrLjP13Oqd5DzonrYzA1ONJRFFNSRtrX7XR9XOkBlyNkms73
18
+ QigGSl00Mm7sN+mOE8eiQKDFaLsLsT0euPKSoFNhph3EEv5LrUJ5veebn3N00N7R
19
+ tMC0t4P08VX5/sTpBy9atCrJ3Ccs5k+b1jTQJoKRrvNbtmXR8FZwEbtVBkxCgfq5
20
+ LNbLUd+8bj80TimBEJwVN3Pggl6OwhysAsr3U4CdjWeSxaJh2sATnNuQy7utA1uY
21
+ XbYOZWTYC4jClWDD7o9F1p9OBggX0aqnY77UXt8R5vmjNtNk1L61MKoZ6+2yGgY9
22
+ TGwEpy8KfnpwVBddpVnJAjtQrq4jf8w1GOvI6AdTUn8cqyhycw66FHyyzPzaC8CZ
23
+ DHMysJCXBGLegBCMx1kvZ9FwgIctHuTcShg7xEskI6En3xMQAQKCAQEA6BzbgkUo
24
+ 11MLfZdtipo4CJoDq5hdrzPgpUiRK8Gs/Ax3Sp8li+jqfwohvR3JCwHvtwnGpyPo
25
+ gAVuoelT874NW6qkfViqPJ23zz6/KWS1+jdD/xEhZuMx/WwJmxF1k6l3l62kr1OF
26
+ bCLchbPXd87qTLuCtYx0zK1bjNoF6pY/QQ9IQyV30bntiCMFJVUYi3bfi5Z5V7rv
27
+ sSS3xCBxD0kRZ4S9gDWsaGzz1TMQ6TIq2wJ6nfaAbgWuZv1R8BMy8Ih57ZZmyrU2
28
+ FO613JSMT/e8Wbn2NfkmHNwHOZyfVOUTkfKsFd9NfBEbyN0GCTIJ5J9XP1+f6Tq6
29
+ OPNfQZl+wkZuMwKCAQEAwmjq6Maa06VOLSyNNW+uKWY/nL/g2XMtLbueo0yVKf1l
30
+ QG8hh0P26JOjBufXpgC+R+KFvgEft6uylDafw+lVyNLK/VwLZs2vxdIrRzyGy0wg
31
+ Ez01SodpuHVoEnnTJr1BHIRuFJxUt4apPrNJKo2/Aw2gJMek6DtypyA5PwDjnCQ0
32
+ E2zY1B418d9/C2jHRlP71Drb9DspHgG5xABDOH43+9w4aP6T7rztlXw6lMG+3jZl
33
+ yj6Gl5KXiS6ojIBLZAcJuq54qMJ8YH9mNu8kViAdj4u0G2ERBaQUfCeEVFLCaPk3
34
+ QXApaKquOnj7AAHYEUqTabfFHBAfQeZfs7U5nKaJkQKCAQEAmcGL8zaHAGQlh3OI
35
+ /7h7B8+mQMQ0wvt1g2eXqsmoImrLluXnhE+tDqySfuk9JQqKVdCnBE74E94FVEHw
36
+ 99Rcmu1l+xaB5pd/jEx/axcoqPB1HYCmhLZZhgtMLamaHk+zRgmjvvRvvJs3Q2ZH
37
+ hDjP4jaQNl0tfewUajB+nNAcZKeP8dLfFVG5tGWmYf2FvdTn7lqmVOQjJVAyXzwy
38
+ SLLZUZ6PvV9QrvgFaaRjPmaaFuwEd6EzoC4pQlXqMkM1ijqNskHgI8V4ZtNeKxlH
39
+ /S0ZWsKiA0zg31steg9zSFRa62I6dl6uwFHA+wTWm77G6OhYbkWU83WQqGsnHZhl
40
+ bKIlGwKCAQBOzkTbExbT0GB+Q18CWEEbGw2SNt2oh926eiF2RKb6nHMcyW+n6079
41
+ PEuLkxOBgS+g6Bwax03aIEmFdxcQTVeuznPmfBdLFvm3kNhmSgzCABvIcLlXesjK
42
+ Mx16z9NeEr2AF9afmDdnJbkZZ4ezLj5NuIpAHoWkdeSmBpPuDCg3tR0++pJyecSY
43
+ RWa0c0bEJWshvrJGsGycc0qgPxMApXmAKObc+MVyszcDr5X3kwoR/a8JaosYih3P
44
+ SBCe06q743Z4LB1RG3VbkIkYn5v1JZOWCqV5q8FAriB3q3Ui0WFpOAzEA/llKjry
45
+ DPSCLj0t1TMoWYwXMhnZls8Yg8/UxlVhAoIBAQDTZbWxnEV2jKcH+HJdaECMLvGH
46
+ DKnz1eYDg4F1tQzaVIv1JVqOReNHshQuee73zfe7oQ2T7ify+OuxcUaiPU19RzHR
47
+ L9JOiVxhVNH8ERNaxysQ9bPrymaXvyY2I7FN6CLBNjbSr0LqgAOwgspQI93GZWC/
48
+ CCJd5ZymH2B5lchkYSv45PEwvQ7pEiD40sKh4QHwK/qgXwS0yta7Ood/ruTRSq4m
49
+ GOkSKEYM4wU6DfsiCSKD8NYmyFyreMPIZlCenMhDWk7/Xn76uvHcuUw2kHG5UuU2
50
+ lwkSp29ifJzWRzacTJiG6rlBPuOEl/pDa70BEkXGvIz9SB6i/29Iiwmq5qiv
27
51
  -----END RSA PRIVATE KEY-----
@@ -0,0 +1,67 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIGCzCCA/OgAwIBAgIBAzANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJMUzEL
3
+ MAkGA1UECAwCTkExEzARBgNVBAcMCkh0dHAgSW5wdXQxETAPBgNVBAoMCExvZ3N0
4
+ YXNoMQ0wCwYDVQQDDARyb290MB4XDTIyMTAxNDE5MzgxMFoXDTI1MTAxNDE5Mzgx
5
+ MFowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
6
+ cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEPMA0GA1UEAwwGc2VydmVyMIICIjANBgkq
7
+ hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtD+/LdfEMEBN8JjD8AE8ZNHopz9ozvZA
8
+ BZ4QG4JWdZS0sGIYOBynL2OsEgmkEmntFiewuq5hEBXHTRF8H5vh+89jyaG3C/aP
9
+ fmAWs/es/Fy74g8/lAeNJY854KVOhjCkqXi47tmy6+M8Z9D3V+RLQgm4f0aZtZ9t
10
+ Di1SCPrrUYDZ3WFaIu7OnuK23O3mGMq5oRw1BtQMPPOObb83FiH6coCIFzj5rhHF
11
+ mVG++YN/VSkAoEZGMcfkfoK8s9MB6vgk8vy3XYz+q7mqTGVxk5LSvY/APe/bMRqz
12
+ lqmFyvT28pCcr/C+ipL7joHu+pdWJSkDz622StNrUF7BpJyhNSO4pEONRtipwgp3
13
+ 3f5UTJvEsoALgVilHUsGNo21qNtwu8op6I4lLBrw2Xm+YCCcSI5bF5u7ItJv9VIC
14
+ fMJTsr8M9FQclS47RluYXwVXWZI0gns8bUROY5z1Tsh5XajSOfuiKDQ4DR3REAwf
15
+ O5Tm0kOonariM73IjishGGmAIj1jLf3fLrtsHME1svciLEhQKtu594HSeteL3kZ5
16
+ aj2pnZD4cmly7J1XFlR83acydqVgiz6SDbU39DJOJfXa+rPjwF/OtEaydi4KN9an
17
+ yL7MDMGhYKfJBTGZI+nubQtM0JzAtVOatnCNteXJ5TNByemuUemf65AUiBzDgA79
18
+ 8wnSjQppF7cCAwEAAaOB6zCB6DAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIF
19
+ oDAzBglghkgBhvhCAQ0EJhYkT3BlblNTTCBHZW5lcmF0ZWQgQ2xpZW50IENlcnRp
20
+ ZmljYXRlMB0GA1UdDgQWBBQeetV4PXJhHdbsTceb4TGvElARYTAfBgNVHSMEGDAW
21
+ gBTDJJC8WvER4wBvj4s8mi/4KCTcPDAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYw
22
+ FAYIKwYBBQUHAwIGCCsGAQUFBwMEMCQGA1UdEQQdMBuCCGxvZ3N0YXNogglsb2Nh
23
+ bGhvc3SHBH8AAAEwDQYJKoZIhvcNAQELBQADggIBAE+TYh1qdbFSzIDQPUehAwnC
24
+ CtUOyF1hRA38UbpRzefjT/2h85LkVbD5D4tcyJIEQyBWfhuxeroJwQYVyz1vOne0
25
+ hRM9yB8wxK9pAx/ZXEJuIfCUvH7LBZABXlhiQE08Az9rm/Pj6iq2NXdukM+YNk3W
26
+ W4kfPS9i3vx+1d6UM14xUQtzLipO9BLmOeo5pD0q0gjRczYdsJF5QL/K7xfM0dus
27
+ M+2M0Q0h4YzrqFR9jZT7zgkdS0WMcIqKh/9V9XNP2Kge4XuiImqZtvFdooYiiywV
28
+ aVdB4c94zv2XFeqIix81eCI48DXC8YVgF6H62St74deHxJobIHcXtXIr7kxsi0Sa
29
+ crrIuClkz4P99v0FtrthJD5L7+5mBBC/wcuCsXwKE+XnaP5tAYE2MdBh9xEy6Ua7
30
+ XPnItLlArKqcr3i5LE8lxhktQtJvRqaQwkn30SUXh5o2aAw1lkkUvZAAp0eoOZZP
31
+ Pkn+9wO3yl8q7L+6jOH6gD0gg8PvuKk9rTVx1jTFg5MEUpWp0lWZqDnHIolEZ2SG
32
+ xXaISAkYnfaQtAXxmhLQRbQqFwq4doxPJdMs9Bz0iDc8/GCpH5X9KZ9n0RqJp5WA
33
+ xkZeJm/MoBX85yX+T9jHMSM5vldvjcjNbP9INikoN+3ZxIPcRJVq5pwq+ELzSZO5
34
+ J55nIYTq+uBxxugiPfl8
35
+ -----END CERTIFICATE-----
36
+ -----BEGIN CERTIFICATE-----
37
+ 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
66
+ 4O26CUzCDyhhBy+/wiuG6Fk37YskQBCgs37Mww==
67
+ -----END CERTIFICATE-----
@@ -0,0 +1,35 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIGCzCCA/OgAwIBAgIBAzANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJMUzEL
3
+ MAkGA1UECAwCTkExEzARBgNVBAcMCkh0dHAgSW5wdXQxETAPBgNVBAoMCExvZ3N0
4
+ YXNoMQ0wCwYDVQQDDARyb290MB4XDTIyMTAxNDE5MzgxMFoXDTI1MTAxNDE5Mzgx
5
+ MFowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
6
+ cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEPMA0GA1UEAwwGc2VydmVyMIICIjANBgkq
7
+ hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtD+/LdfEMEBN8JjD8AE8ZNHopz9ozvZA
8
+ BZ4QG4JWdZS0sGIYOBynL2OsEgmkEmntFiewuq5hEBXHTRF8H5vh+89jyaG3C/aP
9
+ fmAWs/es/Fy74g8/lAeNJY854KVOhjCkqXi47tmy6+M8Z9D3V+RLQgm4f0aZtZ9t
10
+ Di1SCPrrUYDZ3WFaIu7OnuK23O3mGMq5oRw1BtQMPPOObb83FiH6coCIFzj5rhHF
11
+ mVG++YN/VSkAoEZGMcfkfoK8s9MB6vgk8vy3XYz+q7mqTGVxk5LSvY/APe/bMRqz
12
+ lqmFyvT28pCcr/C+ipL7joHu+pdWJSkDz622StNrUF7BpJyhNSO4pEONRtipwgp3
13
+ 3f5UTJvEsoALgVilHUsGNo21qNtwu8op6I4lLBrw2Xm+YCCcSI5bF5u7ItJv9VIC
14
+ fMJTsr8M9FQclS47RluYXwVXWZI0gns8bUROY5z1Tsh5XajSOfuiKDQ4DR3REAwf
15
+ O5Tm0kOonariM73IjishGGmAIj1jLf3fLrtsHME1svciLEhQKtu594HSeteL3kZ5
16
+ aj2pnZD4cmly7J1XFlR83acydqVgiz6SDbU39DJOJfXa+rPjwF/OtEaydi4KN9an
17
+ yL7MDMGhYKfJBTGZI+nubQtM0JzAtVOatnCNteXJ5TNByemuUemf65AUiBzDgA79
18
+ 8wnSjQppF7cCAwEAAaOB6zCB6DAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIF
19
+ oDAzBglghkgBhvhCAQ0EJhYkT3BlblNTTCBHZW5lcmF0ZWQgQ2xpZW50IENlcnRp
20
+ ZmljYXRlMB0GA1UdDgQWBBQeetV4PXJhHdbsTceb4TGvElARYTAfBgNVHSMEGDAW
21
+ gBTDJJC8WvER4wBvj4s8mi/4KCTcPDAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYw
22
+ FAYIKwYBBQUHAwIGCCsGAQUFBwMEMCQGA1UdEQQdMBuCCGxvZ3N0YXNogglsb2Nh
23
+ bGhvc3SHBH8AAAEwDQYJKoZIhvcNAQELBQADggIBAE+TYh1qdbFSzIDQPUehAwnC
24
+ CtUOyF1hRA38UbpRzefjT/2h85LkVbD5D4tcyJIEQyBWfhuxeroJwQYVyz1vOne0
25
+ hRM9yB8wxK9pAx/ZXEJuIfCUvH7LBZABXlhiQE08Az9rm/Pj6iq2NXdukM+YNk3W
26
+ W4kfPS9i3vx+1d6UM14xUQtzLipO9BLmOeo5pD0q0gjRczYdsJF5QL/K7xfM0dus
27
+ M+2M0Q0h4YzrqFR9jZT7zgkdS0WMcIqKh/9V9XNP2Kge4XuiImqZtvFdooYiiywV
28
+ aVdB4c94zv2XFeqIix81eCI48DXC8YVgF6H62St74deHxJobIHcXtXIr7kxsi0Sa
29
+ crrIuClkz4P99v0FtrthJD5L7+5mBBC/wcuCsXwKE+XnaP5tAYE2MdBh9xEy6Ua7
30
+ XPnItLlArKqcr3i5LE8lxhktQtJvRqaQwkn30SUXh5o2aAw1lkkUvZAAp0eoOZZP
31
+ Pkn+9wO3yl8q7L+6jOH6gD0gg8PvuKk9rTVx1jTFg5MEUpWp0lWZqDnHIolEZ2SG
32
+ xXaISAkYnfaQtAXxmhLQRbQqFwq4doxPJdMs9Bz0iDc8/GCpH5X9KZ9n0RqJp5WA
33
+ xkZeJm/MoBX85yX+T9jHMSM5vldvjcjNbP9INikoN+3ZxIPcRJVq5pwq+ELzSZO5
34
+ J55nIYTq+uBxxugiPfl8
35
+ -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ 8475c96eb5167b9acafd5a58b920510b86582419a9b17f1116c5ba22a1478965
@@ -0,0 +1,51 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ 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
51
+ -----END RSA PRIVATE KEY-----
@@ -102,4 +102,53 @@ describe LogStash::Filters::Elasticsearch, :integration => true do
102
102
 
103
103
  end
104
104
 
105
+ if SECURE_INTEGRATION
106
+ context 'setting keystore' do
107
+ let(:keystore_path) { Pathname.new("../fixtures/test_certs/ls.chain.p12").expand_path(__dir__).cleanpath.to_s }
108
+ let(:keystore_password) { '12345678' }
109
+
110
+ let(:config) do
111
+ super().merge(
112
+ "hosts" => [ESHelper.get_host_port],
113
+ "keystore" => keystore_path,
114
+ "keystore_password" => keystore_password,
115
+ "ssl" => true,
116
+ "fields" => { "this" => "contents", "response" => "four-oh-four" }
117
+ )
118
+ end
119
+
120
+ it "should enhance the current event with new data" do
121
+ plugin.register
122
+ plugin.filter(event)
123
+ puts event.to_hash.inspect
124
+ expect(event.get('contents')).to eq('that')
125
+ expect(event.get('four-oh-four')).to eq(404)
126
+ end
127
+ end
128
+
129
+ if Gem::Version.create(LOGSTASH_VERSION) >= Gem::Version.create("8.3.0")
130
+ context 'setting ca_trusted_finterprint WITHOUT ca_file' do
131
+ let(:ca_trusted_fingerprint) { Pathname.new("../fixtures/test_certs/ca.der.sha256").expand_path(__dir__).read.chomp }
132
+
133
+ let(:config) do
134
+ bc = super()
135
+ bc.delete('ca_file')
136
+ bc.merge({
137
+ 'ca_trusted_fingerprint' => ca_trusted_fingerprint,
138
+ 'fields' => { "this" => "contents", "response" => "four-oh-four" }
139
+ })
140
+ end
141
+
142
+ it "should enhance the current event with new data" do
143
+ puts config.inspect
144
+ plugin.register
145
+ plugin.filter(event)
146
+ puts event.to_hash.inspect
147
+ expect(event.get('contents')).to eq('that')
148
+ expect(event.get('four-oh-four')).to eq(404)
149
+ end
150
+ end
151
+ end
152
+ end
153
+
105
154
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.12.0
4
+ version: 3.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-24 00:00:00.000000000 Z
11
+ date: 2023-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -136,16 +136,28 @@ files:
136
136
  - spec/es_helper.rb
137
137
  - spec/filters/elasticsearch_spec.rb
138
138
  - spec/filters/fixtures/elasticsearch_7.x_hits_total_as_object.json
139
+ - spec/filters/fixtures/generate_test_certs.openssl.cnf
140
+ - spec/filters/fixtures/generate_test_certs.sh
139
141
  - spec/filters/fixtures/query_template.json
140
142
  - spec/filters/fixtures/query_template_unicode.json
141
143
  - spec/filters/fixtures/request_error.json
142
144
  - spec/filters/fixtures/request_size0_agg.json
143
145
  - spec/filters/fixtures/request_x_1.json
144
146
  - spec/filters/fixtures/request_x_10.json
147
+ - spec/filters/fixtures/test_certs/README.txt
145
148
  - spec/filters/fixtures/test_certs/ca.crt
149
+ - spec/filters/fixtures/test_certs/ca.der.sha256
146
150
  - spec/filters/fixtures/test_certs/ca.key
151
+ - spec/filters/fixtures/test_certs/es.chain.crt
147
152
  - spec/filters/fixtures/test_certs/es.crt
153
+ - spec/filters/fixtures/test_certs/es.der.sha256
148
154
  - spec/filters/fixtures/test_certs/es.key
155
+ - spec/filters/fixtures/test_certs/ls.chain.crt
156
+ - spec/filters/fixtures/test_certs/ls.chain.jks
157
+ - spec/filters/fixtures/test_certs/ls.chain.p12
158
+ - spec/filters/fixtures/test_certs/ls.crt
159
+ - spec/filters/fixtures/test_certs/ls.der.sha256
160
+ - spec/filters/fixtures/test_certs/ls.key
149
161
  - spec/filters/integration/elasticsearch_spec.rb
150
162
  homepage: http://www.elastic.co/guide/en/logstash/current/index.html
151
163
  licenses:
@@ -176,14 +188,26 @@ test_files:
176
188
  - spec/es_helper.rb
177
189
  - spec/filters/elasticsearch_spec.rb
178
190
  - spec/filters/fixtures/elasticsearch_7.x_hits_total_as_object.json
191
+ - spec/filters/fixtures/generate_test_certs.openssl.cnf
192
+ - spec/filters/fixtures/generate_test_certs.sh
179
193
  - spec/filters/fixtures/query_template.json
180
194
  - spec/filters/fixtures/query_template_unicode.json
181
195
  - spec/filters/fixtures/request_error.json
182
196
  - spec/filters/fixtures/request_size0_agg.json
183
197
  - spec/filters/fixtures/request_x_1.json
184
198
  - spec/filters/fixtures/request_x_10.json
199
+ - spec/filters/fixtures/test_certs/README.txt
185
200
  - spec/filters/fixtures/test_certs/ca.crt
201
+ - spec/filters/fixtures/test_certs/ca.der.sha256
186
202
  - spec/filters/fixtures/test_certs/ca.key
203
+ - spec/filters/fixtures/test_certs/es.chain.crt
187
204
  - spec/filters/fixtures/test_certs/es.crt
205
+ - spec/filters/fixtures/test_certs/es.der.sha256
188
206
  - spec/filters/fixtures/test_certs/es.key
207
+ - spec/filters/fixtures/test_certs/ls.chain.crt
208
+ - spec/filters/fixtures/test_certs/ls.chain.jks
209
+ - spec/filters/fixtures/test_certs/ls.chain.p12
210
+ - spec/filters/fixtures/test_certs/ls.crt
211
+ - spec/filters/fixtures/test_certs/ls.der.sha256
212
+ - spec/filters/fixtures/test_certs/ls.key
189
213
  - spec/filters/integration/elasticsearch_spec.rb