Skip to content

Commit de61518

Browse files
donoghuckarenzone
andauthored
Mark previously deprecated SSL settings as obsolete (#1197)
* Mark previously deprecated SSL settings as obsolete - SSL settings that were marked deprecated in version `11.14.0` are now marked obsolete, and will prevent the plugin from starting. - These settings are: - `cacert`, which should be replaced by `ssl_certificate_authorities` - `keystore`, which should be replaced by `ssl_keystore_path` - `keystore_password`, which should be replaced by `ssl_keystore_password` - `ssl`, which should be replaced by `ssl_enabled` - `ssl_certificate_verification`, which should be replaced by `ssl_verification_mode` - `truststore`, which should be replaced by `ssl_truststore_path` - `truststore_password`, which should be replaced by `ssl_truststore_password` * Restore deleted footer Restore the deleted EOF as it is required for docs. * Remove reference to deprecated options * Remove characters copied from a diff view * Fix reference to old removed ssl setting Replace ssl with ssl_enabled. * Remove whitespace * Restore deleted pipe character * Add a note detailing removal Co-authored-by: Karen Metts <[email protected]> --------- Co-authored-by: Karen Metts <[email protected]>
1 parent 6a32bbe commit de61518

File tree

7 files changed

+65
-241
lines changed

7 files changed

+65
-241
lines changed

Diff for: CHANGELOG.md

+12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
## 12.0.0
2+
- SSL settings that were marked deprecated in version `11.14.0` are now marked obsolete, and will prevent the plugin from starting.
3+
- These settings are:
4+
- `cacert`, which should be replaced by `ssl_certificate_authorities`
5+
- `keystore`, which should be replaced by `ssl_keystore_path`
6+
- `keystore_password`, which should be replaced by `ssl_keystore_password`
7+
- `ssl`, which should be replaced by `ssl_enabled`
8+
- `ssl_certificate_verification`, which should be replaced by `ssl_verification_mode`
9+
- `truststore`, which should be replaced by `ssl_truststore_path`
10+
- `truststore_password`, which should be replaced by `ssl_truststore_password`
11+
- [#1197](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1197)
12+
113
## 11.22.10
214
- Add `x-elastic-product-origin` header to Elasticsearch requests [#1195](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1195)
315

Diff for: docs/index.asciidoc

+18-90
Original file line numberDiff line numberDiff line change
@@ -325,8 +325,10 @@ When a string value on an event contains one or more byte sequences that are not
325325
[id="plugins-{type}s-{plugin}-options"]
326326
==== Elasticsearch Output Configuration Options
327327

328-
This plugin supports the following configuration options plus the
329-
<<plugins-{type}s-{plugin}-common-options>> and the <<plugins-{type}s-{plugin}-deprecated-options>> described later.
328+
This plugin supports these configuration options plus the <<plugins-{type}s-{plugin}-common-options>> described later.
329+
330+
NOTE: As of version 12.0.0 of this plugin, a number of previously deprecated SSL settings have been removed.
331+
Please check out <<plugins-{type}s-{plugin}-obsolete-options>> for details.
330332

331333
[cols="<,<,<",options="header",]
332334
|=======================================================================
@@ -441,7 +443,7 @@ For more details on actions, check out the {ref}/docs-bulk.html[Elasticsearch bu
441443
* There is no default value for this setting.
442444

443445
Authenticate using Elasticsearch API key.
444-
Note that this option also requires SSL/TLS, which can be enabled by supplying a <<plugins-{type}s-{plugin}-cloud_id>>, a list of HTTPS <<plugins-{type}s-{plugin}-hosts>>, or by setting <<plugins-{type}s-{plugin}-ssl,`ssl_enabled => true`>>.
446+
Note that this option also requires SSL/TLS, which can be enabled by supplying a <<plugins-{type}s-{plugin}-cloud_id>>, a list of HTTPS <<plugins-{type}s-{plugin}-hosts>>, or by setting <<plugins-{type}s-{plugin}-ssl_enabled,`ssl_enabled => true`>>.
445447

446448
Format is `id:api_key` where `id` and `api_key` are as returned by the
447449
Elasticsearch {ref}/security-api-create-api-key.html[Create API key API].
@@ -1324,98 +1326,24 @@ https://www.elastic.co/blog/elasticsearch-versioning-support[versioning support
13241326
blog] and {ref}/docs-index_.html#_version_types[Version types] in the
13251327
Elasticsearch documentation.
13261328

1327-
[id="plugins-{type}s-{plugin}-deprecated-options"]
1328-
==== Elasticsearch Output Deprecated Configuration Options
1329-
1330-
This plugin supports the following deprecated configurations.
1329+
[id="plugins-{type}s-{plugin}-obsolete-options"]
1330+
==== Elasticsearch Output Obsolete Configuration Options
13311331

1332-
WARNING: Deprecated options are subject to removal in future releases.
1332+
WARNING: As of version `12.0.0` of this plugin, some configuration options have been replaced.
1333+
The plugin will fail to start if it contains any of these obsolete options.
13331334

1334-
[cols="<,<,<",options="header",]
1335+
[cols="<,<",options="header",]
13351336
|=======================================================================
1336-
|Setting|Input type|Replaced by
1337-
| <<plugins-{type}s-{plugin}-cacert>> |a valid filesystem path|<<plugins-{type}s-{plugin}-ssl_certificate_authorities>>
1338-
| <<plugins-{type}s-{plugin}-keystore>> |a valid filesystem path|<<plugins-{type}s-{plugin}-ssl_keystore_path>>
1339-
| <<plugins-{type}s-{plugin}-keystore_password>> |<<password,password>>|<<plugins-{type}s-{plugin}-ssl_keystore_password>>
1340-
| <<plugins-{type}s-{plugin}-ssl>> |<<boolean,boolean>>|<<plugins-{type}s-{plugin}-ssl_enabled>>
1341-
| <<plugins-{type}s-{plugin}-ssl_certificate_verification>> |<<boolean,boolean>>|<<plugins-{type}s-{plugin}-ssl_verification_mode>>
1342-
| <<plugins-{type}s-{plugin}-truststore>> |a valid filesystem path|<<plugins-{type}s-{plugin}-ssl_truststore_path>>
1343-
| <<plugins-{type}s-{plugin}-truststore_password>> |<<password,password>>|<<plugins-{type}s-{plugin}-ssl_truststore_password>>
1337+
|Setting|Replaced by
1338+
| cacert | <<plugins-{type}s-{plugin}-ssl_certificate_authorities>>
1339+
| keystore | <<plugins-{type}s-{plugin}-ssl_keystore_path>>
1340+
| keystore_password | <<plugins-{type}s-{plugin}-ssl_keystore_password>>
1341+
| ssl | <<plugins-{type}s-{plugin}-ssl_enabled>>
1342+
| ssl_certificate_verification | <<plugins-{type}s-{plugin}-ssl_verification_mode>>
1343+
| truststore | <<plugins-{type}s-{plugin}-ssl_truststore_path>>
1344+
| truststore_password | <<plugins-{type}s-{plugin}-ssl_truststore_password>>
13441345
|=======================================================================
13451346

1346-
1347-
[id="plugins-{type}s-{plugin}-cacert"]
1348-
===== `cacert`
1349-
deprecated[11.14.0, Replaced by <<plugins-{type}s-{plugin}-ssl_certificate_authorities>>]
1350-
1351-
* Value type is a list of <<path,path>>
1352-
* There is no default value for this setting.
1353-
1354-
The .cer or .pem file to validate the server's certificate.
1355-
1356-
[id="plugins-{type}s-{plugin}-keystore"]
1357-
===== `keystore`
1358-
deprecated[11.14.0, Replaced by <<plugins-{type}s-{plugin}-ssl_keystore_path>>]
1359-
1360-
* Value type is <<path,path>>
1361-
* There is no default value for this setting.
1362-
1363-
The keystore used to present a certificate to the server.
1364-
It can be either .jks or .p12
1365-
1366-
NOTE: You cannot use this setting and <<plugins-{type}s-{plugin}-ssl_certificate>> at the same time.
1367-
1368-
[id="plugins-{type}s-{plugin}-keystore_password"]
1369-
===== `keystore_password`
1370-
deprecated[11.14.0, Replaced by <<plugins-{type}s-{plugin}-ssl_keystore_password>>]
1371-
1372-
* Value type is <<password,password>>
1373-
* There is no default value for this setting.
1374-
1375-
Set the keystore password
1376-
1377-
[id="plugins-{type}s-{plugin}-ssl"]
1378-
===== `ssl`
1379-
deprecated[11.14.0, Replaced by <<plugins-{type}s-{plugin}-ssl_enabled>>]
1380-
1381-
* Value type is <<boolean,boolean>>
1382-
* There is no default value for this setting.
1383-
1384-
Enable SSL/TLS secured communication to Elasticsearch cluster.
1385-
Leaving this unspecified will use whatever scheme is specified in the URLs listed in <<plugins-{type}s-{plugin}-hosts>> or extracted from the <<plugins-{type}s-{plugin}-cloud_id>>.
1386-
If no explicit protocol is specified plain HTTP will be used.
1387-
1388-
[id="plugins-{type}s-{plugin}-ssl_certificate_verification"]
1389-
===== `ssl_certificate_verification`
1390-
deprecated[11.14.0, Replaced by <<plugins-{type}s-{plugin}-ssl_verification_mode>>]
1391-
1392-
* Value type is <<boolean,boolean>>
1393-
* Default value is `true`
1394-
1395-
Option to validate the server's certificate. Disabling this severely compromises security.
1396-
For more information on disabling certificate verification please read
1397-
https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
1398-
1399-
[id="plugins-{type}s-{plugin}-truststore"]
1400-
===== `truststore`
1401-
deprecated[11.14.0, Replaced by <<plugins-{type}s-{plugin}-ssl_truststore_path>>]
1402-
1403-
* Value type is <<path,path>>
1404-
* There is no default value for this setting.
1405-
1406-
The truststore to validate the server's certificate.
1407-
It can be either `.jks` or `.p12`.
1408-
Use either `:truststore` or `:cacert`.
1409-
1410-
[id="plugins-{type}s-{plugin}-truststore_password"]
1411-
===== `truststore_password`
1412-
deprecated[11.14.0, Replaced by <<plugins-{type}s-{plugin}-ssl_truststore_password>>]
1413-
1414-
* Value type is <<password,password>>
1415-
* There is no default value for this setting.
1416-
1417-
Set the truststore password
1418-
14191347
[id="plugins-{type}s-{plugin}-common-options"]
14201348
include::{include_path}/{type}.asciidoc[]
14211349

Diff for: lib/logstash/outputs/elasticsearch.rb

-47
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,6 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
275275
def initialize(*params)
276276
super
277277
setup_ecs_compatibility_related_defaults
278-
setup_ssl_params!
279278
setup_compression_level!
280279
end
281280

@@ -694,52 +693,6 @@ def setup_template_manager_defaults(data_stream_enabled)
694693
end
695694
end
696695

697-
def setup_ssl_params!
698-
@ssl_enabled = normalize_config(:ssl_enabled) do |normalize|
699-
normalize.with_deprecated_alias(:ssl)
700-
end
701-
702-
@ssl_certificate_authorities = normalize_config(:ssl_certificate_authorities) do |normalize|
703-
normalize.with_deprecated_mapping(:cacert) do |cacert|
704-
[cacert]
705-
end
706-
end
707-
708-
@ssl_keystore_path = normalize_config(:ssl_keystore_path) do |normalize|
709-
normalize.with_deprecated_alias(:keystore)
710-
end
711-
712-
@ssl_keystore_password = normalize_config(:ssl_keystore_password) do |normalize|
713-
normalize.with_deprecated_alias(:keystore_password)
714-
end
715-
716-
@ssl_truststore_path = normalize_config(:ssl_truststore_path) do |normalize|
717-
normalize.with_deprecated_alias(:truststore)
718-
end
719-
720-
@ssl_truststore_password = normalize_config(:ssl_truststore_password) do |normalize|
721-
normalize.with_deprecated_alias(:truststore_password)
722-
end
723-
724-
@ssl_verification_mode = normalize_config(:ssl_verification_mode) do |normalize|
725-
normalize.with_deprecated_mapping(:ssl_certificate_verification) do |ssl_certificate_verification|
726-
if ssl_certificate_verification == true
727-
"full"
728-
else
729-
"none"
730-
end
731-
end
732-
end
733-
734-
params['ssl_enabled'] = @ssl_enabled unless @ssl_enabled.nil?
735-
params['ssl_certificate_authorities'] = @ssl_certificate_authorities unless @ssl_certificate_authorities.nil?
736-
params['ssl_keystore_path'] = @ssl_keystore_path unless @ssl_keystore_path.nil?
737-
params['ssl_keystore_password'] = @ssl_keystore_password unless @ssl_keystore_password.nil?
738-
params['ssl_truststore_path'] = @ssl_truststore_path unless @ssl_truststore_path.nil?
739-
params['ssl_truststore_password'] = @ssl_truststore_password unless @ssl_truststore_password.nil?
740-
params['ssl_verification_mode'] = @ssl_verification_mode unless @ssl_verification_mode.nil?
741-
end
742-
743696
def setup_compression_level!
744697
@compression_level = normalize_config(:compression_level) do |normalize|
745698
normalize.with_deprecated_mapping(:http_compression) do |http_compression|

Diff for: lib/logstash/plugin_mixins/elasticsearch/api_configs.rb

+12-28
Original file line numberDiff line numberDiff line change
@@ -43,67 +43,40 @@ module APIConfigs
4343
# urls that already have query strings, the one specified here will be appended.
4444
:parameters => { :validate => :hash },
4545

46-
# Enable SSL/TLS secured communication to Elasticsearch cluster. Leaving this unspecified will use whatever scheme
47-
# is specified in the URLs listed in 'hosts'. If no explicit protocol is specified plain HTTP will be used.
48-
# If SSL is explicitly disabled here the plugin will refuse to start if an HTTPS URL is given in 'hosts'
49-
:ssl => { :validate => :boolean, :deprecated => "Set 'ssl_enabled' instead." },
50-
5146
# Enable SSL/TLS secured communication to Elasticsearch cluster. Leaving this unspecified will use whatever scheme
5247
# is specified in the URLs listed in 'hosts'. If no explicit protocol is specified plain HTTP will be used.
5348
# If SSL is explicitly disabled here the plugin will refuse to start if an HTTPS URL is given in 'hosts'
5449
:ssl_enabled => { :validate => :boolean },
5550

56-
# Option to validate the server's certificate. Disabling this severely compromises security.
57-
# For more information on disabling certificate verification please read
58-
# https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
59-
:ssl_certificate_verification => { :validate => :boolean, :default => true, :deprecated => "Set 'ssl_verification_mode' instead." },
60-
6151
# Options to verify the server's certificate.
6252
# "full": validates that the provided certificate has an issue date that’s within the not_before and not_after dates;
6353
# chains to a trusted Certificate Authority (CA); has a hostname or IP address that matches the names within the certificate.
6454
# "none": performs no certificate validation. Disabling this severely compromises security (https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf)
6555
:ssl_verification_mode => { :validate => %w[full none], :default => 'full' },
6656

67-
# The .cer or .pem file to validate the server's certificate
68-
:cacert => { :validate => :path, :deprecated => "Set 'ssl_certificate_authorities' instead." },
69-
7057
# The .cer or .pem files to validate the server's certificate
7158
:ssl_certificate_authorities => { :validate => :path, :list => true },
7259

7360
# One or more hex-encoded SHA256 fingerprints to trust as Certificate Authorities
7461
:ca_trusted_fingerprint => LogStash::PluginMixins::CATrustedFingerprintSupport,
7562

76-
# The JKS truststore to validate the server's certificate.
77-
# Use either `:truststore` or `:cacert`
78-
:truststore => { :validate => :path, :deprecated => "Set 'ssl_truststore_path' instead." },
79-
8063
# The JKS truststore to validate the server's certificate.
8164
# Use either `:ssl_truststore_path` or `:ssl_certificate_authorities`
8265
:ssl_truststore_path => { :validate => :path },
8366

8467
# The format of the truststore file. It must be either jks or pkcs12
8568
:ssl_truststore_type => { :validate => %w[pkcs12 jks] },
8669

87-
# Set the truststore password
88-
:truststore_password => { :validate => :password, :deprecated => "Use 'ssl_truststore_password' instead." },
89-
9070
# Set the truststore password
9171
:ssl_truststore_password => { :validate => :password },
9272

93-
# The keystore used to present a certificate to the server.
94-
# It can be either .jks or .p12
95-
:keystore => { :validate => :path, :deprecated => "Set 'ssl_keystore_path' instead." },
96-
9773
# The keystore used to present a certificate to the server.
9874
# It can be either .jks or .p12
9975
:ssl_keystore_path => { :validate => :path },
10076

10177
# The format of the keystore file. It must be either jks or pkcs12
10278
:ssl_keystore_type => { :validate => %w[pkcs12 jks] },
10379

104-
# Set the keystore password
105-
:keystore_password => { :validate => :password, :deprecated => "Set 'ssl_keystore_password' instead." },
106-
10780
# Set the keystore password
10881
:ssl_keystore_password => { :validate => :password },
10982

@@ -229,7 +202,17 @@ module APIConfigs
229202
:dlq_custom_codes => { :validate => :number, :list => true, :default => [] },
230203

231204
# if enabled, failed index name interpolation events go into dead letter queue.
232-
:dlq_on_failed_indexname_interpolation => { :validate => :boolean, :default => true }
205+
:dlq_on_failed_indexname_interpolation => { :validate => :boolean, :default => true },
206+
207+
# Obsolete Settings
208+
:ssl => { :obsolete => "Set 'ssl_enabled' instead." },
209+
:ssl_certificate_verification => { :obsolete => "Set 'ssl_verification_mode' instead." },
210+
:cacert => { :obsolete => "Set 'ssl_certificate_authorities' instead." },
211+
:truststore => { :obsolete => "Set 'ssl_truststore_path' instead." },
212+
:keystore => { :obsolete => "Set 'ssl_keystore_path' instead." },
213+
# Leave :validate to ensure obfuscation of sensitive setting for passwords
214+
:truststore_password => { :validate => :password, :obsolete => "Use 'ssl_truststore_password' instead." },
215+
:keystore_password => { :validate => :password, :obsolete => "Set 'ssl_keystore_password' instead." }
233216
}.freeze
234217

235218
def self.included(base)
@@ -243,3 +226,4 @@ def self.included(base)
243226
end
244227
end
245228
end; end; end
229+

Diff for: logstash-output-elasticsearch.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Gem::Specification.new do |s|
22
s.name = 'logstash-output-elasticsearch'
3-
s.version = '11.22.10'
3+
s.version = '12.0.0'
44
s.licenses = ['apache-2.0']
55
s.summary = "Stores logs in Elasticsearch"
66
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"

Diff for: spec/unit/outputs/elasticsearch_spec.rb

-75
Original file line numberDiff line numberDiff line change
@@ -1125,81 +1125,6 @@
11251125
end
11261126
end
11271127

1128-
describe "SSL deprecated settings" do
1129-
let(:base_options) { {"ssl" => "true"} }
1130-
1131-
context "with client certificate" do
1132-
let(:do_register) { true }
1133-
let(:cacert) { Stud::Temporary.file.path }
1134-
let(:options) { base_options.merge(
1135-
"cacert" => cacert,
1136-
"ssl_certificate_verification" => false
1137-
) }
1138-
1139-
after :each do
1140-
File.delete(cacert)
1141-
end
1142-
1143-
it "should map new configs into params" do
1144-
expect(subject.params).to match hash_including(
1145-
"ssl_enabled" => true,
1146-
"ssl_verification_mode" => "none",
1147-
"ssl_certificate_authorities" => [cacert]
1148-
)
1149-
end
1150-
1151-
it "should set new configs variables" do
1152-
expect(subject.instance_variable_get(:@ssl_enabled)).to eql(true)
1153-
expect(subject.instance_variable_get(:@ssl_verification_mode)).to eql("none")
1154-
expect(subject.instance_variable_get(:@ssl_certificate_authorities)).to eql([cacert])
1155-
end
1156-
end
1157-
1158-
context "with java stores" do
1159-
let(:do_register) { true }
1160-
let(:keystore) { Stud::Temporary.file.path }
1161-
let(:truststore) { Stud::Temporary.file.path }
1162-
let(:options) { base_options.merge(
1163-
"keystore" => keystore,
1164-
"keystore_password" => "keystore",
1165-
"truststore" => truststore,
1166-
"truststore_password" => "truststore",
1167-
"ssl_certificate_verification" => true
1168-
) }
1169-
1170-
let(:spy_http_client_builder!) do
1171-
allow(described_class::HttpClientBuilder).to receive(:build).with(any_args).and_call_original
1172-
allow(described_class::HttpClientBuilder).to receive(:setup_ssl).with(any_args).and_return({})
1173-
end
1174-
1175-
after :each do
1176-
File.delete(keystore)
1177-
File.delete(truststore)
1178-
end
1179-
1180-
it "should map new configs into params" do
1181-
expect(subject.params).to match hash_including(
1182-
"ssl_enabled" => true,
1183-
"ssl_keystore_path" => keystore,
1184-
"ssl_truststore_path" => truststore,
1185-
"ssl_verification_mode" => "full"
1186-
)
1187-
1188-
expect(subject.params["ssl_keystore_password"].value).to eql("keystore")
1189-
expect(subject.params["ssl_truststore_password"].value).to eql("truststore")
1190-
end
1191-
1192-
it "should set new configs variables" do
1193-
expect(subject.instance_variable_get(:@ssl_enabled)).to eql(true)
1194-
expect(subject.instance_variable_get(:@ssl_keystore_path)).to eql(keystore)
1195-
expect(subject.instance_variable_get(:@ssl_keystore_password).value).to eql("keystore")
1196-
expect(subject.instance_variable_get(:@ssl_truststore_path)).to eql(truststore)
1197-
expect(subject.instance_variable_get(:@ssl_truststore_password).value).to eql("truststore")
1198-
expect(subject.instance_variable_get(:@ssl_verification_mode)).to eql("full")
1199-
end
1200-
end
1201-
end
1202-
12031128
describe "retry_on_conflict" do
12041129
let(:num_retries) { 123 }
12051130
let(:event) { LogStash::Event.new("myactionfield" => "update", "message" => "blah") }

0 commit comments

Comments
 (0)