logstash-input-http 3.7.3-java → 3.8.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/VERSION +1 -1
- data/docs/index.asciidoc +42 -1
- data/lib/logstash/inputs/http.rb +66 -38
- data/lib/logstash-input-http_jars.rb +1 -1
- data/spec/fixtures/certs/generate.sh +5 -0
- data/spec/fixtures/certs/generated/server_from_root.p12 +0 -0
- data/spec/fixtures/certs/generated/truststore.jks +0 -0
- data/spec/inputs/http_spec.rb +100 -3
- data/vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/{3.7.3/logstash-input-http-3.7.3.jar → 3.8.0/logstash-input-http-3.8.0.jar} +0 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 878b9676d690b6f26847e743e00caa41ff11ea5779d37773a083890f6e2ed988
|
4
|
+
data.tar.gz: 0450ae32b81d9ac490241083a8bb0476c8e86f118825c6027e22c32cceaab799
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71e58120dfba90311d13a27e049b5c74ae361311893365e6f093f3bf61922f36620e9d100719aac107b7b46c53e245a5f2f2bc1ef66c47f5a7724a22e5be6d95
|
7
|
+
data.tar.gz: dec4db2f58fd2e2bb67c09c365fa77c433569ffe7747026d5b8699b0a285bf454cbbea2cd6914b8599f10e686e700a4b3ec9a53f804c7e341abc6032f1fc3511
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 3.8.0
|
2
|
+
- Fixed SSL Java KeyStore support [#171](https://github.com/logstash-plugins/logstash-input-http/pull/171)
|
3
|
+
- Added `ssl_keystore_type` configuration
|
4
|
+
- Added SSL Java TrustStore configurations (`ssl_truststore_type`, `ssl_truststore_path` and `ssl_truststore_password`)
|
5
|
+
|
1
6
|
## 3.7.3
|
2
7
|
- bump netty to 4.1.100 [#170](https://github.com/logstash-plugins/logstash-input-http/pull/170)
|
3
8
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.8.0
|
data/docs/index.asciidoc
CHANGED
@@ -112,7 +112,11 @@ This plugin supports the following configuration options plus the <<plugins-{typ
|
|
112
112
|
| <<plugins-{type}s-{plugin}-ssl_key_passphrase>> |<<password,password>>|No
|
113
113
|
| <<plugins-{type}s-{plugin}-ssl_keystore_password>> |<<password,password>>|No
|
114
114
|
| <<plugins-{type}s-{plugin}-ssl_keystore_path>> |<<path,path>>|No
|
115
|
+
| <<plugins-{type}s-{plugin}-ssl_keystore_type>> |<<string,string>>|No
|
115
116
|
| <<plugins-{type}s-{plugin}-ssl_supported_protocols>> |<<array,array>>|No
|
117
|
+
| <<plugins-{type}s-{plugin}-ssl_truststore_password>> |<<password,password>>|No
|
118
|
+
| <<plugins-{type}s-{plugin}-ssl_truststore_path>> |<<path,path>>|No
|
119
|
+
| <<plugins-{type}s-{plugin}-ssl_truststore_type>> |<<string,string>>|No
|
116
120
|
| <<plugins-{type}s-{plugin}-ssl_verify_mode>> |<<string,string>>, one of `["none", "peer", "force_peer"]`|__Deprecated__
|
117
121
|
| <<plugins-{type}s-{plugin}-threads>> |<<number,number>>|No
|
118
122
|
| <<plugins-{type}s-{plugin}-tls_max_version>> |<<number,number>>|__Deprecated__
|
@@ -405,7 +409,18 @@ SSL key passphrase to use.
|
|
405
409
|
* Value type is <<path,path>>
|
406
410
|
* There is no default value for this setting.
|
407
411
|
|
408
|
-
The
|
412
|
+
The path for the keystore file that contains a private key and certificate.
|
413
|
+
It must be either a Java keystore (jks) or a PKCS#12 file.
|
414
|
+
|
415
|
+
NOTE: You cannot use this setting and <<plugins-{type}s-{plugin}-ssl_certificate>> at the same time.
|
416
|
+
|
417
|
+
[id="plugins-{type}s-{plugin}-ssl_keystore_type"]
|
418
|
+
===== `ssl_keystore_type`
|
419
|
+
|
420
|
+
* Value can be any of: `jks`, `pkcs12`
|
421
|
+
* If not provided, the value will be inferred from the keystore filename.
|
422
|
+
|
423
|
+
The format of the keystore file. It must be either `jks` or `pkcs12`.
|
409
424
|
|
410
425
|
[id="plugins-{type}s-{plugin}-ssl_keystore_password"]
|
411
426
|
===== `ssl_keystore_password`
|
@@ -432,6 +447,32 @@ NOTE: If you configure the plugin to use `'TLSv1.1'` on any recent JVM, such as
|
|
432
447
|
the protocol is disabled by default and needs to be enabled manually by changing `jdk.tls.disabledAlgorithms` in
|
433
448
|
the *$JDK_HOME/conf/security/java.security* configuration file. That is, `TLSv1.1` needs to be removed from the list.
|
434
449
|
|
450
|
+
[id="plugins-{type}s-{plugin}-ssl_truststore_password"]
|
451
|
+
===== `ssl_truststore_password`
|
452
|
+
|
453
|
+
* Value type is <<password,password>>
|
454
|
+
* There is no default value for this setting.
|
455
|
+
|
456
|
+
Set the truststore password
|
457
|
+
|
458
|
+
[id="plugins-{type}s-{plugin}-ssl_truststore_path"]
|
459
|
+
===== `ssl_truststore_path`
|
460
|
+
|
461
|
+
* Value type is <<path,path>>
|
462
|
+
* There is no default value for this setting.
|
463
|
+
|
464
|
+
The path for the keystore that contains the certificates to trust. It must be either a Java keystore (jks) or a PKCS#12 file.
|
465
|
+
|
466
|
+
NOTE: You cannot use this setting and <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> at the same time.
|
467
|
+
|
468
|
+
[id="plugins-{type}s-{plugin}-ssl_truststore_type"]
|
469
|
+
===== `ssl_truststore_type`
|
470
|
+
|
471
|
+
* Value can be any of: `jks`, `pkcs12`
|
472
|
+
* If not provided, the value will be inferred from the truststore filename.
|
473
|
+
|
474
|
+
The format of the truststore file. It must be either `jks` or `pkcs12`.
|
475
|
+
|
435
476
|
[id="plugins-{type}s-{plugin}-ssl_verify_mode"]
|
436
477
|
===== `ssl_verify_mode`
|
437
478
|
deprecated[3.7.0, Replaced by <<plugins-{type}s-{plugin}-ssl_client_authentication>>]
|
data/lib/logstash/inputs/http.rb
CHANGED
@@ -76,12 +76,24 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
76
76
|
# The JKS keystore password
|
77
77
|
config :ssl_keystore_password, :validate => :password
|
78
78
|
|
79
|
-
# The
|
79
|
+
# The path for the keystore file that contains a private key and certificate
|
80
80
|
config :ssl_keystore_path, :validate => :path
|
81
81
|
|
82
|
+
# The format of the keystore file. It must be either jks or pkcs12
|
83
|
+
config :ssl_keystore_type, :validate => %w[pkcs12 jks]
|
84
|
+
|
82
85
|
# SSL key passphrase to use.
|
83
86
|
config :ssl_key_passphrase, :validate => :password
|
84
87
|
|
88
|
+
# Set the truststore password
|
89
|
+
config :ssl_truststore_password, :validate => :password
|
90
|
+
|
91
|
+
# The path for the keystore that contains the certificates to trust. It must be either a Java keystore (jks) or a PKCS#12 file
|
92
|
+
config :ssl_truststore_path, :validate => :path
|
93
|
+
|
94
|
+
# The format of the truststore file. It must be either jks or pkcs12
|
95
|
+
config :ssl_truststore_type, :validate => %w[pkcs12 jks]
|
96
|
+
|
85
97
|
# Validate client certificates against these authorities.
|
86
98
|
# You can define multiple files or paths. All the certificates will
|
87
99
|
# be read and added to the trust store. You need to configure the `ssl_client_authentication`
|
@@ -301,18 +313,31 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
301
313
|
raise LogStash::ConfigurationError, 'An `ssl_certificate` is required when using an `ssl_key`'
|
302
314
|
end
|
303
315
|
|
304
|
-
unless
|
316
|
+
unless ssl_certificate_configured? || ssl_keystore_configured?
|
305
317
|
raise LogStash::ConfigurationError, "Either an `ssl_certificate` or `ssl_keystore_path` is required when SSL is enabled `#{ssl_config_name} => true`"
|
306
318
|
end
|
307
319
|
|
308
|
-
if
|
309
|
-
|
310
|
-
raise LogStash::ConfigurationError, "Using `#{config_name}` set to `#{optional}` or `#{required}`, requires the configuration of `ssl_certificate_authorities`"
|
320
|
+
if ssl_certificate_configured? && ssl_keystore_configured?
|
321
|
+
raise LogStash::ConfigurationError, 'Use either an `ssl_certificate` or an `ssl_keystore_path`'
|
311
322
|
end
|
312
323
|
|
313
|
-
if
|
314
|
-
|
315
|
-
|
324
|
+
if ssl_certificate_authorities_configured? && ssl_truststore_configured?
|
325
|
+
raise LogStash::ConfigurationError, 'Use either an `ssl_certificate_authorities` or an `ssl_truststore_path`'
|
326
|
+
end
|
327
|
+
|
328
|
+
cli_auth_config_name, cli_auth_optional_val, cli_auth_required_val = provided_ssl_client_authentication_config([SSL_CLIENT_AUTH_OPTIONAL, SSL_CLIENT_AUTH_REQUIRED])
|
329
|
+
if ssl_client_authentication_enabled?
|
330
|
+
# Ensure any CA is configured. By default, the keystore can also be used as CA
|
331
|
+
unless ssl_certificate_authorities_configured? || ssl_truststore_configured? || ssl_keystore_configured?
|
332
|
+
raise LogStash::ConfigurationError, "Using `#{cli_auth_config_name}` set to `#{cli_auth_optional_val}` or `#{cli_auth_required_val}`, requires the configuration of `ssl_certificate_authorities` or `ssl_truststore_path`"
|
333
|
+
end
|
334
|
+
else
|
335
|
+
if ssl_truststore_configured?
|
336
|
+
raise LogStash::ConfigurationError, "The configuration of `ssl_truststore_path` requires setting `#{cli_auth_config_name}` to `#{cli_auth_optional_val}` or '#{cli_auth_required_val}'"
|
337
|
+
end
|
338
|
+
if ssl_certificate_authorities_configured?
|
339
|
+
raise LogStash::ConfigurationError, "The configuration of `ssl_certificate_authorities` requires setting `#{cli_auth_config_name}` to `#{cli_auth_optional_val}` or '#{cli_auth_required_val}'"
|
340
|
+
end
|
316
341
|
end
|
317
342
|
end
|
318
343
|
|
@@ -372,73 +397,76 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
372
397
|
def build_ssl_params
|
373
398
|
return nil unless @ssl_enabled
|
374
399
|
|
375
|
-
|
376
|
-
ssl_builder = org.logstash.plugins.inputs.http.util.JksSslBuilder.new(@ssl_keystore_path, @ssl_keystore_password.value)
|
377
|
-
else
|
378
|
-
ssl_builder = new_ssl_simple_builder
|
379
|
-
end
|
380
|
-
|
381
|
-
new_ssl_handshake_provider(ssl_builder)
|
400
|
+
new_ssl_handshake_provider(new_ssl_simple_builder)
|
382
401
|
end
|
383
402
|
|
384
403
|
def new_ssl_simple_builder
|
385
|
-
passphrase = @ssl_key_passphrase.nil? ? nil : @ssl_key_passphrase.value
|
386
404
|
begin
|
387
|
-
|
388
|
-
|
389
|
-
|
405
|
+
if ssl_keystore_configured?
|
406
|
+
ssl_context_builder = SslSimpleBuilder.withKeyStore(@ssl_keystore_type, @ssl_keystore_path, @ssl_keystore_password&.value)
|
407
|
+
else
|
408
|
+
ssl_context_builder = SslSimpleBuilder.withPemCertificate(@ssl_certificate, @ssl_key, @ssl_key_passphrase&.value)
|
409
|
+
end
|
390
410
|
|
391
|
-
|
392
|
-
|
411
|
+
ssl_context_builder.setProtocols(@ssl_supported_protocols)
|
412
|
+
.setCipherSuites(normalized_cipher_suites)
|
413
|
+
.setClientAuthentication(ssl_simple_builder_verify_mode)
|
414
|
+
|
415
|
+
if ssl_client_authentication_enabled?
|
416
|
+
if ssl_certificate_authorities_configured?
|
417
|
+
ssl_context_builder.setCertificateAuthorities(@ssl_certificate_authorities)
|
418
|
+
elsif ssl_truststore_configured?
|
419
|
+
ssl_context_builder.setTrustStore(@ssl_truststore_type, @ssl_truststore_path, @ssl_truststore_password&.value)
|
420
|
+
end
|
393
421
|
end
|
394
422
|
|
395
423
|
ssl_context_builder
|
396
|
-
rescue
|
424
|
+
rescue => e
|
397
425
|
@logger.error("SSL configuration invalid", error_details(e))
|
398
426
|
raise LogStash::ConfigurationError, e
|
399
427
|
end
|
400
428
|
end
|
401
429
|
|
402
430
|
def ssl_simple_builder_verify_mode
|
403
|
-
return SslSimpleBuilder::SslClientVerifyMode::OPTIONAL if
|
404
|
-
return SslSimpleBuilder::SslClientVerifyMode::REQUIRED if
|
405
|
-
return SslSimpleBuilder::SslClientVerifyMode::NONE if
|
431
|
+
return SslSimpleBuilder::SslClientVerifyMode::OPTIONAL if ssl_client_authentication_optional?
|
432
|
+
return SslSimpleBuilder::SslClientVerifyMode::REQUIRED if ssl_client_authentication_required?
|
433
|
+
return SslSimpleBuilder::SslClientVerifyMode::NONE if ssl_client_authentication_none?
|
406
434
|
raise LogStash::ConfigurationError, "Invalid `ssl_client_authentication` value #{@ssl_client_authentication}"
|
407
435
|
end
|
408
436
|
|
409
|
-
def
|
410
|
-
|
437
|
+
def ssl_certificate_configured?
|
438
|
+
!(@ssl_certificate.nil? || @ssl_certificate.empty?)
|
411
439
|
end
|
412
440
|
|
413
|
-
def
|
414
|
-
|
441
|
+
def ssl_keystore_configured?
|
442
|
+
!(@ssl_keystore_path.nil? || @ssl_keystore_path.empty?)
|
415
443
|
end
|
416
444
|
|
417
|
-
def
|
418
|
-
|
445
|
+
def ssl_truststore_configured?
|
446
|
+
!(@ssl_truststore_path.nil? || @ssl_truststore_path.empty?)
|
419
447
|
end
|
420
448
|
|
421
|
-
def
|
422
|
-
|
449
|
+
def ssl_client_authentication_enabled?
|
450
|
+
ssl_client_authentication_optional? || ssl_client_authentication_required?
|
423
451
|
end
|
424
452
|
|
425
|
-
def
|
453
|
+
def ssl_certificate_authorities_configured?
|
426
454
|
@ssl_certificate_authorities && @ssl_certificate_authorities.size > 0
|
427
455
|
end
|
428
456
|
|
429
|
-
def
|
457
|
+
def ssl_client_authentication_required?
|
430
458
|
@ssl_client_authentication && @ssl_client_authentication.downcase == SSL_CLIENT_AUTH_REQUIRED
|
431
459
|
end
|
432
460
|
|
433
|
-
def
|
461
|
+
def ssl_client_authentication_none?
|
434
462
|
@ssl_client_authentication && @ssl_client_authentication.downcase == SSL_CLIENT_AUTH_NONE
|
435
463
|
end
|
436
464
|
|
437
|
-
def
|
465
|
+
def ssl_client_authentication_optional?
|
438
466
|
@ssl_client_authentication && @ssl_client_authentication.downcase == SSL_CLIENT_AUTH_OPTIONAL
|
439
467
|
end
|
440
468
|
|
441
|
-
def
|
469
|
+
def provided_ssl_client_authentication_config(values = [@ssl_client_authentication])
|
442
470
|
if original_params.include?('ssl_verify_mode')
|
443
471
|
['ssl_verify_mode', *values.map { |v| SSL_VERIFY_MODE_TO_CLIENT_AUTHENTICATION_MAP.key(v) }]
|
444
472
|
elsif original_params.include?('verify_mode')
|
@@ -8,4 +8,4 @@ require_jar('io.netty', 'netty-common', '4.1.100.Final')
|
|
8
8
|
require_jar('io.netty', 'netty-transport', '4.1.100.Final')
|
9
9
|
require_jar('io.netty', 'netty-handler', '4.1.100.Final')
|
10
10
|
require_jar('io.netty', 'netty-transport-native-unix-common', '4.1.100.Final')
|
11
|
-
require_jar('org.logstash.plugins.input.http', 'logstash-input-http', '3.
|
11
|
+
require_jar('org.logstash.plugins.input.http', 'logstash-input-http', '3.8.0')
|
@@ -12,11 +12,16 @@ echo "DO NOT USE THESE CERTIFICATES IN PRODUCTION" >> ./README.txt
|
|
12
12
|
# certificate authority
|
13
13
|
openssl genrsa -out root.key 4096
|
14
14
|
openssl req -new -x509 -days 1826 -extensions ca -key root.key -out root.crt -subj "/C=LS/ST=NA/L=Http Input/O=Logstash/CN=root" -config ../openssl.cnf
|
15
|
+
# using keytool here as openssl < 3.2 won't add the "2.16.840.1.113894.746875.1.1" OID to make the cert "trusted" # See more:
|
16
|
+
# * https://github.com/openssl/openssl/pull/19025
|
17
|
+
# * https://github.com/openssl/openssl/commit/e869c867c1c405de3b6538586f17b67937556a4b
|
18
|
+
keytool -import -file root.crt -alias rootCA -keystore truststore.jks -noprompt -storepass 12345678
|
15
19
|
|
16
20
|
# server certificate from root
|
17
21
|
openssl genrsa -out server_from_root.key 4096
|
18
22
|
openssl req -new -key server_from_root.key -out server_from_root.csr -subj "/C=LS/ST=NA/L=Http Input/O=Logstash/CN=server" -config ../openssl.cnf
|
19
23
|
openssl x509 -req -extensions server_cert -extfile ../openssl.cnf -days 1096 -in server_from_root.csr -CA root.crt -CAkey root.key -set_serial 03 -out server_from_root.crt
|
24
|
+
openssl pkcs12 -export -out server_from_root.p12 -inkey server_from_root.key -in server_from_root.crt -certfile root.crt -password pass:12345678
|
20
25
|
|
21
26
|
# client certificate from root
|
22
27
|
openssl genrsa -out client_from_root.key 4096
|
Binary file
|
Binary file
|
data/spec/inputs/http_spec.rb
CHANGED
@@ -735,6 +735,16 @@ describe LogStash::Inputs::Http do
|
|
735
735
|
end
|
736
736
|
end
|
737
737
|
|
738
|
+
context "and with :ssl_keystore_path" do
|
739
|
+
let(:config) do
|
740
|
+
super().merge('ssl_keystore_path' => certificate_path( 'server_from_root.p12'), 'ssl_enabled' => true )
|
741
|
+
end
|
742
|
+
|
743
|
+
it "should raise a configuration error" do
|
744
|
+
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use either an `ssl_certificate` or an `ssl_keystore_path`/i
|
745
|
+
end
|
746
|
+
end
|
747
|
+
|
738
748
|
context "with ssl_client_authentication" do
|
739
749
|
context "normalized from ssl_verify_mode 'none'" do
|
740
750
|
let(:config) { super().merge("ssl_verify_mode" => "none") }
|
@@ -766,7 +776,7 @@ describe LogStash::Inputs::Http do
|
|
766
776
|
context "with no ssl_certificate_authorities set " do
|
767
777
|
let(:config) { super().reject { |key| "ssl_certificate_authorities".eql?(key) } }
|
768
778
|
it "raise a configuration error" do
|
769
|
-
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "Using `ssl_verify_mode` set to `peer` or `force_peer`, requires the configuration of `ssl_certificate_authorities`")
|
779
|
+
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "Using `ssl_verify_mode` set to `peer` or `force_peer`, requires the configuration of `ssl_certificate_authorities` or `ssl_truststore_path`")
|
770
780
|
end
|
771
781
|
end
|
772
782
|
end
|
@@ -786,13 +796,21 @@ describe LogStash::Inputs::Http do
|
|
786
796
|
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "The configuration of `ssl_certificate_authorities` requires setting `ssl_client_authentication` to `optional` or 'required'")
|
787
797
|
end
|
788
798
|
end
|
799
|
+
|
800
|
+
context "with ssl_truststore_path set" do
|
801
|
+
let(:config) { super().merge("ssl_truststore_path" => certificate_path('truststore.jks'), "ssl_truststore_password" => "12345678") }
|
802
|
+
|
803
|
+
it "raise a configuration error" do
|
804
|
+
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "The configuration of `ssl_truststore_path` requires setting `ssl_client_authentication` to `optional` or 'required'")
|
805
|
+
end
|
806
|
+
end
|
789
807
|
end
|
790
808
|
|
791
809
|
context "configured to 'required'" do
|
792
810
|
let(:config) { super().merge("ssl_client_authentication" => "required") }
|
793
811
|
|
794
812
|
it "raise a ConfigurationError when certificate_authorities is not set" do
|
795
|
-
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "Using `ssl_client_authentication` set to `optional` or `required`, requires the configuration of `ssl_certificate_authorities`")
|
813
|
+
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "Using `ssl_client_authentication` set to `optional` or `required`, requires the configuration of `ssl_certificate_authorities` or `ssl_truststore_path`")
|
796
814
|
end
|
797
815
|
|
798
816
|
context "with ssl_certificate_authorities set" do
|
@@ -802,13 +820,30 @@ describe LogStash::Inputs::Http do
|
|
802
820
|
expect {subject.register}.not_to raise_error
|
803
821
|
end
|
804
822
|
end
|
823
|
+
|
824
|
+
context "with ssl_truststore_path set to a valid truststore" do
|
825
|
+
let(:config) { super().merge("ssl_truststore_path" => certificate_path('truststore.jks'), "ssl_truststore_password" => "12345678") }
|
826
|
+
|
827
|
+
it "doesn't raise a configuration error" do
|
828
|
+
expect {subject.register}.not_to raise_error
|
829
|
+
end
|
830
|
+
end
|
831
|
+
|
832
|
+
context "with ssl_truststore_path set with no trusted certificate" do
|
833
|
+
let(:truststore_path) { certificate_path('server_from_root.p12') }
|
834
|
+
let(:config) { super().merge("ssl_truststore_path" => truststore_path, "ssl_truststore_password" => "12345678") }
|
835
|
+
|
836
|
+
it "raise a configuration error" do
|
837
|
+
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "The provided Trust Store file does not contains any trusted certificate entry: #{truststore_path}")
|
838
|
+
end
|
839
|
+
end
|
805
840
|
end
|
806
841
|
|
807
842
|
context "configured to 'optional'" do
|
808
843
|
let(:config) { super().merge("ssl_client_authentication" => "optional") }
|
809
844
|
|
810
845
|
it "raise a ConfigurationError when certificate_authorities is not set" do
|
811
|
-
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "Using `ssl_client_authentication` set to `optional` or `required`, requires the configuration of `ssl_certificate_authorities`")
|
846
|
+
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "Using `ssl_client_authentication` set to `optional` or `required`, requires the configuration of `ssl_certificate_authorities` or `ssl_truststore_path`")
|
812
847
|
end
|
813
848
|
|
814
849
|
context "with certificate_authorities set" do
|
@@ -818,9 +853,71 @@ describe LogStash::Inputs::Http do
|
|
818
853
|
expect {subject.register}.not_to raise_error
|
819
854
|
end
|
820
855
|
end
|
856
|
+
|
857
|
+
context "with ssl_truststore_path set" do
|
858
|
+
let(:config) { super().merge("ssl_truststore_path" => certificate_path('truststore.jks'), "ssl_truststore_password" => "12345678") }
|
859
|
+
|
860
|
+
it "doesn't raise a configuration error" do
|
861
|
+
expect {subject.register}.not_to raise_error
|
862
|
+
end
|
863
|
+
end
|
864
|
+
|
865
|
+
context "with ssl_truststore_path set with no trusted certificate" do
|
866
|
+
let(:config) { super().merge("ssl_truststore_path" => certificate_path('server_from_root.p12'), "ssl_truststore_password" => "12345678") }
|
867
|
+
|
868
|
+
it "doesn't raise a configuration error" do
|
869
|
+
expect {subject.register}.not_to raise_error
|
870
|
+
end
|
871
|
+
end
|
872
|
+
end
|
873
|
+
end
|
874
|
+
end
|
875
|
+
context "with :ssl_keystore_path" do
|
876
|
+
let(:config) do
|
877
|
+
{
|
878
|
+
"port" => port,
|
879
|
+
"ssl_enabled" => true,
|
880
|
+
"ssl_keystore_path" => certificate_path( 'server_from_root.p12'),
|
881
|
+
"ssl_keystore_password" => "12345678"
|
882
|
+
}
|
883
|
+
end
|
884
|
+
|
885
|
+
subject { LogStash::Inputs::Http.new(config) }
|
886
|
+
|
887
|
+
it "should not raise exception" do
|
888
|
+
expect { subject.register }.to_not raise_exception
|
889
|
+
end
|
890
|
+
end
|
891
|
+
context "with :ssl_truststore_path" do
|
892
|
+
let(:config) do
|
893
|
+
{
|
894
|
+
"port" => port,
|
895
|
+
"ssl_enabled" => true,
|
896
|
+
"ssl_client_authentication" => "optional",
|
897
|
+
"ssl_keystore_path" => certificate_path( 'server_from_root.p12'),
|
898
|
+
"ssl_keystore_password" => "12345678",
|
899
|
+
"ssl_truststore_path" => certificate_path( 'truststore.jks'),
|
900
|
+
"ssl_truststore_password" => "12345678"
|
901
|
+
}
|
902
|
+
end
|
903
|
+
|
904
|
+
subject { LogStash::Inputs::Http.new(config) }
|
905
|
+
|
906
|
+
it "should not raise exception" do
|
907
|
+
expect { subject.register }.to_not raise_exception
|
908
|
+
end
|
909
|
+
|
910
|
+
context "and with :ssl_certificate_authorities configured" do
|
911
|
+
let(:config) do
|
912
|
+
super().merge('ssl_certificate_authorities' => [certificate_path( 'root.crt')], 'ssl_enabled' => true )
|
913
|
+
end
|
914
|
+
|
915
|
+
it "should raise a configuration error" do
|
916
|
+
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use either an `ssl_certificate_authorities` or an `ssl_truststore_path`/i
|
821
917
|
end
|
822
918
|
end
|
823
919
|
end
|
920
|
+
|
824
921
|
end
|
825
922
|
end
|
826
923
|
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.8.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,6 +184,8 @@ files:
|
|
184
184
|
- spec/fixtures/certs/generated/server_from_root.crt
|
185
185
|
- spec/fixtures/certs/generated/server_from_root.key
|
186
186
|
- spec/fixtures/certs/generated/server_from_root.key.pkcs8
|
187
|
+
- spec/fixtures/certs/generated/server_from_root.p12
|
188
|
+
- spec/fixtures/certs/generated/truststore.jks
|
187
189
|
- spec/fixtures/certs/openssl.cnf
|
188
190
|
- spec/inputs/helpers.rb
|
189
191
|
- spec/inputs/http_spec.rb
|
@@ -194,7 +196,7 @@ files:
|
|
194
196
|
- vendor/jar-dependencies/io/netty/netty-handler/4.1.100.Final/netty-handler-4.1.100.Final.jar
|
195
197
|
- vendor/jar-dependencies/io/netty/netty-transport-native-unix-common/4.1.100.Final/netty-transport-native-unix-common-4.1.100.Final.jar
|
196
198
|
- vendor/jar-dependencies/io/netty/netty-transport/4.1.100.Final/netty-transport-4.1.100.Final.jar
|
197
|
-
- vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/3.
|
199
|
+
- vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/3.8.0/logstash-input-http-3.8.0.jar
|
198
200
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
199
201
|
licenses:
|
200
202
|
- Apache License (2.0)
|
@@ -235,6 +237,8 @@ test_files:
|
|
235
237
|
- spec/fixtures/certs/generated/server_from_root.crt
|
236
238
|
- spec/fixtures/certs/generated/server_from_root.key
|
237
239
|
- spec/fixtures/certs/generated/server_from_root.key.pkcs8
|
240
|
+
- spec/fixtures/certs/generated/server_from_root.p12
|
241
|
+
- spec/fixtures/certs/generated/truststore.jks
|
238
242
|
- spec/fixtures/certs/openssl.cnf
|
239
243
|
- spec/inputs/helpers.rb
|
240
244
|
- spec/inputs/http_spec.rb
|