logstash-output-elasticsearch 11.4.1-java → 11.7.0-java

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: c1ce0504aa5082dc3fc958b72019f243c6cad0174bb883612c25eb5d7f8aedfe
4
- data.tar.gz: 4d28c34d89b5a70a02c10ebd3b8d425111d3902bc58fb9e428acadee4a471646
3
+ metadata.gz: 0002c4b7258cc2493f3ab5e1ddadf6dc3f3e6d51c3585af9c93f9d9a578cf01f
4
+ data.tar.gz: 1f4b7e4587ee5831ac32f499dba2e73324f5b00578db20369b46e2b53b0fa874
5
5
  SHA512:
6
- metadata.gz: d1d0680cf639e01b6c2a2a3b8eb87a2ad525764d006fb3cbfadc06c845925d9f1055075265d7327794e326b1a9df67308d85ebefafb38297bd2121499ecc2279
7
- data.tar.gz: 285bafc2ffa2ae726bdafdb3176c193c7cd20979625e59cd7526445ae5243137e6dad37cc64208bb3494fc45afe44d913f7b7b4188fcf6b25faf1e9fb6a04d06
6
+ metadata.gz: a45147a1fc1f7d73bae911f05417d36150796edae9bd7622c11dbeb35bebbc938c3eddc7d7f65652743dfe94425ba4b1cc6905eaae4390116e2fa19d5c1f4be3
7
+ data.tar.gz: 2ad8fec97436ac571436407711793d8a97055f7a2fbe986ce9f75417d0ce414a01467c900c47c08e1caa7eb6ffd7884edcabedb12b3684c5b40ed543c040fc21
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 11.7.0
2
+ - Feature: deprecates the `failure_type_logging_whitelist` configuration option, renaming it `silence_errors_in_log` [#1068](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1068)
3
+
4
+ ## 11.6.0
5
+ - Added support for `ca_trusted_fingerprint` when run on Logstash 8.3+ [#1074](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1074)
6
+
7
+ ## 11.5.0
8
+ - Feat: add ssl_supported_protocols option [#1055](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1055)
9
+
10
+ ## 11.4.2
11
+ - [DOC] Add `v8` to supported values for ecs_compatiblity defaults [#1059](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1059)
12
+
1
13
  ## 11.4.1
2
14
  - Feat: upgrade manticore (http-client) library [#1063](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1063)
3
15
  - the underlying changes include latest HttpClient (4.5.13)
data/docs/index.asciidoc CHANGED
@@ -307,6 +307,7 @@ This plugin supports the following configuration options plus the
307
307
  | <<plugins-{type}s-{plugin}-api_key>> |<<password,password>>|No
308
308
  | <<plugins-{type}s-{plugin}-bulk_path>> |<<string,string>>|No
309
309
  | <<plugins-{type}s-{plugin}-cacert>> |a valid filesystem path|No
310
+ | <<plugins-{type}s-{plugin}-ca_trusted_fingerprint>> |<<string,string>>|No
310
311
  | <<plugins-{type}s-{plugin}-cloud_auth>> |<<password,password>>|No
311
312
  | <<plugins-{type}s-{plugin}-cloud_id>> |<<string,string>>|No
312
313
  | <<plugins-{type}s-{plugin}-custom_headers>> |<<hash,hash>>|No
@@ -331,6 +332,7 @@ This plugin supports the following configuration options plus the
331
332
  | <<plugins-{type}s-{plugin}-index>> |<<string,string>>|No
332
333
  | <<plugins-{type}s-{plugin}-keystore>> |a valid filesystem path|No
333
334
  | <<plugins-{type}s-{plugin}-keystore_password>> |<<password,password>>|No
335
+ | <<plugins-{type}s-{plugin}-silence_errors_in_log>> |<<array,array>>|No
334
336
  | <<plugins-{type}s-{plugin}-manage_template>> |<<boolean,boolean>>|No
335
337
  | <<plugins-{type}s-{plugin}-parameters>> |<<hash,hash>>|No
336
338
  | <<plugins-{type}s-{plugin}-parent>> |<<string,string>>|No
@@ -355,6 +357,7 @@ This plugin supports the following configuration options plus the
355
357
  | <<plugins-{type}s-{plugin}-sniffing_path>> |<<string,string>>|No
356
358
  | <<plugins-{type}s-{plugin}-ssl>> |<<boolean,boolean>>|No
357
359
  | <<plugins-{type}s-{plugin}-ssl_certificate_verification>> |<<boolean,boolean>>|No
360
+ | <<plugins-{type}s-{plugin}-ssl_supported_protocols>> |<<string,string>>|No
358
361
  | <<plugins-{type}s-{plugin}-template>> |a valid filesystem path|No
359
362
  | <<plugins-{type}s-{plugin}-template_name>> |<<string,string>>|No
360
363
  | <<plugins-{type}s-{plugin}-template_overwrite>> |<<boolean,boolean>>|No
@@ -421,6 +424,15 @@ this defaults to a concatenation of the path parameter and "_bulk"
421
424
 
422
425
  The .cer or .pem file to validate the server's certificate.
423
426
 
427
+ [id="plugins-{type}s-{plugin}-ca_trusted_fingerprint"]
428
+ ===== `ca_trusted_fingerprint`
429
+
430
+ * Value type is <<string,string>>, and must contain exactly 64 hexadecimal characters.
431
+ * There is no default value for this setting.
432
+ * Use of this option _requires_ Logstash 8.3+
433
+
434
+ The SHA-256 fingerprint of an SSL Certificate Authority to trust, such as the autogenerated self-signed CA for an Elasticsearch cluster.
435
+
424
436
  [id="plugins-{type}s-{plugin}-cloud_auth"]
425
437
  ===== `cloud_auth`
426
438
 
@@ -554,7 +566,7 @@ If you don't set a value for this option:
554
566
  * Value type is <<string,string>>
555
567
  * Supported values are:
556
568
  ** `disabled`: does not provide ECS-compatible templates
557
- ** `v1`: provides defaults that are compatible with v1 of the Elastic Common Schema
569
+ ** `v1`,`v8`: Elastic Common Schema-compliant behavior
558
570
  * Default value depends on which version of Logstash is running:
559
571
  ** When Logstash provides a `pipeline.ecs_compatibility` setting, its value is used as the default
560
572
  ** Otherwise, the default value is `disabled`.
@@ -573,9 +585,7 @@ of this setting affects the _default_ values of:
573
585
  * Value type is <<array,array>>
574
586
  * Default value is `[]`
575
587
 
576
- Set the Elasticsearch errors in the whitelist that you don't want to log.
577
- A useful example is when you want to skip all 409 errors
578
- which are `document_already_exists_exception`.
588
+ NOTE: Deprecated, refer to <<plugins-{type}s-{plugin}-silence_errors_in_log>>.
579
589
 
580
590
  [id="plugins-{type}s-{plugin}-custom_headers"]
581
591
  ===== `custom_headers`
@@ -732,8 +742,7 @@ Indexes may not contain uppercase characters.
732
742
  For weekly indexes ISO 8601 format is recommended, eg. logstash-%{+xxxx.ww}.
733
743
  Logstash uses
734
744
  http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html[Joda
735
- formats] for the index pattern from event timestamp.
736
-
745
+ formats] and the `@timestamp` field of each event is being used as source for the date.
737
746
 
738
747
  [id="plugins-{type}s-{plugin}-keystore"]
739
748
  ===== `keystore`
@@ -952,6 +961,25 @@ Set variable name passed to script (scripted update)
952
961
 
953
962
  if enabled, script is in charge of creating non-existent document (scripted update)
954
963
 
964
+ [id="plugins-{type}s-{plugin}-silence_errors_in_log"]
965
+ ===== `silence_errors_in_log`
966
+
967
+ * Value type is <<array,array>>
968
+ * Default value is `[]`
969
+
970
+ Defines the list of Elasticsearch errors that you don't want to log.
971
+ A useful example is when you want to skip all 409 errors
972
+ which are `document_already_exists_exception`.
973
+
974
+ [source,ruby]
975
+ output {
976
+ elasticsearch {
977
+ silence_errors_in_log => ["document_already_exists_exception"]
978
+ }
979
+ }
980
+
981
+ NOTE: Deprecates <<plugins-{type}s-{plugin}-failure_type_logging_whitelist>>.
982
+
955
983
  [id="plugins-{type}s-{plugin}-sniffing"]
956
984
  ===== `sniffing`
957
985
 
@@ -1004,6 +1032,23 @@ Option to validate the server's certificate. Disabling this severely compromises
1004
1032
  For more information on disabling certificate verification please read
1005
1033
  https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
1006
1034
 
1035
+ [id="plugins-{type}s-{plugin}-ssl_supported_protocols"]
1036
+ ===== `ssl_supported_protocols`
1037
+
1038
+ * Value type is <<string,string>>
1039
+ * Allowed values are: `'TLSv1.1'`, `'TLSv1.2'`, `'TLSv1.3'`
1040
+ * Default depends on the JDK being used. With up-to-date Logstash, the default is `['TLSv1.2', 'TLSv1.3']`.
1041
+ `'TLSv1.1'` is not considered secure and is only provided for legacy applications.
1042
+
1043
+ List of allowed SSL/TLS versions to use when establishing a connection to the Elasticsearch cluster.
1044
+
1045
+ For Java 8 `'TLSv1.3'` is supported only since **8u262** (AdoptOpenJDK), but requires that you set the
1046
+ `LS_JAVA_OPTS="-Djdk.tls.client.protocols=TLSv1.3"` system property in Logstash.
1047
+
1048
+ NOTE: If you configure the plugin to use `'TLSv1.1'` on any recent JVM, such as the one packaged with Logstash,
1049
+ the protocol is disabled by default and needs to be enabled manually by changing `jdk.tls.disabledAlgorithms` in
1050
+ the *$JDK_HOME/conf/security/java.security* configuration file. That is, `TLSv1.1` needs to be removed from the list.
1051
+
1007
1052
  [id="plugins-{type}s-{plugin}-template"]
1008
1053
  ===== `template`
1009
1054
 
@@ -1018,8 +1063,8 @@ If not set, the included template will be used.
1018
1063
 
1019
1064
  * Value type is <<string,string>>
1020
1065
  * Default value depends on whether <<plugins-{type}s-{plugin}-ecs_compatibility>> is enabled:
1021
- ** ECS Compatibility disabled: `logstash`
1022
- ** ECS Compatibility enabled: `ecs-logstash`
1066
+ ** ECS Compatibility disabled: `logstash`
1067
+ ** ECS Compatibility enabled: `ecs-logstash`
1023
1068
 
1024
1069
 
1025
1070
  This configuration option defines how the template is named inside Elasticsearch.
@@ -283,11 +283,11 @@ module LogStash; module Outputs; class ElasticSearch;
283
283
  end
284
284
 
285
285
  def client_settings
286
- @options[:client_settings] || {}
286
+ @_client_settings ||= @options[:client_settings] || {}
287
287
  end
288
288
 
289
289
  def ssl_options
290
- client_settings.fetch(:ssl, {})
290
+ @_ssl_options ||= client_settings.fetch(:ssl, {})
291
291
  end
292
292
 
293
293
  def http_compression
@@ -132,11 +132,18 @@ module LogStash; module Outputs; class ElasticSearch;
132
132
  ssl_options[:keystore] = keystore
133
133
  ssl_options[:keystore_password] = keystore_password.value if keystore_password
134
134
  end
135
+
135
136
  if !params["ssl_certificate_verification"]
136
137
  logger.warn "You have enabled encryption but DISABLED certificate verification, " +
137
138
  "to make sure your data is secure remove `ssl_certificate_verification => false`"
138
139
  ssl_options[:verify] = :disable # false accepts self-signed but still validates hostname
139
140
  end
141
+
142
+ ssl_options[:trust_strategy] = params["ssl_trust_strategy"] if params.include?("ssl_trust_strategy")
143
+
144
+ protocols = params['ssl_supported_protocols']
145
+ ssl_options[:protocols] = protocols if protocols && protocols.any?
146
+
140
147
  { ssl: ssl_options }
141
148
  end
142
149
 
@@ -4,7 +4,7 @@
4
4
  ],
5
5
  "mappings": {
6
6
  "_meta": {
7
- "version": "8.0.0-dev"
7
+ "version": "8.0.1"
8
8
  },
9
9
  "date_detection": false,
10
10
  "dynamic_templates": [
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "mappings": {
17
17
  "_meta": {
18
- "version": "8.0.0-dev"
18
+ "version": "8.0.1"
19
19
  },
20
20
  "date_detection": false,
21
21
  "dynamic_templates": [
@@ -266,6 +266,14 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
266
266
  end
267
267
 
268
268
  def register
269
+ if !failure_type_logging_whitelist.empty?
270
+ log_message = "'failure_type_logging_whitelist' is deprecated and in a future version of Elasticsearch " +
271
+ "output plugin will be removed, please use 'silence_errors_in_log' instead."
272
+ @deprecation_logger.deprecated log_message
273
+ @logger.warn log_message
274
+ @silence_errors_in_log = silence_errors_in_log | failure_type_logging_whitelist
275
+ end
276
+
269
277
  @after_successful_connection_done = Concurrent::AtomicBoolean.new(false)
270
278
  @stopping = Concurrent::AtomicBoolean.new(false)
271
279
 
@@ -1,3 +1,6 @@
1
+
2
+ require 'logstash/plugin_mixins/ca_trusted_fingerprint_support'
3
+
1
4
  module LogStash; module PluginMixins; module ElasticSearch
2
5
  module APIConfigs
3
6
 
@@ -52,6 +55,9 @@ module LogStash; module PluginMixins; module ElasticSearch
52
55
  # The .cer or .pem file to validate the server's certificate
53
56
  :cacert => { :validate => :path },
54
57
 
58
+ # One or more hex-encoded SHA256 fingerprints to trust as Certificate Authorities
59
+ :ca_trusted_fingerprint => LogStash::PluginMixins::CATrustedFingerprintSupport,
60
+
55
61
  # The JKS truststore to validate the server's certificate.
56
62
  # Use either `:truststore` or `:cacert`
57
63
  :truststore => { :validate => :path },
@@ -66,6 +72,8 @@ module LogStash; module PluginMixins; module ElasticSearch
66
72
  # Set the keystore password
67
73
  :keystore_password => { :validate => :password },
68
74
 
75
+ :ssl_supported_protocols => { :validate => ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], :default => [], :list => true },
76
+
69
77
  # This setting asks Elasticsearch for the list of all cluster nodes and adds them to the hosts list.
70
78
  # Note: This will return ALL nodes with HTTP enabled (including master nodes!). If you use
71
79
  # this with master nodes, you probably want to disable HTTP on them by setting
@@ -91,10 +99,14 @@ module LogStash; module PluginMixins; module ElasticSearch
91
99
  # a timeout occurs, the request will be retried.
92
100
  :timeout => { :validate => :number, :default => 60 },
93
101
 
94
- # Set the Elasticsearch errors in the whitelist that you don't want to log.
102
+ # Deprecated, refer to `silence_errors_in_log`.
103
+ :failure_type_logging_whitelist => { :validate => :array, :default => [] },
104
+
105
+ # Defines the list of Elasticsearch errors that you don't want to log.
95
106
  # A useful example is when you want to skip all 409 errors
96
107
  # which are `document_already_exists_exception`.
97
- :failure_type_logging_whitelist => { :validate => :array, :default => [] },
108
+ # Deprecates `failure_type_logging_whitelist`.
109
+ :silence_errors_in_log => { :validate => :array, :default => [] },
98
110
 
99
111
  # While the output tries to reuse connections efficiently we have a maximum.
100
112
  # This sets the maximum number of open connections the output will create.
@@ -161,7 +173,13 @@ module LogStash; module PluginMixins; module ElasticSearch
161
173
  }.freeze
162
174
 
163
175
  def self.included(base)
164
- CONFIG_PARAMS.each { |name, opts| base.config(name, opts) }
176
+ CONFIG_PARAMS.each do |name, opts|
177
+ if opts.kind_of?(Module)
178
+ base.include(opts)
179
+ else
180
+ base.config(name, opts)
181
+ end
182
+ end
165
183
  end
166
184
  end
167
185
  end; end; end
@@ -27,6 +27,11 @@ module LogStash; module PluginMixins; module ElasticSearch
27
27
  fill_hosts_from_cloud_id
28
28
  setup_hosts
29
29
 
30
+ # inject the TrustStrategy from CATrustedFingerprintSupport
31
+ if trust_strategy_for_ca_trusted_fingerprint
32
+ params["ssl_trust_strategy"] = trust_strategy_for_ca_trusted_fingerprint
33
+ end
34
+
30
35
  params["metric"] = metric
31
36
  if @proxy.eql?('')
32
37
  @logger.warn "Supplied proxy setting (proxy => '') has no effect"
@@ -165,7 +170,7 @@ module LogStash; module PluginMixins; module ElasticSearch
165
170
 
166
171
  sleep_interval = @retry_initial_interval
167
172
 
168
- while submit_actions && submit_actions.length > 0
173
+ while submit_actions && submit_actions.size > 0
169
174
 
170
175
  # We retry with whatever is didn't succeed
171
176
  begin
@@ -279,7 +284,7 @@ module LogStash; module PluginMixins; module ElasticSearch
279
284
  end
280
285
 
281
286
  def log_failure_type?(failure)
282
- !failure_type_logging_whitelist.include?(failure["type"])
287
+ !silence_errors_in_log.include?(failure["type"])
283
288
  end
284
289
 
285
290
  # Rescue retryable errors during bulk submission
@@ -1,7 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-output-elasticsearch'
3
- s.version = '11.4.1'
4
-
3
+ s.version = '11.7.0'
5
4
  s.licenses = ['apache-2.0']
6
5
  s.summary = "Stores logs in Elasticsearch"
7
6
  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"
@@ -26,6 +25,7 @@ Gem::Specification.new do |s|
26
25
  s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
27
26
  s.add_runtime_dependency 'logstash-mixin-ecs_compatibility_support', '~>1.0'
28
27
  s.add_runtime_dependency 'logstash-mixin-deprecation_logger_support', '~>1.0'
28
+ s.add_runtime_dependency 'logstash-mixin-ca_trusted_fingerprint_support', '~>1.0'
29
29
 
30
30
  s.add_development_dependency 'logstash-codec-plain'
31
31
  s.add_development_dependency 'logstash-devutils'
@@ -1,32 +1,29 @@
1
1
  -----BEGIN CERTIFICATE-----
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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
- gnZ958+gvcOt7Q/sOEvcDQJgkzZ+Gywh5er5JF2iomYOHiD5JncYr4YmRQKuYfD6
9
- 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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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
- UjCbgn0RABojRoGdhhY3QDipgwmSgFZxr064RFr1bt/Ml3MJmPf535mSwPdk/j/z
17
- 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
- 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
- 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
- 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
- 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
- 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
- MVS0n+r3bzdFTgGnvsmxmPHe2bUhyXXqzQIx3ObSGtuKYUu7aZEysEtJhaR+vGTd
24
- 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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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
31
- nIg9fQPvVw+fIHACZQ==
2
+ MIIFDDCCAvQCAQEwDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UEBhMCUFQxCzAJBgNV
3
+ BAgMAk5BMQ8wDQYDVQQHDAZMaXNib24xDjAMBgNVBAoMBU15TGFiMQ8wDQYDVQQD
4
+ DAZSb290Q0EwHhcNMjIwNTIzMTcyODU1WhcNMjMwNTIzMTcyODU1WjBMMQswCQYD
5
+ VQQGEwJQVDELMAkGA1UECAwCTkExDzANBgNVBAcMBkxpc2JvbjEOMAwGA1UECgwF
6
+ TXlMYWIxDzANBgNVBAMMBlJvb3RDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
7
+ AgoCggIBAMtTMqAWuH17b9XqPa5L3HNqgnZ958+gvcOt7Q/sOEvcDQJgkzZ+Gywh
8
+ 5er5JF2iomYOHiD5JncYr4YmRQKuYfD6B1WI5FuQthD/OlA1/RHqtbY27J33SaO6
9
+ 6ro8gal7vjHrXKQkefVYRwdfO6DqqbhV6L4sMiy8FzQ55TMpoM35cWuvoAMxvSQq
10
+ GZ4pYYKnfNSGhzHvssfNS1xu/Lwb7Vju4jPhp+43BkGwEimI5km7jNC1nwjiHtxD
11
+ sY/s93AKa/vLktXKUK5nA3jjJOhAbRTVnbOAgxFt0YbX98xW/aUqscgBUVs9J/My
12
+ TRMwVKJ7Vsmth1PdJQksUASuzESlSPl09dMjTQ+MXzJDt0JvX8SIJPmbBng78MSa
13
+ CUhpOZiii1l2mBfPWejx20I/SMCUNmzbwm2w9JD50Jv2iX4l4ge4H1CIK1/orW1p
14
+ dY9xPL0uKYm6ADsDC0B8sGgNMBXeB6aLojY1/ITwmmfpfk9c/yWPfC7stHgCYRAv
15
+ 5MfGAsmv0/ya5VrWQGBJkFiYy1pon6nxUjCbgn0RABojRoGdhhY3QDipgwmSgFZx
16
+ r064RFr1bt/Ml3MJmPf535mSwPdk/j/zw4IZTvlmwKW3FyMDhwYL/zX7J0c6MzMP
17
+ LEdi73Qjzmr3ENIrir4O86wNz81YRfYkg9ZX8yKJK9LBAUrYCjJ3AgMBAAEwDQYJ
18
+ KoZIhvcNAQEFBQADggIBAAGUkKT6GwoOOqPT7/FTdjU7h6q2vAaevd/TbYOBjhMw
19
+ XNVpmuIE/r9mXF5lR1MuMebUXIWrrthXeX0TqucQzsJI+pCNugQP0HyUNF83S4l9
20
+ G/0xvL2iYx7ftkMtje/NNiCUMpaXxulHi94fx4Kbivihlga6f8OF4+wNmIatb5bp
21
+ SnLE/CsE3vLrwPZgcROXhKy8ESAI4mLclOn86nOXbIunFRNxFHis/dQOxX+CfkPp
22
+ CDJv10jiaG9HCcGppNzDfxP0+v67RU2zTsCktEIILYBGTBBi5jczbtbtM0L/VCIA
23
+ AoJTGWkKtPUesAuthPaHsOAXUSnNYakf4PEyJF6g9mIiFyeosGNhgNcA6coKsX+6
24
+ pzS2pr+X2TiuNMGTCayFFIDpLvr99pPbf1yq2IBkEn09uZHLS/xyDxYtNaJAhbUh
25
+ JuszjjjfHDHVTnDykyIoTzfeLICFKoMRL0rUedljqYuI0QAic6rgn68dkfYK8zzy
26
+ IjRK5wZ4rM94xcEQfJSDxusJSPlCPTN4oe6A5HCaHe4GKYihiGKlOMGWkCxwYVa5
27
+ nl88TNh2xG6y+ZZMQDQJdRBwmJ/i+rDRTxHGuemQka5bZH8PRZGBYUiIRVS7N8px
28
+ Y1ITp+FdSlJAm41UGChuF8Our31AqZYvLNRWAvLJRhR/kNM9HMeURz7zI/KKYhlA
32
29
  -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ 3e1c908fb2d7f1634643bb75462119c55a7cc392cd1877dd91d9f15f87e86757
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+ cd "$(dirname "$0")"
5
+
6
+ openssl x509 -x509toreq -in ca.crt -signkey ca.key -out ca.csr
7
+ openssl x509 -req -days 365 -in ca.csr -set_serial 0x01 -signkey ca.key -out ca.crt && rm ca.csr
8
+ openssl x509 -in ca.crt -outform der | sha256sum | awk '{print $1}' > ca.der.sha256
9
+
10
+ openssl x509 -x509toreq -in test.crt -signkey test.key -out test.csr
11
+ openssl x509 -req -days 365 -in test.csr -set_serial 0x01 -CA ca.crt -CAkey ca.key -out test.crt && rm test.csr
12
+ openssl x509 -in test.crt -outform der | sha256sum | awk '{print $1}' > test.der.sha256
13
+ openssl pkcs12 -export -inkey test.key -in test.crt -passout "pass:1234567890" -out test.p12
@@ -1,36 +1,30 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- CzAJBgNVBAYTAlBUMQswCQYDVQQIDAJOQTEPMA0GA1UEBwwGTGlzYm9uMQ4wDAYD
6
- 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
- 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
- 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
- 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
- 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
- /tiVVjImmQiVB3dE9fMR/pVJiO2v0COnWuG+/brXWrQIHk0AuD8pHc6Iw9iZODkc
12
- Ao53B41qbvqcbdXFN5XfL4tb+lkBuLioCX7j9zR44awvuj9hKfuqFOFTUBZL2RjV
13
- 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
- 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
- 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
- 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
- 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
- 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
- BglghkgBhvhCAQ0EJhYkT3BlblNTTCBHZW5lcmF0ZWQgU2VydmVyIENlcnRpZmlj
20
- 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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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
- Z+NUtv8E332S46RdfneHe961SlMXEFC96I+1HOjXHdXlqKfOU8Qvy8VzsnpjuNE5
34
- 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
35
- FKbYFqzgpWksa+zZ2RYYplUAxq0wYw==
2
+ MIIFEzCCAvsCAQEwDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UEBhMCUFQxCzAJBgNV
3
+ BAgMAk5BMQ8wDQYDVQQHDAZMaXNib24xDjAMBgNVBAoMBU15TGFiMQ8wDQYDVQQD
4
+ DAZSb290Q0EwHhcNMjIwNTIzMTcyODU1WhcNMjMwNTIzMTcyODU1WjBTMQswCQYD
5
+ VQQGEwJQVDELMAkGA1UECAwCTkExDzANBgNVBAcMBkxpc2JvbjEOMAwGA1UECgwF
6
+ TXlMYWIxFjAUBgNVBAMMDWVsYXN0aWNzZWFyY2gwggIiMA0GCSqGSIb3DQEBAQUA
7
+ A4ICDwAwggIKAoICAQDGIT9szzhN5HvZ2nivnCDzVfdYbbqBhgEbPppWPyFcV0r2
8
+ rtmWfeK5EEdsTS/Ey4owTceOplPpAp4svF+a/i1/bHhqnQYYU4f7Qic4fDAszLdi
9
+ SIo0o1csNvIogm/P+uvSzE6eZRZUSmo49dY5SKSJt6Pjh6lM2MHEjsPKIKdAN57w
10
+ EN90q4IZv6AHE9rphqxcmF1k+j5xmhCUS1EJ+y7hyZ0S7Hghdgp/0cxSu/7YlVYy
11
+ JpkIlQd3RPXzEf6VSYjtr9Ajp1rhvv2611q0CB5NALg/KR3OiMPYmTg5HAKOdweN
12
+ am76nG3VxTeV3y+LW/pZAbi4qAl+4/c0eOGsL7o/YSn7qhThU1AWS9kY1WxTCrKR
13
+ h58rUGRfmvpnOR99xvR4jz942RNiY61pTmsvo+iJspTII3GZhwIGlHtxE9Rn50lW
14
+ QcDuDDHfObWhzb4rS55BERIwDUqD1LgCRd0ikRxPSvI1AM4cl35b4DTaDLcnM6EO
15
+ fy+QTYsgNoftU1PI1onDQ7ZdfgrTrIBFQQRwOqfyB4bB2zWVj62LSDvZoYYicNUe
16
+ cqyE1542WNKzmyE8Mrf3uknN2J6EH7EhmiyRBtGg3NEQCwIYM4/kWPNPOtkSjsn3
17
+ cNbMNUZiSnQn/nTs4T8g6b2rrwsay/FGUE83AbPqqcTlp2RUVnjbC8KA5+iV1wID
18
+ AQABMA0GCSqGSIb3DQEBBQUAA4ICAQAhg0y7SfTv2RIcU8tsvSGOpXM6KPx111eJ
19
+ pWrJTEZBCieCUhkonmlUifZHjV6B4d1OiS3GBXP0iAWff3Pb40co8AR4Brhne7Bd
20
+ xkD8TKReJ/sfeKDsr3enLxFrmcxWCD5x9b6ybl7aotzP1S286rPpehE3QKJM3L1Z
21
+ tRZik7pE3Iju4PpnvfaOAoJup9+v9Y6ySMKcMY19b/izM9VPwF+hllFQ31bibCRz
22
+ Mqa1o9k27e1MQEH7LpGcUBY18fofb2Ie3Y+wzfXm/xG/JrXxgRD/rpyBapCM6jcZ
23
+ C11mj2st+0/9pj4trhq39fj7f3+GWvOY2kZj9x/05gXcFmeaVOnZr/njcQfLd9K7
24
+ 2WD1tgr4fTgG8H3UOUMfw5u+pGfAeky1mgHwkjNT6H9PDtoi3lh4y/CmspSSv6t7
25
+ szbaKZUsxXz49hLt8q4IrtHrzqVa3Jk5YXt3GAFlXP1ZnwV5/fvltFNrvpWeUjTn
26
+ IR9CLcYTV9gsLVq7OKFAwelBmcBbbyRoQdqFeoePhv6Frw9mDBoyYoZ8oMmg20to
27
+ in9VrxtbDjw9qaSY58kGNj1cKV5eUnKOi9v0gDjrVyKVuesnDeOmoi25/YvBbBA5
28
+ TKgMUwSmJ2P5p6W4h0ftV/Nyy1Hx/rwJ7ZcvUJCtwgCNOeXw9e61Ys+C2ruLSPuh
29
+ wRncxHmbiw==
36
30
  -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ dca380f330bdf3d4b242b3c48d541c4698eaffa0d532316b27e6080443e601b5
Binary file
@@ -60,26 +60,63 @@ describe "indexing" do
60
60
 
61
61
  let(:curl_opts) { nil }
62
62
 
63
+ let(:es_admin) { 'admin' } # default user added in ES -> 8.x requires auth credentials for /_refresh etc
64
+ let(:es_admin_pass) { 'elastic' }
65
+
63
66
  def curl_and_get_json_response(url, method: :get); require 'open3'
67
+ cmd = "curl -s -v --show-error #{curl_opts} -X #{method.to_s.upcase} -k #{url}"
64
68
  begin
65
- stdout, status = Open3.capture2("curl #{curl_opts} -X #{method.to_s.upcase} -k #{url}")
69
+ out, err, status = Open3.capture3(cmd)
66
70
  rescue Errno::ENOENT
67
71
  fail "curl not available, make sure curl binary is installed and available on $PATH"
68
72
  end
69
73
 
70
74
  if status.success?
71
- LogStash::Json.load(stdout)
75
+ http_status = err.match(/< HTTP\/1.1 (\d+)/)[1] || '0' # < HTTP/1.1 200 OK\r\n
76
+
77
+ if http_status.strip[0].to_i > 2
78
+ error = (LogStash::Json.load(out)['error']) rescue nil
79
+ if error
80
+ fail "#{cmd.inspect} received an error: #{http_status}\n\n#{error.inspect}"
81
+ else
82
+ warn out
83
+ fail "#{cmd.inspect} unexpected response: #{http_status}\n\n#{err}"
84
+ end
85
+ end
86
+
87
+ LogStash::Json.load(out)
72
88
  else
73
- fail "curl failed: #{status}\n #{stdout}"
89
+ warn out
90
+ fail "#{cmd.inspect} process failed: #{status}\n\n#{err}"
74
91
  end
75
92
  end
76
93
 
94
+ let(:initial_events) { [] }
95
+
96
+ let(:do_register) { true }
97
+
77
98
  before do
78
- subject.register
79
- subject.multi_receive([])
99
+ subject.register if do_register
100
+ subject.multi_receive(initial_events) if initial_events
80
101
  end
81
-
102
+
103
+ after do
104
+ subject.do_close
105
+ end
106
+
82
107
  shared_examples "an indexer" do |secure|
108
+ before(:each) do
109
+ host_unreachable_error_class = LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError
110
+ allow(host_unreachable_error_class).to receive(:new).with(any_args).and_wrap_original do |m, original, url|
111
+ if original.message.include?("PKIX path building failed")
112
+ $stderr.puts "Client not connecting due to PKIX path building failure; " +
113
+ "shutting plugin down to prevent infinite retries"
114
+ subject.close # premature shutdown to prevent infinite retry
115
+ end
116
+ m.call(original, url)
117
+ end
118
+ end
119
+
83
120
  it "ships events" do
84
121
  subject.multi_receive(events)
85
122
 
@@ -121,6 +158,32 @@ describe "indexing" do
121
158
  end
122
159
  end
123
160
 
161
+ shared_examples "PKIX path failure" do
162
+ let(:do_register) { false }
163
+ let(:host_unreachable_error_class) { LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError }
164
+
165
+ before(:each) do
166
+ limit_execution
167
+ end
168
+
169
+ let(:limit_execution) do
170
+ Thread.new { sleep 5; subject.close }
171
+ end
172
+
173
+ it 'fails to establish TLS' do
174
+ allow(host_unreachable_error_class).to receive(:new).with(any_args).and_call_original.at_least(:once)
175
+
176
+ subject.register
177
+ limit_execution.join
178
+
179
+ sleep 1
180
+
181
+ expect(host_unreachable_error_class).to have_received(:new).at_least(:once) do |original, url|
182
+ expect(original.message).to include("PKIX path building failed")
183
+ end
184
+ end
185
+ end
186
+
124
187
  describe "an indexer with custom index_type", :integration => true do
125
188
  let(:config) {
126
189
  {
@@ -146,17 +209,17 @@ describe "indexing" do
146
209
  let(:user) { "simpleuser" }
147
210
  let(:password) { "abc123" }
148
211
  let(:cacert) { "spec/fixtures/test_certs/ca.crt" }
149
- let(:es_url) {"https://elasticsearch:9200"}
212
+ let(:es_url) { "https://#{get_host_port}" }
150
213
  let(:config) do
151
214
  {
152
- "hosts" => ["elasticsearch:9200"],
215
+ "hosts" => [ get_host_port ],
153
216
  "user" => user,
154
217
  "password" => password,
155
218
  "ssl" => true,
156
219
  "cacert" => cacert,
157
220
  "index" => index
158
221
  }
159
- end
222
+ end
160
223
 
161
224
  let(:curl_opts) { "-u #{user}:#{password}" }
162
225
 
@@ -197,6 +260,8 @@ describe "indexing" do
197
260
 
198
261
  else
199
262
 
263
+ let(:curl_opts) { "#{super()} --tlsv1.2 --tls-max 1.3 -u #{es_admin}:#{es_admin_pass}" } # due ES 8.x we need user/password
264
+
200
265
  it_behaves_like("an indexer", true)
201
266
 
202
267
  describe "with a password requiring escaping" do
@@ -219,6 +284,63 @@ describe "indexing" do
219
284
  include_examples("an indexer", true)
220
285
  end
221
286
 
287
+ context "without providing `cacert`" do
288
+ let(:config) do
289
+ super().tap do |c|
290
+ c.delete("cacert")
291
+ end
292
+ end
293
+
294
+ it_behaves_like("PKIX path failure")
295
+ end
296
+
297
+ if Gem::Version.new(LOGSTASH_VERSION) >= Gem::Version.new("8.3.0")
298
+ context "with `ca_trusted_fingerprint` instead of `cacert`" do
299
+ let(:config) do
300
+ super().tap do |c|
301
+ c.delete("cacert")
302
+ c.update("ca_trusted_fingerprint" => ca_trusted_fingerprint)
303
+ end
304
+ end
305
+ let(:ca_trusted_fingerprint) { File.read("spec/fixtures/test_certs/test.der.sha256").chomp }
306
+
307
+
308
+ it_behaves_like("an indexer", true)
309
+
310
+ context 'with an invalid `ca_trusted_fingerprint`' do
311
+ let(:ca_trusted_fingerprint) { super().reverse }
312
+
313
+ it_behaves_like("PKIX path failure")
314
+ end
315
+ end
316
+ end
317
+
318
+ context 'with enforced TLSv1.3 protocol' do
319
+ let(:config) { super().merge 'ssl_supported_protocols' => [ 'TLSv1.3' ] }
320
+
321
+ it_behaves_like("an indexer", true)
322
+ end
323
+
324
+ context 'with enforced TLSv1.2 protocol (while ES only enabled TLSv1.3)' do
325
+ let(:config) { super().merge 'ssl_supported_protocols' => [ 'TLSv1.2' ] }
326
+
327
+ let(:initial_events) { nil }
328
+
329
+ it "does not ship events" do
330
+ curl_and_get_json_response index_url, method: :put # make sure index exists
331
+ Thread.start { subject.multi_receive(events) } # we'll be stuck in a retry loop
332
+ sleep 2.5
333
+
334
+ curl_and_get_json_response "#{es_url}/_refresh", method: :post
335
+
336
+ result = curl_and_get_json_response "#{index_url}/_count?q=*"
337
+ cur_count = result["count"]
338
+ expect(cur_count).to eq(0) # ES output keeps re-trying but ends up with a
339
+ # [Manticore::ClientProtocolException] Received fatal alert: protocol_version
340
+ end
341
+
342
+ end if ENV['ES_SSL_SUPPORTED_PROTOCOLS'] == 'TLSv1.3'
343
+
222
344
  end
223
345
 
224
346
  end
@@ -33,7 +33,7 @@ describe "SSL option" do
33
33
 
34
34
  it "should pass the flag to the ES client" do
35
35
  expect(::Manticore::Client).to receive(:new) do |args|
36
- expect(args[:ssl]).to eq(:enabled => true, :verify => :disable)
36
+ expect(args[:ssl]).to match hash_including(:enabled => true, :verify => :disable)
37
37
  end.and_return(manticore_double)
38
38
 
39
39
  subject.register
@@ -45,8 +45,8 @@ describe "whitelisting error types in expected behavior" do
45
45
  end
46
46
  end
47
47
 
48
- describe "when failure logging is disabled for docuemnt exists error" do
49
- let(:settings) { super().merge("failure_type_logging_whitelist" => ["document_already_exists_exception"]) }
48
+ describe "when failure logging is disabled for document exists error" do
49
+ let(:settings) { super().merge("silence_errors_in_log" => ["document_already_exists_exception"]) }
50
50
 
51
51
  it "should log a failure on the action" do
52
52
  expect(subject.logger).not_to have_received(:warn).with("Failed action", anything)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.4.1
4
+ version: 11.7.0
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-19 00:00:00.000000000 Z
11
+ date: 2022-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -98,6 +98,20 @@ dependencies:
98
98
  - - "~>"
99
99
  - !ruby/object:Gem::Version
100
100
  version: '1.0'
101
+ - !ruby/object:Gem::Dependency
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '1.0'
107
+ name: logstash-mixin-ca_trusted_fingerprint_support
108
+ prerelease: false
109
+ type: :runtime
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '1.0'
101
115
  - !ruby/object:Gem::Dependency
102
116
  requirement: !ruby/object:Gem::Requirement
103
117
  requirements:
@@ -245,8 +259,11 @@ files:
245
259
  - spec/fixtures/template-with-policy-es7x.json
246
260
  - spec/fixtures/template-with-policy-es8x.json
247
261
  - spec/fixtures/test_certs/ca.crt
262
+ - spec/fixtures/test_certs/ca.der.sha256
248
263
  - spec/fixtures/test_certs/ca.key
264
+ - spec/fixtures/test_certs/renew.sh
249
265
  - spec/fixtures/test_certs/test.crt
266
+ - spec/fixtures/test_certs/test.der.sha256
250
267
  - spec/fixtures/test_certs/test.key
251
268
  - spec/fixtures/test_certs/test.p12
252
269
  - spec/fixtures/test_certs/test_invalid.crt
@@ -327,8 +344,11 @@ test_files:
327
344
  - spec/fixtures/template-with-policy-es7x.json
328
345
  - spec/fixtures/template-with-policy-es8x.json
329
346
  - spec/fixtures/test_certs/ca.crt
347
+ - spec/fixtures/test_certs/ca.der.sha256
330
348
  - spec/fixtures/test_certs/ca.key
349
+ - spec/fixtures/test_certs/renew.sh
331
350
  - spec/fixtures/test_certs/test.crt
351
+ - spec/fixtures/test_certs/test.der.sha256
332
352
  - spec/fixtures/test_certs/test.key
333
353
  - spec/fixtures/test_certs/test.p12
334
354
  - spec/fixtures/test_certs/test_invalid.crt