logstash-mixin-rabbitmq_connection 5.0.0-java → 6.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 369b7b8885462316ac663ab74a818172be5717eb
4
- data.tar.gz: 668e13d9c466042d75e471ec984c352f5dfe539e
2
+ SHA256:
3
+ metadata.gz: facc2c0bbb94d9ffe28e084637a8bffdafd34b6b7ac1585bf44a519d4043253c
4
+ data.tar.gz: d7462fe30d31bd4851210100e0ddf6506a3045f2777dc877a77c06a320f24abd
5
5
  SHA512:
6
- metadata.gz: 5ab6a522eb401c004e1e13d7fd766e03ad2d32a2ac8b733e02cfc26c819a42a9c11603d3e7b04e5d409641f58b48ad0e2be19e98ae9f2d992ce3fe3b7783188c
7
- data.tar.gz: 2ed7a7060b2d521ea6484665ca87d79fef6fae8a897381a7be1cd111295c151f8a240fc1ac6cf2f507276392d45b1962ed3335a6703b6d0ca712ab02652a9a16
6
+ metadata.gz: bf0e3772d6d7ef7b0c1f9c77aab348a1dd8fe2bba5d7afa78abbdc4cacd72f13397406d6a7edc7aef0493ad17f71e74d0ef5be81517bcbf4a3200773d4a0eda0
7
+ data.tar.gz: 5b3790fa5d4dc80eed67701bd05712ede0299d0b2569905385758f54c7a9ab17fd87fe4cca9602128176eb1dacc7210f45c1b49202d98a77e42830a60346e961
@@ -0,0 +1,17 @@
1
+ version: '3'
2
+
3
+ # run tests: cd ci/unit; docker-compose up --build --force-recreate
4
+ # manual: cd ci/unit; docker-compose run logstash bash
5
+ services:
6
+
7
+ logstash:
8
+ build:
9
+ context: ../
10
+ dockerfile: .ci/Dockerfile
11
+ args:
12
+ - ELASTIC_STACK_VERSION=$ELASTIC_STACK_VERSION
13
+ command: .ci/run.sh
14
+ environment:
15
+ LS_JAVA_OPTS: "-Xmx256m -Xms256m"
16
+ LOGSTASH_SOURCE: 1
17
+ tty: true
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # This is intended to be run inside the docker container as the command of the docker-compose.
4
+ set -ex
5
+
6
+ #bundle exec rspec -fd --pattern spec/**/*_spec.rb,spec/**/*_specs.rb
7
+ bundle exec rspec -fd
@@ -1,18 +1,2 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - jruby-1.7.25
7
- script:
8
- - bundle exec rspec spec
9
- jdk: oraclejdk8
10
- matrix:
11
- include:
12
- - rvm: jruby-9.1.10.0
13
- env: LOGSTASH_BRANCH=master
14
- - rvm: jruby-9.1.10.0
15
- env: LOGSTASH_BRANCH=6.x
16
- - rvm: jruby-1.7.25
17
- env: LOGSTASH_BRANCH=5.6
18
- fast_finish: true
1
+ import:
2
+ - logstash-plugins/.ci:travis/travis.yml@1.x
@@ -0,0 +1,59 @@
1
+ ## 6.2.0
2
+ - Remove ruby pipeline dependency. Starting from Logstash 8, Ruby execution engine is not available. All pipelines should use Java pipeline [#64](https://github.com/logstash-plugins/logstash-mixin-rabbitmq_connection/pull/64)
3
+ - Updated ci setting to use the share ci repository
4
+ ## 6.1.1
5
+ - Fixed issue with custom port assignment when multiple hosts are specified. [#54](https://github.com/logstash-plugins/logstash-mixin-rabbitmq_connection/pull/54)
6
+
7
+ ## 6.1.0
8
+ - Updated `march_hare` dependency to `4.x`, which enables consumers to reliably manage a connection blocked/unblocked state machine that survives connection recovery.
9
+ - Removed support for Logstash 5.x since `march_hare` >= 3.x is not compatible.
10
+
11
+ ## 6.0.0
12
+ - Removed obsolete options `verify_ssl`, `debug`, `tls_certificate_path` and `tls_certificate_password`
13
+
14
+ ## 5.0.2
15
+ - Bug Fix: undefined method `value' for nil:NilClass with SSL enabled, but no certificates provided [#109](https://github.com/logstash-plugins/logstash-input-rabbitmq/issues/109)
16
+ ## 5.0.1
17
+ - Relax constraint on march hare to allow 3.x [#44](https://github.com/logstash-plugins/logstash-mixin-rabbitmq_connection/issues/44)
18
+ - Validate :ssl_certificate_password as a password [#43](https://github.com/logstash-plugins/logstash-mixin-rabbitmq_connection/issues/43)
19
+ ## 5.0.0
20
+ - Mark deprecated options `debug`, `tls_certificate_path` and `tls_certificate_password` as obsolete
21
+ ## 4.3.0
22
+ - Bump march hare to 3.0.0
23
+ ## 4.2.2
24
+ - Bump march hare to 2.22.0 to properly convert LongString to String
25
+ ## 4.2.1
26
+ - Bump march_hare version to 2.20.0 to fix reconnection issues
27
+ ## 4.2.0
28
+ - Include URL of server when logging errors
29
+ - Add warning log when connection is severed
30
+ ## 4.1.3
31
+ - Bump march_hare version to 2.19.0 to fix reconnection failures with proxies. See [#76](https://github.com/logstash-plugins/logstash-input-rabbitmq/issues/76) for
32
+ more info
33
+ ## 4.1.2
34
+ - Retry the connection attempt if there is an IO Exception.
35
+ ## 4.1.1
36
+ - Remove internal Logstash deps that were not necessary
37
+ ## 4.1.0
38
+ - Fix SSL option to be boolean once again
39
+ - Add separate ssl_version parameter
40
+ - Mark verify_ssl parameter as obsolete since it never worked
41
+ - Better checks for SSL argument consistency
42
+ ## 2.4.0
43
+ - Add SSL/TLS Support
44
+ - Add support for "x-consistent-hash" and "x-modulus-hash" exchanges
45
+ ## 2.3.1
46
+ - use logstash-core-plugin-api as dependency instead of logstash-core directly
47
+ ## 2.3.0
48
+ - Bump march_mare version to 2.15.0 to fix perms issue internal to march hare gem (.jar not installed with o+r perms)
49
+ ## 2.2.0
50
+ - Rollback the changes in 2.1.0 . prefetch_count only belongs in the input plugin
51
+ ## 2.1.0
52
+ - Add prefetch_count config option
53
+ ## 2.0.3
54
+ - Add heartbeat setting
55
+ - Add connect_timeout setting
56
+ ## 2.0.0
57
+ - Make LS2 compatible
58
+ ## 1.0.1
59
+ - Initial Release
data/Gemfile CHANGED
@@ -2,3 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in logstash-mass_effect.gemspec
4
4
  gemspec
5
+
6
+ logstash_path = ENV["LOGSTASH_PATH"] || "../../logstash"
7
+ use_logstash_source = ENV["LOGSTASH_SOURCE"] && ENV["LOGSTASH_SOURCE"].to_s == "1"
8
+
9
+ if Dir.exist?(logstash_path) && use_logstash_source
10
+ gem 'logstash-core', :path => "#{logstash_path}/logstash-core"
11
+ gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api"
12
+ end
@@ -3,6 +3,7 @@ require "logstash/outputs/base"
3
3
  require "logstash/namespace"
4
4
  require "march_hare"
5
5
  require "java"
6
+ require "stud/interval"
6
7
 
7
8
  # Common functionality for the rabbitmq input/output
8
9
  module LogStash
@@ -54,17 +55,11 @@ module LogStash
54
55
  # Version of the SSL protocol to use.
55
56
  config :ssl_version, :validate => :string, :default => "TLSv1.2"
56
57
 
57
- config :verify_ssl, :validate => :boolean, :default => false,
58
- :obsolete => "This function did not actually function correctly and was removed." +
59
- "If you wish to validate SSL certs use the ssl_certificate_path and ssl_certificate_password options."
60
-
61
58
  # Path to an SSL certificate in PKCS12 (.p12) format used for verifying the remote host
62
59
  config :ssl_certificate_path, :validate => :path
63
60
 
64
61
  # Password for the encrypted PKCS12 (.p12) certificate file specified in ssl_certificate_path
65
- config :ssl_certificate_password, :validate => :string
66
-
67
- config :debug, :validate => :boolean, :obsolete => "Use the logstash --debug flag for this instead."
62
+ config :ssl_certificate_password, :validate => :password
68
63
 
69
64
  # Set this to automatically recover from a broken connection. You almost certainly don't want to override this!!!
70
65
  config :automatic_recovery, :validate => :boolean, :default => true
@@ -81,12 +76,6 @@ module LogStash
81
76
  # Passive queue creation? Useful for checking queue existance without modifying server state
82
77
  config :passive, :validate => :boolean, :default => false
83
78
 
84
- # TLS certifcate path
85
- config :tls_certificate_path, :validate => :path, :obsolete => "This setting is obsolete. Use ssl_certificate_path instead"
86
-
87
- # TLS certificate password
88
- config :tls_certificate_password, :validate => :string, :obsolete => "This setting is obsolete. Use ssl_certificate_password instead"
89
-
90
79
  # Extra queue arguments as an array.
91
80
  # To make a RabbitMQ queue mirrored, use: `{"x-ha-policy" => "all"}`
92
81
  config :arguments, :validate => :array, :default => {}
@@ -107,8 +96,7 @@ module LogStash
107
96
 
108
97
  s = {
109
98
  :vhost => @vhost,
110
- :hosts => @host,
111
- :port => @port,
99
+ :addresses => addresses_from_hosts_and_port(@host, @port),
112
100
  :user => @user,
113
101
  :automatic_recovery => @automatic_recovery,
114
102
  :pass => @password ? @password.value : "guest",
@@ -121,7 +109,7 @@ module LogStash
121
109
  s[:tls] = @ssl_version
122
110
 
123
111
  cert_path = @ssl_certificate_path
124
- cert_pass = @ssl_certificate_password
112
+ cert_pass = @ssl_certificate_password.value if @ssl_certificate_password
125
113
 
126
114
  if !!cert_path ^ !!cert_pass
127
115
  raise LogStash::ConfigurationError, "RabbitMQ requires both ssl_certificate_path AND ssl_certificate_password to be set!"
@@ -134,6 +122,42 @@ module LogStash
134
122
  @rabbitmq_settings = s
135
123
  end
136
124
 
125
+
126
+ # Adds port to the value of host if it is not already supplied
127
+ def format_address(host, port)
128
+ case host.count(':')
129
+ when 0
130
+ "#{host}:#{port}"
131
+ when 1
132
+ host
133
+ else
134
+ format_ipv6(host, port)
135
+ end
136
+ end
137
+
138
+ # Formats an IPv6 to include the port, if it is not already given, conforming to the format used for
139
+ # literal IPv6 addresses in URIs,
140
+ # eg [2406:da00:ff00::6b15:edbc]:80
141
+ def format_ipv6(host, port)
142
+ last_bracket = host.rindex(']')
143
+ if last_bracket
144
+ if last_bracket < host.rindex(':')
145
+ host
146
+ else
147
+ "#{host}:#{port}"
148
+ end
149
+ else
150
+ "[#{host}]:#{port}"
151
+ end
152
+ end
153
+
154
+ def addresses_from_hosts_and_port(hosts, port)
155
+ # Expand host to include port, unless port is already present
156
+ # (Allowing hosts with port was a previously undocumented feature)
157
+ hosts.map{|host|format_address(host, port)}
158
+ end
159
+
160
+
137
161
  def connect!
138
162
  @hare_info = connect() unless @hare_info # Don't duplicate the conn!
139
163
  rescue MarchHare::Exception, java.io.IOException => e
@@ -1,7 +1,7 @@
1
1
 
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'logstash-mixin-rabbitmq_connection'
4
- s.version = '5.0.0'
4
+ s.version = '6.2.0'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Common functionality for RabbitMQ plugins"
7
7
  s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
@@ -17,7 +17,12 @@ Gem::Specification.new do |s|
17
17
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
18
 
19
19
  s.platform = RUBY_PLATFORM
20
- s.add_runtime_dependency 'march_hare', ['~> 3.0.0'] #(MIT license)
20
+
21
+ # MarchHare 3.x+ includes ruby syntax from 2.x
22
+ # This effectively requires Logstash >= 6.x
23
+ s.required_ruby_version = '>= 2.0.0'
24
+
25
+ s.add_runtime_dependency 'march_hare', ['~> 4.0'] #(MIT license)
21
26
  s.add_runtime_dependency 'stud', '~> 0.0.22'
22
27
 
23
28
  s.add_development_dependency 'logstash-devutils'
@@ -0,0 +1,150 @@
1
+ # TLS Testing notes
2
+
3
+ Currently all TLS integration style testing is manual. This fixture may be used to help test.
4
+
5
+ * client - has the key store with client public/private key and the server public key
6
+ * server - has the key store with server public/private key and the client public key
7
+ * client_untrusted - has a keystore with public/private key that is self signed
8
+
9
+ logstash config
10
+ ---------
11
+ ```
12
+ input {
13
+ rabbitmq {
14
+ host => "localhost"
15
+ port => 5671
16
+ queue => "hello"
17
+ codec => plain
18
+ ssl => true
19
+ ssl_certificate_path => "/Users/jake/workspace/plugins/logstash-mixin-rabbitmq_connection/spec/fixtures/client/keycert.p12"
20
+ ssl_certificate_password => "MySecretPassword"
21
+ }
22
+ }
23
+
24
+ output{ stdout { codec => rubydebug } }
25
+ ```
26
+
27
+ rabbit mq install
28
+ --------
29
+ (mac)
30
+
31
+ ```
32
+ brew install rabbitmq
33
+ export PATH=$PATH:/usr/local/sbin
34
+ vim /usr/local/etc/rabbitmq/rabbitmq.config
35
+
36
+ ```
37
+ ```
38
+ [
39
+ {rabbit, [
40
+ {ssl_listeners, [5671]},
41
+ {ssl_options, [{cacertfile,"/Users/jake/workspace/plugins/logstash-mixin-rabbitmq_connection/spec/fixtures/testca/cacert.pem"},
42
+ {certfile,"/Users/jake/workspace/plugins/logstash-mixin-rabbitmq_connection/spec/fixtures/server/cert.pem"},
43
+ {keyfile,"/Users/jake/workspace/plugins/logstash-mixin-rabbitmq_connection/spec/fixtures/server/key.pem"},
44
+ {verify,verify_peer},
45
+ {fail_if_no_peer_cert,false}]}
46
+ ]}
47
+ ].
48
+ ```
49
+ ```
50
+ export PATH=$PATH:/usr/local/sbin
51
+ rabbitmq-server
52
+ tail -f /usr/local/var/log/rabbitmq/rabbit@localhost.log
53
+ ```
54
+
55
+ sending a test message with ruby
56
+ ----------
57
+ https://www.rabbitmq.com/tutorials/tutorial-one-ruby.html
58
+
59
+ ```
60
+ gem install bunny --version ">= 2.6.4"
61
+ ```
62
+ Create a file called send.rb
63
+ ```
64
+ #!/usr/bin/env ruby
65
+ # encoding: utf-8
66
+
67
+ require "bunny"
68
+
69
+ conn = Bunny.new(:automatically_recover => false)
70
+ conn.start
71
+
72
+ ch = conn.create_channel
73
+ q = ch.queue("hello")
74
+
75
+ ch.default_exchange.publish("Test message", :routing_key => q.name)
76
+ puts "Message sent'"
77
+
78
+ conn.close
79
+ ```
80
+ Send the message with Logstash running as the consumer
81
+ ```
82
+ ruby send.rb
83
+ ```
84
+
85
+ password for all files
86
+ --------
87
+ MySecretPassword
88
+
89
+ start from testca dir
90
+ ---------
91
+ ```
92
+ cd testca
93
+ ```
94
+
95
+ client
96
+ -------
97
+ ```
98
+ openssl genrsa -out ../client/key.pem 2048
99
+ openssl req -config openssl.cnf -key ../client/key.pem -new -sha256 -out ../client/req.pem
100
+ # for hostname use localhost, O=client
101
+ openssl ca -config openssl.cnf -in ../client/req.pem -out ../client/cert.pem
102
+ openssl x509 -in ../client/cert.pem -text -noout
103
+ openssl pkcs12 -export -out ../client/keycert.p12 -inkey ../client/key.pem -in ../client/cert.pem
104
+ ```
105
+
106
+ server
107
+ -------
108
+ ```
109
+ openssl genrsa -out ../server/key.pem 2048
110
+ openssl req -config openssl.cnf -key ../server/key.pem -new -sha256 -out ../server/req.pem
111
+ # for hostname use localhost, O=server
112
+ openssl ca -config openssl.cnf -in ../server/req.pem -out ../server/cert.pem
113
+ openssl x509 -in ../server/cert.pem -text -noout
114
+ openssl pkcs12 -export -out ../server/keycert.p12 -inkey ../server/key.pem -in ../server/cert.pem
115
+ ```
116
+
117
+ establish trust
118
+ ----------
119
+ ```
120
+ cd server
121
+ keytool -import -file ../client/cert.pem -alias client_cert -keystore keycert.p12
122
+ cd client
123
+ keytool -import -file ../server/cert.pem -alias server_cert -keystore keycert.p12
124
+ ```
125
+
126
+ reading
127
+ -----------
128
+ ```
129
+ openssl x509 -in cert.pem -text -noout
130
+ keytool -list -v -keystore keycert.p12
131
+ ```
132
+
133
+ self signed cert (untrusted)
134
+ -------
135
+ ```
136
+ openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout key.pem -out cert.pem -subj "/CN=localhost, O=client" -days 10000
137
+ openssl pkcs12 -export -out keycert.p12 -inkey key.pem -in cert.pem
138
+
139
+ ```
140
+
141
+ Issue [44](https://github.com/logstash-plugins/logstash-mixin-rabbitmq_connection/issues/44) validation
142
+ ---------
143
+ configure Logstash to the untrusted cert :`ssl_certificate_path => "/Users/jake/workspace/plugins/logstash-mixin-rabbitmq_connection/spec/fixtures/client_untrusted/keycert.p12"`
144
+
145
+ This _SHOULD_ fail an error like the following:
146
+ ```
147
+ Using TLS/SSL version TLSv1.2
148
+ [2017-12-19T12:47:12,891][ERROR][logstash.inputs.rabbitmq ] RabbitMQ connection error, will retry. {:error_message=>"sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target", :exception=>"Java::JavaxNetSsl::SSLHandshakeException"}
149
+ ```
150
+ There should _NOT_ be any warnings about a NullTrustManager or disabling verification, and you should _NOT_ be able to send messages.
@@ -1,18 +1,69 @@
1
+ Certificate:
2
+ Data:
3
+ Version: 3 (0x2)
4
+ Serial Number: 5 (0x5)
5
+ Signature Algorithm: sha256WithRSAEncryption
6
+ Issuer: CN=MyTestCA
7
+ Validity
8
+ Not Before: Dec 18 23:38:39 2017 GMT
9
+ Not After : May 5 23:38:39 2045 GMT
10
+ Subject: CN=localhost, O=client
11
+ Subject Public Key Info:
12
+ Public Key Algorithm: rsaEncryption
13
+ Public-Key: (2048 bit)
14
+ Modulus:
15
+ 00:cb:58:26:53:85:b2:d2:25:6e:b8:bd:09:2a:b3:
16
+ e7:c5:bb:05:bc:5e:57:41:1b:d5:9a:90:0a:55:4a:
17
+ b9:2f:c0:f7:d0:73:aa:fe:ed:8c:a4:8a:62:42:db:
18
+ e2:7b:5b:17:66:a7:2a:6a:a8:6a:59:fc:ac:8e:bb:
19
+ 4c:ca:68:3f:50:73:e6:01:dd:f0:63:8a:c4:da:b6:
20
+ 46:16:e8:fe:dd:14:f5:d8:71:06:4f:06:6c:55:c9:
21
+ 41:63:04:ab:4c:5d:35:aa:4d:d5:27:dd:0d:9e:be:
22
+ 47:6c:06:56:9c:0a:48:23:ce:c3:4e:9d:e2:bc:3f:
23
+ 78:8f:ec:24:73:97:8f:94:97:38:e4:4e:75:eb:aa:
24
+ 14:9f:6e:3c:8e:1f:0a:bf:37:9f:65:f7:2a:48:9e:
25
+ c1:f4:31:a6:b2:19:73:62:4d:b9:9f:4d:bd:2a:cb:
26
+ c6:c5:55:75:b6:63:f8:56:c8:4c:9d:98:b5:3a:e5:
27
+ 16:96:09:cc:53:ca:3e:82:fb:e4:b4:ff:1b:aa:d3:
28
+ 6c:01:1f:00:31:da:81:2e:82:7e:d8:a5:a1:bd:5d:
29
+ 85:f7:22:01:fb:77:46:9b:23:0a:a1:b4:e1:66:b7:
30
+ ff:c9:9b:f6:be:0d:1a:39:d1:2e:1c:40:4c:a9:e5:
31
+ 25:05:9c:57:99:95:f4:0c:67:1e:b0:cb:d3:4a:b0:
32
+ 2c:cd
33
+ Exponent: 65537 (0x10001)
34
+ X509v3 extensions:
35
+ X509v3 Basic Constraints:
36
+ CA:FALSE
37
+ Signature Algorithm: sha256WithRSAEncryption
38
+ 27:c6:56:63:d5:18:c2:32:e7:c2:7c:45:2d:15:02:48:a7:eb:
39
+ 8a:fc:a2:70:65:e1:ce:2f:f2:fa:78:3c:e0:5f:f8:69:1f:a6:
40
+ f1:cd:d7:32:f7:46:60:74:bf:18:71:81:f4:42:d8:90:a1:4b:
41
+ 83:07:b0:dc:c9:33:84:a4:e9:e4:84:e9:9a:02:c2:78:86:bd:
42
+ b9:9e:30:63:d6:97:f3:8b:cc:0f:d5:81:dc:05:8c:01:7a:30:
43
+ 53:ab:2a:3c:23:b5:a4:16:dc:1b:a0:35:47:b5:2d:b5:6d:d8:
44
+ a1:c8:98:7f:77:a9:00:3e:9e:44:c7:75:d8:91:15:56:7b:c4:
45
+ a4:7c:0d:73:3b:a6:9a:55:59:c2:d7:f4:71:0d:1e:46:0e:da:
46
+ 01:9f:15:d8:02:6b:e6:85:23:64:1c:c5:da:b3:4e:18:23:33:
47
+ 79:80:c9:1c:cc:35:fd:0f:37:8d:12:40:6c:5d:a2:16:cb:17:
48
+ e4:f7:90:b9:8f:8e:a5:ab:0e:c8:64:86:c3:b0:64:ef:46:7a:
49
+ 82:21:a9:4b:8f:bd:5a:a0:b4:54:84:36:2b:bc:4e:30:e3:8c:
50
+ fe:ea:7f:49:c2:fb:2f:5a:7d:c6:16:7a:4c:8a:e3:ec:68:76:
51
+ de:80:20:ab:f4:76:09:27:65:26:e1:31:9a:02:6a:af:08:39:
52
+ aa:40:36:40
1
53
  -----BEGIN CERTIFICATE-----
2
- MIIC4jCCAcqgAwIBAgIBAjANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAhNeVRl
3
- c3RDQTAeFw0xNjA1MTAxNzAwMDFaFw0xNzA1MTAxNzAwMDFaMCUxEjAQBgNVBAMT
4
- CWxvY2FsaG9zdDEPMA0GA1UEChMGY2xpZW50MIIBIjANBgkqhkiG9w0BAQEFAAOC
5
- AQ8AMIIBCgKCAQEAo9dLuAbDY5jBAlx1UqsOQf480ni4BVbxOjEAL4PVBfIU4xmn
6
- F3Z+tAvmcd3oNc9JYYxXVq5sKA/HE5eWhVdXdQWX0IrTHraJAXvRlHuu1TSuTvuq
7
- 7QgQVFbZdWzRfvukLoKPDm1DtI5BFJ7L83j8RJy6tyvek4KzsHtG3JKoVzoz5+Hz
8
- 7fL7gE76Dr82uH1t9WouZ5oXS2HgBR0l9CTYxARa6OMrr/+r4w1RoYDXnrlit5Ft
9
- 81mQAVibnei9dN3EXoECUflclQ1nip12XVuoH9GXF6AetzDsbhInYvRoxm1Q9pNz
10
- g/L1QswPkF5MCuSIkkwgtHazZkIWlUKqPMVtIQIDAQABoy8wLTAJBgNVHRMEAjAA
11
- MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsF
12
- AAOCAQEAuJ1ruPLP2WdRZz5bb/qgaBqADUVKJu3Ny9TsEK/oZzUwgWVc4hvsiFms
13
- gj/JVmXy4f36s6VLfOiDNHI6jIb31wvfduYV58Z+IUXMyj9OV4ZxqpQBqS9YK1Gq
14
- 2AChr1wYUs+WmnNATwa4Q51ytTU4DcLdJTusZIfo5BAvnnz35QnQPsB11EEHRovA
15
- 1bnzvG6uKAG0MjxNvXpWRUImNXrIKrbRXnvu5FDXAVMPg674g1QMhaa6SlPO5bFP
16
- meg4+1jH2tUMKR8qCS4KfOfbccNF/u09pRYcMJwiTXu++gCAu1il9jn0C5zxX3Ni
17
- GKm0/sj2BpZf9D4Kl8LppAIxcphBUg==
54
+ MIICuTCCAaGgAwIBAgIBBTANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAhNeVRl
55
+ c3RDQTAeFw0xNzEyMTgyMzM4MzlaFw00NTA1MDUyMzM4MzlaMB4xHDAaBgNVBAMM
56
+ E2xvY2FsaG9zdCwgTz1jbGllbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
57
+ AoIBAQDLWCZThbLSJW64vQkqs+fFuwW8XldBG9WakApVSrkvwPfQc6r+7YykimJC
58
+ 2+J7WxdmpypqqGpZ/KyOu0zKaD9Qc+YB3fBjisTatkYW6P7dFPXYcQZPBmxVyUFj
59
+ BKtMXTWqTdUn3Q2evkdsBlacCkgjzsNOneK8P3iP7CRzl4+UlzjkTnXrqhSfbjyO
60
+ Hwq/N59l9ypInsH0MaayGXNiTbmfTb0qy8bFVXW2Y/hWyEydmLU65RaWCcxTyj6C
61
+ ++S0/xuq02wBHwAx2oEugn7YpaG9XYX3IgH7d0abIwqhtOFmt//Jm/a+DRo50S4c
62
+ QEyp5SUFnFeZlfQMZx6wy9NKsCzNAgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZI
63
+ hvcNAQELBQADggEBACfGVmPVGMIy58J8RS0VAkin64r8onBl4c4v8vp4POBf+Gkf
64
+ pvHN1zL3RmB0vxhxgfRC2JChS4MHsNzJM4Sk6eSE6ZoCwniGvbmeMGPWl/OLzA/V
65
+ gdwFjAF6MFOrKjwjtaQW3BugNUe1LbVt2KHImH93qQA+nkTHddiRFVZ7xKR8DXM7
66
+ pppVWcLX9HENHkYO2gGfFdgCa+aFI2QcxdqzThgjM3mAyRzMNf0PN40SQGxdohbL
67
+ F+T3kLmPjqWrDshkhsOwZO9GeoIhqUuPvVqgtFSENiu8TjDjjP7qf0nC+y9afcYW
68
+ ekyK4+xodt6AIKv0dgknZSbhMZoCaq8IOapANkA=
18
69
  -----END CERTIFICATE-----