logstash-mixin-rabbitmq_connection 5.0.0-java → 6.2.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- 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-----