logstash-integration-logstash 0.0.3-java → 0.0.4-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/VERSION +1 -1
  4. data/docs/index.asciidoc +4 -3
  5. data/docs/input-logstash.asciidoc +3 -5
  6. data/docs/output-logstash.asciidoc +35 -22
  7. data/lib/logstash/inputs/logstash.rb +1 -1
  8. data/lib/logstash/outputs/logstash.rb +29 -4
  9. data/logstash-integration-logstash.gemspec +1 -0
  10. data/spec/fixtures/certs/generated/client_from_root.jks +0 -0
  11. data/spec/fixtures/certs/generated/client_from_root.key.pem +50 -50
  12. data/spec/fixtures/certs/generated/client_from_root.key.pkcs8.pem +52 -52
  13. data/spec/fixtures/certs/generated/client_from_root.p12 +0 -0
  14. data/spec/fixtures/certs/generated/client_from_root.pem +28 -28
  15. data/spec/fixtures/certs/generated/client_from_untrusted.jks +0 -0
  16. data/spec/fixtures/certs/generated/client_from_untrusted.key.pem +50 -50
  17. data/spec/fixtures/certs/generated/client_from_untrusted.key.pkcs8.pem +52 -52
  18. data/spec/fixtures/certs/generated/client_from_untrusted.p12 +0 -0
  19. data/spec/fixtures/certs/generated/client_from_untrusted.pem +28 -28
  20. data/spec/fixtures/certs/generated/client_self_signed.jks +0 -0
  21. data/spec/fixtures/certs/generated/client_self_signed.key.pem +50 -50
  22. data/spec/fixtures/certs/generated/client_self_signed.key.pkcs8.pem +52 -52
  23. data/spec/fixtures/certs/generated/client_self_signed.p12 +0 -0
  24. data/spec/fixtures/certs/generated/client_self_signed.pem +28 -28
  25. data/spec/fixtures/certs/generated/root.key.pem +50 -50
  26. data/spec/fixtures/certs/generated/root.pem +28 -28
  27. data/spec/fixtures/certs/generated/server_from_root-key-pkcs8.pem +50 -50
  28. data/spec/fixtures/certs/generated/server_from_root.jks +0 -0
  29. data/spec/fixtures/certs/generated/server_from_root.key.pem +50 -50
  30. data/spec/fixtures/certs/generated/server_from_root.key.pkcs8.pem +52 -52
  31. data/spec/fixtures/certs/generated/server_from_root.p12 +0 -0
  32. data/spec/fixtures/certs/generated/server_from_root.pem +29 -29
  33. data/spec/fixtures/certs/generated/untrusted.key.pem +50 -50
  34. data/spec/fixtures/certs/generated/untrusted.pem +28 -28
  35. data/spec/unit/full_transmission_spec.rb +7 -7
  36. data/spec/unit/logstash_input_spec.rb +31 -2
  37. data/spec/unit/logstash_output_spec.rb +25 -2
  38. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d00baaa86ceb845df51e6a51e7690b675849c78c71a60f5a7a8e1419085a20fb
4
- data.tar.gz: 1b7f3c00680fd4872dd4ecb23cb99f6fe31534c67214aea873da3e7a91ffa3ab
3
+ metadata.gz: 27a5393272c2cfde9c75782f701b1751dd1d3b35225876fb54c36f13ba0696b6
4
+ data.tar.gz: d7d9337f2c85dcaddfbc7ef79723e3993dda720fe407b5b189d8bc9ee4e1570a
5
5
  SHA512:
6
- metadata.gz: 766dbd186c6f11110fa26dd7434bc11b5c9267fdfe371b9e5cf86c134988f25f2fdb3a140447a23a36d135489fdd2c309ed815879f991ef5b6b7768cc1e02260
7
- data.tar.gz: deb1117264de1d90453b5407751d7d8cd40add339d3de8b3bfd0f6b5f33aa87e99c28da96c8e2ea62a40f1b03b2efa3f3462d88d057370d79de5359343761e1f
6
+ metadata.gz: e4bf91d282d3bfac6a0dae1864db3da98f6ffa02623b9f68eb683d77155d97910b7480442f53a992dda28883a05582e610bc037499b4ed5fcbf51a33b19d65f0
7
+ data.tar.gz: c6eeb96c776110b415e48d0ce2299f102a3469aaf9673b8870b8e46c02f569c2cf0fd21782a273aa34923673b824730cf128a1569c1e38fdfbc9d831642eb5a9
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.0.4
2
+ - Simplify configuration [#13](https://github.com/logstash-plugins/logstash-integration-logstash/pull/13)
3
+ - Introduce a default `port` of `9800` for both input and output plugins
4
+ - BREAKING: Introduce `hosts` config to output plugin, _replacing_ its separate `host` and `port` configurations
5
+
1
6
  ## 0.0.3
2
7
  - Doc: Minor doc changes and version bump to facilitate adding integration files to doc build [#14](https://github.com/logstash-plugins/logstash-integration-logstash/pull/14)
3
8
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/docs/index.asciidoc CHANGED
@@ -40,7 +40,7 @@ NOTE: You will need a TCP route from the upstream pipeline to the interface that
40
40
  ----
41
41
  input {
42
42
  logstash {
43
- port => 8080
43
+ port => 9800
44
44
 
45
45
  # SSL IDENTITY <1>
46
46
  ssl_keystore_path => "/path/to/identity.p12"
@@ -53,12 +53,13 @@ input {
53
53
  Once the downstream pipeline is configured and running, you may send events from any number of upstream pipelines by adding a `logstash` output plugin that points to the downstream input.
54
54
  You may need to configure SSL to trust the certificates presented by the downstream input plugin.
55
55
 
56
+ NOTE: Single host endpoint is supported for `hosts`. Multi-host support is coming soon.
57
+
56
58
  [source]
57
59
  ----
58
60
  output {
59
61
  logstash {
60
- host => "10.0.0.123"
61
- port => 8080
62
+ hosts => "10.0.0.123:9800"
62
63
 
63
64
  # SSL TRUST <1>
64
65
  ssl_truststore_path => "/path/to/truststore.p12"
@@ -23,7 +23,7 @@ include::{include_path}/plugin_header-integration.asciidoc[]
23
23
  ==== Description
24
24
 
25
25
  Listen for events that are sent by a <<plugins-outputs-logstash>> in a pipeline that may be in another process or on another host.
26
- The upstream output must have a TCP route to the port on an interface that this plugin is bound to.
26
+ The upstream output must have a TCP route to the port (defaults to 9800) on an interface that this plugin is bound to.
27
27
 
28
28
  NOTE: Sending events to this input by _any_ means other than `plugins-outputs-logstash` is neither advised nor supported.
29
29
  We will maintain cross-compatibility with any two supported versions of output/input pair and reserve the right to change details such as protocol and encoding.
@@ -40,7 +40,6 @@ We will maintain cross-compatibility with any two supported versions of output/i
40
40
  ----
41
41
  input {
42
42
  logstash {
43
- port => 8080
44
43
  ssl_keystore_path
45
44
  => "/path/to/logstash.p12"
46
45
  ssl_keystore_password
@@ -55,7 +54,6 @@ input {
55
54
  ----
56
55
  input {
57
56
  logstash {
58
- port => 8080
59
57
  ssl_enabled => false
60
58
  }
61
59
  }
@@ -107,7 +105,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
107
105
  |Setting |Input type |Required
108
106
  | <<plugins-{type}s-{plugin}-host>> |<<string,string>> |No
109
107
  | <<plugins-{type}s-{plugin}-password>> |<<password,password>>|No
110
- | <<plugins-{type}s-{plugin}-port>> |<<number,number>> |Yes
108
+ | <<plugins-{type}s-{plugin}-port>> |<<number,number>> |No
111
109
  | <<plugins-{type}s-{plugin}-ssl_certificate>> | <<path,path>>|No
112
110
  | <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> |<<array,array>>|No
113
111
  | <<plugins-{type}s-{plugin}-ssl_client_authentication>> | <<string,string>>, one of `["none", "optional", "required"]`|No
@@ -146,7 +144,7 @@ Requires <<plugins-{type}s-{plugin}-username>>.
146
144
  ===== `port`
147
145
 
148
146
  * Value type is a <<number,number>> port
149
- * There is no default value
147
+ * Default value is 9800
150
148
 
151
149
  Specify which port to listen on.
152
150
 
@@ -23,7 +23,7 @@ include::{include_path}/plugin_header-integration.asciidoc[]
23
23
  ==== Description
24
24
 
25
25
  Send events to a <<plugins-inputs-logstash>> in a pipeline that may be in another process or on another host.
26
- You must have a TCP route to the port on an interface that the downstream input is bound to.
26
+ You must have a TCP route to the port (defaults to 9800) on an interface that the downstream input is bound to.
27
27
 
28
28
  NOTE: Sending events to _any_ destination other than <<plugins-inputs-logstash>> is neither advised nor supported.
29
29
  We will maintain cross-compatibility with any two supported versions of output/input pair and reserve the right to change details such as protocol and encoding.
@@ -40,8 +40,7 @@ NOTE: Sending events to _any_ destination other than <<plugins-inputs-logstash>>
40
40
  ----
41
41
  output {
42
42
  logstash {
43
- host => "10.0.0.123"
44
- port => 8080
43
+ hosts => "10.0.0.123:9801"
45
44
  }
46
45
  }
47
46
  ----
@@ -52,8 +51,7 @@ output {
52
51
  ----
53
52
  output {
54
53
  logstash {
55
- host => "10.0.0.123"
56
- port => 8080
54
+ hosts => "10.0.0.123:9801"
57
55
  ssl_enabled
58
56
  => false
59
57
  }
@@ -65,15 +63,15 @@ output {
65
63
  [id="plugins-{type}s-{plugin}-config-connecting"]
66
64
  ===== Configuration Concepts
67
65
 
68
- This output plugin needs to be configured to connect to a <<plugins-inputs-logstash>> by specifying its <<plugins-{type}s-{plugin}-host>> and <<plugins-{type}s-{plugin}-port>>.
69
- Depending on the downstream plugin's configuration, you may need to also configure SSL and/or credentials.
66
+ This output plugin needs to be configured to connect to a <<plugins-inputs-logstash>> by specifying its <<plugins-{type}s-{plugin}-hosts>>.
67
+ Depending on the downstream plugin's configuration, you may need to also configure the target port, SSL, and/or credentials.
70
68
 
71
69
  [id="plugins-{type}s-{plugin}-config-ssl-trust"]
72
70
  ===== Security: SSL Trust
73
71
 
74
72
  When communicating over SSL, this plugin establishes trust of the server it connects to before transmitting credentials or events.
75
73
 
76
- It does so by ensuring that the server presents a currently-valid certificate with identity claims matching the <<plugins-{type}s-{plugin}-host>> we are configured to connect to, signed by a trusted signing authority, along with proof-of-possession of the associated private key material.
74
+ It does so by ensuring that the responding server presents a currently-valid certificate with identity claims matching host it is connecting to, signed by a trusted signing authority, along with proof-of-possession of the associated private key material.
77
75
 
78
76
  The system trust store is used by default.
79
77
  You can provide an _alternate_ source of trust with _ONE OF_:
@@ -105,9 +103,8 @@ This plugin supports the following configuration options plus the <<plugins-{typ
105
103
  [cols="<,<,<",options="header",]
106
104
  |=======================================================================
107
105
  |Setting |Input type |Required
108
- | <<plugins-{type}s-{plugin}-host>> |<<string,string>> |Yes
106
+ | <<plugins-{type}s-{plugin}-hosts>> |<<string,string>> |Yes
109
107
  | <<plugins-{type}s-{plugin}-password>> |<<password,password>>|No
110
- | <<plugins-{type}s-{plugin}-port>> |<<number,number>> |Yes
111
108
  | <<plugins-{type}s-{plugin}-ssl_enabled>> |<<boolean,boolean>>|No
112
109
  | <<plugins-{type}s-{plugin}-ssl_certificate>> | <<path,path>>|No
113
110
  | <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> |list of <<path,path>>|No
@@ -125,23 +122,39 @@ output plugins.
125
122
 
126
123
  &nbsp;
127
124
 
128
- [id="plugins-{type}s-{plugin}-host"]
129
- ===== `host`
125
+ [id="plugins-{type}s-{plugin}-hosts"]
126
+ ===== `hosts`
130
127
 
131
- * Value type is a <<string,string>> ip address or hostname
132
- * There is no default value
128
+ * Value type is <<string,string>>
129
+ * There is no default value for this setting.
130
+ * Constraints:
131
+ ** When using IPv6, IP address must be in an enclosed in brackets.
132
+ ** When a port is not provided, the default `9800` is used.
133
133
 
134
- Specify which host to connect to by providing its ip address or resolvable hostname.
134
+ A downstream input {ls} host or IP address to connect.
135
135
 
136
- NOTE: when using SSL, the server that responds must present a certificated with identity claim matching this host name or ip address.
136
+ NOTE: Single host endpoint is supported for `hosts`. Multi-host support is coming soon.
137
137
 
138
- [id="plugins-{type}s-{plugin}-port"]
139
- ===== `port`
138
+ Host can be any of IPv4, IPv6 (in enclosed bracket) or host name, examples:
140
139
 
141
- * Value type is a <<number,number>> port
142
- * There is no default value
140
+ * `"127.0.0.1"`
141
+ * `"127.0.0.1:9801"`
142
+ * `"ds.example.com"`
143
+ * `"ds.example:9802"`
144
+ * `"[::1]"`
145
+ * `"[::1]:9803"`
146
+ * `"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"`
147
+ * `"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:9804"`
143
148
 
144
- Specify which port to connect to.
149
+ When connecting, communication to downstream input {ls} is secured with SSL unless configured otherwise.
150
+
151
+ [WARNING]
152
+ .Disabling SSL is dangerous
153
+ ============
154
+ The security of this plugin relies on SSL to avoid leaking credentials and to avoid running illegitimate ingest pipeline definitions.
155
+ ============
156
+
157
+ NOTE: when using SSL, the server that responds must present a certificated with identity claim matching this host name or ip address.
145
158
 
146
159
  [id="plugins-{type}s-{plugin}-password"]
147
160
  ===== `password`
@@ -244,7 +257,7 @@ Password for the <<plugins-{type}s-{plugin}-ssl_truststore_path>>
244
257
 
245
258
  * Value type is <<string,string>>
246
259
  * The supported modes are:
247
- ** `full`: verifies that a certificate provided by the client has an identity claim matching <<plugins-{type}s-{plugin}-host>>, is signed by a trusted authority (CA), is within its valid date range, and that the client has possession of the associated key.
260
+ ** `full`: verifies that a certificate provided by the client has an identity claim matching <<plugins-{type}s-{plugin}-hosts>>, is signed by a trusted authority (CA), is within its valid date range, and that the client has possession of the associated key.
248
261
  ** `none`: performs no validation of the presented certificate
249
262
 
250
263
  * The default value is `full`.
@@ -13,7 +13,7 @@ class LogStash::Inputs::Logstash < LogStash::Inputs::Base
13
13
  config_name "logstash"
14
14
 
15
15
  config :host, :validate => :string, :default => "0.0.0.0"
16
- config :port, :validate => :number, :required => true
16
+ config :port, :validate => :number, :default => 9800
17
17
 
18
18
  # optional username/password credentials
19
19
  config :username, :validate => :string, :required => false
@@ -4,14 +4,28 @@ require 'logstash/outputs/base'
4
4
  require 'logstash/namespace'
5
5
 
6
6
  require "logstash/plugin_mixins/plugin_factory_support"
7
+ require "logstash/plugin_mixins/validator_support/required_host_optional_port_validation_adapter"
7
8
 
8
9
  class LogStash::Outputs::Logstash < LogStash::Outputs::Base
10
+ extend LogStash::PluginMixins::ValidatorSupport::RequiredHostOptionalPortValidationAdapter
11
+
9
12
  include LogStash::PluginMixins::PluginFactorySupport
10
13
 
11
14
  config_name "logstash"
12
15
 
13
- config :host, :validate => :string, :required => true
14
- config :port, :validate => :number, :required => true
16
+ # Sets the host of the downstream Logstash instance.
17
+ # Host can be any of IPv4, IPv6 (requires to be in enclosed bracket) or host name, the forms:
18
+ # `"127.0.0.1"`
19
+ # `"127.0.0.1:9800"`
20
+ # `"foo-bar.com"`
21
+ # `"foo-bar.com:9800"`
22
+ # `"[::1]"`
23
+ # `"[::1]:9000"`
24
+ # `"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"`
25
+ #
26
+ # NOTE: `hosts` naming is intentional and multi-host support is planned.
27
+ #
28
+ config :hosts, :validate => :required_host_optional_port, :required => true
15
29
 
16
30
  # optional username/password credentials
17
31
  config :username, :validate => :string, :required => false
@@ -31,7 +45,7 @@ class LogStash::Outputs::Logstash < LogStash::Outputs::Base
31
45
  config :ssl_verification_mode, :validate => %w(full none), :default => 'full'
32
46
 
33
47
  # SSL:TRUST:SOURCE ca file
34
- config :ssl_certificate_authorities, :validate => :path, :list => true
48
+ config :ssl_certificate_authorities, :validate => :path, :list => true
35
49
 
36
50
  # SSL:TRUST:SOURCE truststore
37
51
  config :ssl_truststore_path, :validate => :path
@@ -83,10 +97,12 @@ class LogStash::Outputs::Logstash < LogStash::Outputs::Base
83
97
  logger.debug('inner HTTP output plugin has been closed')
84
98
  end
85
99
 
100
+ DEFAULT_PORT = 9800.freeze
101
+
86
102
  def inner_http_output_options
87
103
  @_inner_http_output_options ||= begin
88
104
  http_options = {
89
- 'url' => "#{@ssl_enabled ? 'https' : 'http'}://#{@host}:#{@port}",
105
+ 'url' => construct_host_uri.to_s,
90
106
  'http_method' => 'post',
91
107
  'retry_non_idempotent' => 'true',
92
108
 
@@ -119,6 +135,15 @@ class LogStash::Outputs::Logstash < LogStash::Outputs::Base
119
135
  end
120
136
  end
121
137
 
138
+ def construct_host_uri
139
+ scheme = @ssl_enabled ? 'https'.freeze : 'http'.freeze
140
+ host_port_pair = @hosts # Struct(:host, :port)
141
+ uri = LogStash::Util::SafeURI.new(host_port_pair[:host])
142
+ uri.port = host_port_pair[:port].nil? ? DEFAULT_PORT : host_port_pair[:port]
143
+ uri.update(:scheme, scheme)
144
+ uri.freeze
145
+ end
146
+
122
147
  def ssl_identity_options
123
148
  if @ssl_certificate && @ssl_keystore_path
124
149
  fail(LogStash::ConfigurationError, 'SSL identity can be configured with EITHER `ssl_certificate` OR `ssl_keystore_*`, but not both')
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_runtime_dependency "logstash-core-plugin-api", ">= 2.1.12", "<= 2.99"
27
27
  s.add_runtime_dependency "logstash-mixin-plugin_factory_support", "~> 1.0"
28
+ s.add_runtime_dependency "logstash-mixin-validator_support", "~> 1.1"
28
29
  s.add_runtime_dependency "logstash-codec-json_lines", "~> 3.1"
29
30
 
30
31
  s.add_runtime_dependency "logstash-input-http", ">= 3.7.0" # some params not available in older versions because they are renamed, such as `cacert` to `ssl_certificate_authorities`
@@ -1,52 +1,52 @@
1
1
  -----BEGIN 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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
- E+kVIIWAv8/0kDelr6Wd7AnLh8Zm9jJGQ2QGTt2nGs6c+g5scm5FEDO8IiEKmc4z
9
- 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
- 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
- DLZxFjeddeyf3/ARZZdPJ1/sbapxyqRWyCe+kc/LZXT9P9cHOIjVWpe2dAwR6QLL
12
- 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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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
- uqwG0qbcV1m7CI+apxuGZXU1Vy5cBq4dUsDSJm/qtecf7o57ckViaRORW0ewGYY3
21
- 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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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
- 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
- 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
- JzTV9SwHIhKqLxg4DE59vwbit3XTQFpe7BzLLz4XY7nKBRLTeslpv2COv1XZErTP
44
- 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
- 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
- 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
- 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
- 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
- +/eNCSl1maOzotu0rhQ11aivkdDzlfOK70qUjZLskYU0Gmw5A2mh57KYAdVeVmwW
50
- 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
51
- xUKu1zX8CNNJGBd63eLC0TC4pzXG
2
+ MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDN6cNsA43zDVMD
3
+ u7UQt8rejwFHvE2lCIPKQW0cUaunm1jQiWTtiTzpUDkLQM2j+t1Q56UJ7Z/zjBr3
4
+ 44f2yF9GB8+oOtmoP30xt/+vvyewL4i1i/63189TP5O7eGDw8kj+hyDuvNDvulq1
5
+ 1YddXPdXRLWjG6zXbmP3iOL/jjzNiMVNLOR7q3nFcpikYZYA9KZDE1qivb6vaASm
6
+ p9E098r4P1MfJlfSw5H8wPUA4sxtU5Ob2mzCGx8Coi5N8ZUlYAQw9S4gwLnGvt77
7
+ xpltMM/VMPz90OvP20bNf3hAvW3Zvv7DkHvlaaW1kLTVFob96UKSlcxum3wHB93y
8
+ GZbYqyqoewIaRglO2OS9Mu1YpKKqk5pr7S6pFcpRPHQjFF0eVJpyBUGUuIOxOsUC
9
+ Ex6VJK7vlmAruMCuJwsAOXjwYcNr0AHJOv9jGnrba9N9jvr1gEpx8sG83upLKAl/
10
+ uNnhsVYhSo8rOhw40VzOqJYjeDic2UAjfIgbz3mVJ8nD/h7gxOiGfGuYVUhIbOw1
11
+ GyKXUPjobdu3tkO+TofYgNbF2TdJWZHHiSE8wz4eaB0UIUa1lIWdsF1Cwz0xIJe/
12
+ 46Rf5pQcHxND81MIwPVkK4WuYAqbQ+JwOZIMIStZdG9Lh2aPlfsZqHwupNPfkZM/
13
+ SgFM7cZkU443hs0NW0i0LhsSslsA0QIDAQABAoICABj5qo9WWwhI7HG+eba+ZCfc
14
+ do5J460JvFpy1xYhPc3FhN8+WvSIuc+ewFyCDq8+BUwD3Lu4i7cRnk/E1D/1i8DF
15
+ v8Uq5i2HDdtS8vtRFzJCgbVrdoi771SsmHGbpz5yVLIyl6b9VeZN1yTI8nM7jHCU
16
+ T+epuqwiopNqkgXnLa7MUQoMUOZDJTDytlrxzyzsf6IRHeQxWYiS+EVyg2iGSaMU
17
+ ozNbBjn1KKbcjJr/50W3Zmb39ksQ2RELtMwVaj6vR7LceizU03OswQUO0Jsy2XKF
18
+ T5pFleSPNyZDuMU5dLJ9fQ8hXjW0O7orBBP4eIUhnsaCztn3l/KOXLg5rFc5Y6H1
19
+ 5awWy6hfuThbQ2MTbbEUOvcktQJkGrN3eeEl/RcbusSCWRU+ptzsubi3esG2EVYx
20
+ I/KJDd6zXtl4UYEsbtDMMoG02Hz8uU9QTrtbOrh9ByOCE4s6BrTL4K3ErFzVgG1+
21
+ 0ilNk0qSFf88/QBH/ofo/cRXS/It05LH0xIjxUoO1DxabsmCoRlFeZujteRNRYGC
22
+ RwVX8mFp9TEJ4mlmJOAEtx+oU7dhT7q082q5oZgOmt3rbII5GsmRyvlFNGRoUwQe
23
+ OowjO6PgF0/d/pTXY0hN+pb6C/q/dP91s2dMZxntuTM8GP4oNnifeOVcXJ5p3rwz
24
+ F2CFmCVUHxjMezk4AnNBAoIBAQD7Mevw5+gPXI29jDUKSkcY7SsqbJYMDd6/K50q
25
+ PWssaNQeebrGo7nUrUYIrn7Np/rzBWQd22aKVFoec7fF6c/yRB5hHedkHoBmkI+7
26
+ dhFSTfF/R8XMmxRrnh68GqezKiaB3ECF37111WNtvjNVAJZFXftfmI/ifov8yhJO
27
+ 2F1wO6+86Y/dQUZmrn8LyzXXjcUlVv7x76PjydTYJB5aXPTLQn1ABQD+rABs6KvL
28
+ 2m77vwS6X+6r+4jIwdJFuRjgao10dTucyFcs1Jmm/L/twv980xpt2HKa6QZ+emj+
29
+ CGN+cuCpVTnrMEWr0pnxFMNV39RHYY1EsjWTnGil7/aYMACpAoIBAQDR2hnFPsys
30
+ LH6KCAQcsAj8G8UBnjHKWmVYCvVp3+Xi3BqhAUEbYlCe6g2cP4w3j6Bn5iy6zEvb
31
+ A1W3N4rMevtzfFut2ZDtxsr6gN7iXP9/chDqy6DGb5X7AuJP/lUldC8cDqpuRGZQ
32
+ uM+1/SigNrVWzOP27Jm/xbdrBxo6a7c1rybadZJLTooCSKAFb+u59tG/FNIMkuyT
33
+ 8g7lbC4QSH/aX8RtAdWk2FL4JCeAupOwnDLL2en8n1I1GdCgWGbJoonT6lCtodBH
34
+ aLT2Zf50FEh8ec6sjTo3Ao9remh8Fh5ID7Yzivo5w4WcJYztbF4Ztyd7hZisz86X
35
+ xSC+oHm/bI/pAoIBAB9dSV+IJVKdtNkBA7JoOd5j5qriag3RQYnPMU2P46zk3e98
36
+ NZUN5msmw4Lb/ttA6TWk665Ksc/93k7FFiIxIpTWapCnwjefE1s7G6dFg74qG0hQ
37
+ NuNoTbFuSdok3eGiFrLKRIgyup5W6ZZPVGt9qkW5CWUTUIvwTxxeQtDzdR9JZJUK
38
+ +LqgpuC1Uwmu8ucaPY5/AVBGIsmTbu8Z+2w/BRXIFImE1m32Hgt7NdA7UvY+EKIQ
39
+ zmVM//RJNy8bgH6s70KmTK4z2aawWQsfrftLCMmWNkuW5iBvji8Gq8tkUr/8Kg8a
40
+ pCO4oEpm/m+6rvUvAHt1M8VrFwN6WRq3DqxL+hkCggEAQghM/6IJKUw+7RQkpxpF
41
+ WX8reJzcsf3L0e5w1sXbQo1b27nXUNSY5chkS/w7FOie4tKs1IKgg+QCvso9ZKZ2
42
+ JRrGhmflkMxy5mxStgvpYaL068zzZD2MhhWcPOucw1JR2JRM0LG5OEFPKsbkV7Wf
43
+ ThbezL4aixud4ZG0kRl/5uacZTWFuSiXiKxtnghftn6R9XyJs+cvhkYupcZqoDkP
44
+ 8hkcZ+ih32MqiGZn/7u16WbdHQQO+qzvY0IiQbJPdbctg39Br8ExFqc9+iKR9NjF
45
+ DlYN0IIIBXNKydkUs6cKFEbNYF6k6jQ6AK5YMAVfftwBEn8xUX96VIt1CEbayH9S
46
+ sQKCAQEA55p0t4PZ4ATXxWX7Lv/9yXNdQi37e31zl+VxCeI8H+xwZ0Luhkb7xEGP
47
+ T/pXYASzuabRIWnFoj54yWbNfJiSlokfvMbOYgJTFt4xL8rb27IDYO19gwjJ8Ofk
48
+ eo9hxsZlNIKDZWRCCQaMrkz2DknFCX+ICSlsD6BWSFkUZ+fOIRhlznsVgaCCuMf5
49
+ JUq0LcCjhZ/rpWCHq4kuTB32mEPoxvausfNvCYNzgUyuyxbO2zczthXtT+MKpNfV
50
+ 8tQYtWWJrQJuddue2G/inz3w2Uzn+v5UX0kDlZAqTnA8RrgKnzijM6p2u3qjCScw
51
+ CjgbIk+XQOnoNKbVTTRkwYuPtxAl7A==
52
52
  -----END PRIVATE KEY-----
@@ -1,54 +1,54 @@
1
1
  -----BEGIN ENCRYPTED 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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
- 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
- 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
- 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
- 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
- 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
- K1gXEiUPJQ/5yeDsfw85WGD/FCLew2HL4ael9pPwRPI0siXFTvZ/0yTls+vqws6n
28
- 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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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
- XjLzGfYGagWsgpZD967ful7akUFmemcz8afb7fC2ZY8vBTRrwd6R3vcSv1TmQK5S
44
- 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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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
- N0uhkHZMwMNoyzKwg2I3xSrC5Oyz6x80mD2n4kZb8ql5QKBILDINakF4LSCFzEbo
53
- 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
54
54
  -----END ENCRYPTED PRIVATE KEY-----
@@ -1,35 +1,35 @@
1
1
  -----BEGIN CERTIFICATE-----
2
2
  MIIGATCCA+mgAwIBAgIBBDANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJMUzEL
3
3
  MAkGA1UECAwCTkExEzARBgNVBAcMCkh0dHAgSW5wdXQxETAPBgNVBAoMCExvZ3N0
4
- YXNoMQ0wCwYDVQQDDARyb290MB4XDTIzMDkyOTIxMzA0NloXDTI2MDkyOTIxMzA0
5
- NlowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
4
+ YXNoMQ0wCwYDVQQDDARyb290MB4XDTIzMTAwMzA0MzY1MloXDTI2MTAwMzA0MzY1
5
+ MlowUzELMAkGA1UEBhMCTFMxCzAJBgNVBAgMAk5BMRMwEQYDVQQHDApIdHRwIElu
6
6
  cHV0MREwDwYDVQQKDAhMb2dzdGFzaDEPMA0GA1UEAwwGY2xpZW50MIICIjANBgkq
7
- hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAy7sOesETzYvyYG4nnD4qMoZCl9DG4C4W
8
- tPLr1H6Pq1q9tvt/4CvAjvRZTpol747kBImy1HIMvacYFPEirZ1I+7vpEzuPwlE3
9
- uA4JcjK2/wMrs4fgeI0czUMnCOx4JLt+Dsgm9D6OTXvH79BjkLAaS/hb74qLqpd5
10
- Ju9YHF0INXg9vYZRPmxEtH+8A0hrlXQRTsIhtLoCVA90hAp7EzZ7UAAv/rlAnXwD
11
- BlZSYyWl8dYqxiCWbImXWG7JsIePaiceWio9steelDhcI41a2V40rMlUPLiBJGnN
12
- I/nAsa7Wf0n84ciJzVD7ynT+mPr5RkcznCY52HH/emdbnxPpFSCFgL/P9JA3pa+l
13
- newJy4fGZvYyRkNkBk7dpxrOnPoObHJuRRAzvCIhCpnOM2GM+Ll2hnbpxzo7t9Sb
14
- Su/kw48kzZTKdLdaEbk5C/VTX/yQ7FSKhWYjT/IFFVi33Y30eFTboVjrq/nrTLsn
15
- /k7RpOmTn5x1qm8PLp84ZVx1Yn4Er/bEu2EAnYsjfeHeOQy2cRY3nXXsn9/wEWWX
16
- Tydf7G2qccqkVsgnvpHPy2V0/T/XBziI1VqXtnQMEekCy/dDS1r0aht0QhyiK4l6
17
- lK8wGFyiXrSl2uEDSRQVyFx87Za0jUqycuG0AOCiVq7wgrC/ldu7TyguWa3s9mnY
18
- aBJmQSPG2W8CAwEAAaOB4TCB3jAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIF
7
+ hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzenDbAON8w1TA7u1ELfK3o8BR7xNpQiD
8
+ ykFtHFGrp5tY0Ilk7Yk86VA5C0DNo/rdUOelCe2f84wa9+OH9shfRgfPqDrZqD99
9
+ Mbf/r78nsC+ItYv+t9fPUz+Tu3hg8PJI/ocg7rzQ77patdWHXVz3V0S1oxus125j
10
+ 94ji/448zYjFTSzke6t5xXKYpGGWAPSmQxNaor2+r2gEpqfRNPfK+D9THyZX0sOR
11
+ /MD1AOLMbVOTm9pswhsfAqIuTfGVJWAEMPUuIMC5xr7e+8aZbTDP1TD8/dDrz9tG
12
+ zX94QL1t2b7+w5B75WmltZC01RaG/elCkpXMbpt8Bwfd8hmW2KsqqHsCGkYJTtjk
13
+ vTLtWKSiqpOaa+0uqRXKUTx0IxRdHlSacgVBlLiDsTrFAhMelSSu75ZgK7jAricL
14
+ ADl48GHDa9AByTr/Yxp622vTfY769YBKcfLBvN7qSygJf7jZ4bFWIUqPKzocONFc
15
+ zqiWI3g4nNlAI3yIG895lSfJw/4e4MTohnxrmFVISGzsNRsil1D46G3bt7ZDvk6H
16
+ 2IDWxdk3SVmRx4khPMM+HmgdFCFGtZSFnbBdQsM9MSCXv+OkX+aUHB8TQ/NTCMD1
17
+ ZCuFrmAKm0PicDmSDCErWXRvS4dmj5X7Gah8LqTT35GTP0oBTO3GZFOON4bNDVtI
18
+ tC4bErJbANECAwEAAaOB4TCB3jAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIF
19
19
  oDAzBglghkgBhvhCAQ0EJhYkT3BlblNTTCBHZW5lcmF0ZWQgQ2xpZW50IENlcnRp
20
- ZmljYXRlMB0GA1UdDgQWBBRDosYG+0spuKpG6rnBBxO1CJrUCTAfBgNVHSMEGDAW
21
- gBR81PQUn3jB9/i0sWoSUloY3jeVGjAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYw
20
+ ZmljYXRlMB0GA1UdDgQWBBS1DozP7Ov25cJeDW3IXq1c6+Sx4zAfBgNVHSMEGDAW
21
+ gBQz/zI1tCfs7stYavc3NvY/DDDBGDAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYw
22
22
  FAYIKwYBBQUHAwIGCCsGAQUFBwMEMBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcEfwAA
23
- ATANBgkqhkiG9w0BAQsFAAOCAgEASlKD2Iw8MM69Qqhv/65kHXEnwjvl7ZxSuB9p
24
- YEI3jLmKLAONM6b1OP2iPZVKUbtQ6lTwAME64/fPIhnm8dbAt7If7ptcdFHHNe/4
25
- n143YeF6fxonMJGACIKwDsELinp9jGUtrQdtm7pIKRDATTzYspdvhn2HFbSSqCr+
26
- y3TGxmkg7x8/+bQTgnJs9CHtEopThhTYoC2olBMEXFq1Sh2oNEcm1nlKjOx/iApI
27
- lqqowADqjHz6pThrladTIQMF9i1MxsNLAeSVqC19RCzryspBx1POU0xukM6VsFep
28
- CCSfjT60UHhMMKkHmr9JcuUUy3h1yymf+z7fq40YefiSHRuWDNrKM9GXXlesObob
29
- T0FW+Jig9qGVPTdBZs6l3Fj8hhmvZc8TgadZ4nY2qFe4AXQH84ajpraw50WZQMtE
30
- 6M7aECSHzSSbzpuZL22lsRHW41cT86KkH4Yjv3UfeR7Q1N6ADHOekHjtueh1lCHH
31
- gJomI+nkvNI8M/+nDy58aZ/Pu2hn4vF0CBN6/dzddbMpqLi8toeJFkfJRoXuQiBd
32
- AQZNzjTcC/w8G1eTMY+llGrE+w5GRzVa1PRqrQ+g79+OXsgVsV5RTxJ3ShGI867y
33
- U8njiuI7jlm2W1oo+NRko+a4B9t7A0O2rE6xJo4IFIC6y4qwJKvg/fezBQUZvUP5
34
- V+CM/k0=
23
+ ATANBgkqhkiG9w0BAQsFAAOCAgEAtdiU8wM37Q7V3axzEBZf2prwRQSyA1Sxd1+a
24
+ EuAk0B93ynRhOkIoW0EmJQzOh5lB/V4fkce+PwIZb9j2cH1DnTJyE/XjZ6Y/p1f/
25
+ Fpk2xbSiaRGwhetotQCpEmNBwKng1VD3wgzp942sCn0ddswgJQ/5KEt+H9vJuuKu
26
+ CC503HUQ58pfiYJc5Kwz9cboYSR0VoRJ+iVdmXGHOW+8oHwt6F/Hd6GN/HX/s9FC
27
+ UQ6KYxFUQM/oAvxJ8FNmaL4kNQvZW9MQebpyTVPwZwq7hNqDndUicXVMuD2DzbCU
28
+ S0OLvYzLnAW9v4niTNRRTh6hjQnlAZOXdGuwPgmcIIfq3X7Mdme26d+J2AddPDc/
29
+ olOQFydJJ7dyYh6DKI/bK71IengFm3vokPZooZU/0D1VZkcMFITvNnXxgtud5nW5
30
+ ghNCfDCE+y8gU+C9djUC3kBZtxEP4n2RDoAzy44U0QKA31j7dy/KTy1UzIaVHiLL
31
+ TtJc5Kuyb2xAM76ySoIZCpF+k7c1ZipOkKnOV7ZYDYqWIxzfTBgDOcux9LJDkBUF
32
+ LLsBdg/818evYFC8sf28DiLJNZen8o2DHhN4XDx7dT5VPHLquLWOJMubYMCBbFGB
33
+ wKu5HdANuPV+ohUCnatFlfwG2Vju/0qPozfkixy5esF5EuUHrTHvDUvoMliA7rCN
34
+ yzJa2MI=
35
35
  -----END CERTIFICATE-----