mongo 2.7.0 → 2.7.1

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.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +39 -14
  5. data/Rakefile +1 -0
  6. data/lib/mongo/auth.rb +4 -1
  7. data/lib/mongo/client.rb +4 -3
  8. data/lib/mongo/cluster.rb +1 -1
  9. data/lib/mongo/collection/view/readable.rb +5 -2
  10. data/lib/mongo/database.rb +1 -0
  11. data/lib/mongo/error/invalid_server_preference.rb +1 -0
  12. data/lib/mongo/error/operation_failure.rb +10 -0
  13. data/lib/mongo/error/parser.rb +10 -0
  14. data/lib/mongo/event.rb +1 -2
  15. data/lib/mongo/operation/result.rb +4 -1
  16. data/lib/mongo/operation/shared/executable_transaction_label.rb +3 -1
  17. data/lib/mongo/operation/shared/sessions_supported.rb +1 -1
  18. data/lib/mongo/protocol/msg.rb +1 -1
  19. data/lib/mongo/protocol/query.rb +2 -2
  20. data/lib/mongo/retryable.rb +20 -6
  21. data/lib/mongo/server.rb +6 -0
  22. data/lib/mongo/server/connection.rb +4 -4
  23. data/lib/mongo/server/monitor/connection.rb +9 -5
  24. data/lib/mongo/server_selector/selectable.rb +86 -32
  25. data/lib/mongo/session.rb +98 -15
  26. data/lib/mongo/version.rb +1 -1
  27. data/spec/README.md +85 -0
  28. data/spec/integration/bulk_insert_spec.rb +1 -1
  29. data/spec/integration/change_stream_examples_spec.rb +3 -1
  30. data/spec/integration/change_stream_spec.rb +10 -14
  31. data/spec/integration/client_construction_spec.rb +1 -0
  32. data/spec/integration/command_monitoring_spec.rb +37 -1
  33. data/spec/integration/command_spec.rb +141 -0
  34. data/spec/integration/connection_spec.rb +4 -2
  35. data/spec/integration/cursor_reaping_spec.rb +1 -1
  36. data/spec/integration/docs_examples_spec.rb +1 -1
  37. data/spec/integration/retryable_writes_spec.rb +33 -42
  38. data/spec/integration/server_description_spec.rb +3 -3
  39. data/spec/integration/server_selector_spec.rb +79 -0
  40. data/spec/lite_spec_helper.rb +4 -2
  41. data/spec/mongo/address_spec.rb +8 -0
  42. data/spec/mongo/auth/cr_spec.rb +5 -2
  43. data/spec/mongo/auth/invalid_mechanism_spec.rb +11 -0
  44. data/spec/mongo/auth/scram/conversation_spec.rb +3 -2
  45. data/spec/mongo/auth/scram/negotiation_spec.rb +1 -2
  46. data/spec/mongo/auth/scram_spec.rb +11 -6
  47. data/spec/mongo/auth/user/view_spec.rb +13 -6
  48. data/spec/mongo/bulk_write_spec.rb +81 -104
  49. data/spec/mongo/client_construction_spec.rb +18 -7
  50. data/spec/mongo/client_spec.rb +11 -7
  51. data/spec/mongo/cluster_spec.rb +30 -1
  52. data/spec/mongo/collection/view/aggregation_spec.rb +18 -10
  53. data/spec/mongo/collection/view/change_stream_spec.rb +28 -8
  54. data/spec/mongo/collection/view/map_reduce_spec.rb +24 -10
  55. data/spec/mongo/collection/view/readable_spec.rb +37 -19
  56. data/spec/mongo/collection/view/writable_spec.rb +64 -32
  57. data/spec/mongo/collection/view_spec.rb +4 -2
  58. data/spec/mongo/collection_spec.rb +163 -73
  59. data/spec/mongo/cursor_spec.rb +5 -2
  60. data/spec/mongo/database_spec.rb +41 -19
  61. data/spec/mongo/error/no_server_available_spec.rb +1 -1
  62. data/spec/mongo/error/parser_spec.rb +29 -0
  63. data/spec/mongo/grid/stream/write_spec.rb +2 -1
  64. data/spec/mongo/index/view_spec.rb +42 -24
  65. data/spec/mongo/operation/delete/op_msg_spec.rb +11 -7
  66. data/spec/mongo/operation/insert/op_msg_spec.rb +10 -6
  67. data/spec/mongo/operation/update/op_msg_spec.rb +10 -6
  68. data/spec/mongo/protocol/compressed_spec.rb +1 -1
  69. data/spec/mongo/protocol/msg_spec.rb +1 -1
  70. data/spec/mongo/server/app_metadata_spec.rb +2 -1
  71. data/spec/mongo/server/connection_auth_spec.rb +1 -1
  72. data/spec/mongo/server/monitor/connection_spec.rb +42 -0
  73. data/spec/mongo/server_selector_spec.rb +17 -0
  74. data/spec/mongo/server_spec.rb +110 -0
  75. data/spec/mongo/session/session_pool_spec.rb +1 -1
  76. data/spec/mongo/session_spec.rb +1 -1
  77. data/spec/mongo/session_transaction_spec.rb +162 -1
  78. data/spec/mongo/socket/ssl_spec.rb +14 -7
  79. data/spec/mongo/uri/srv_protocol_spec.rb +41 -34
  80. data/spec/spec_helper.rb +3 -191
  81. data/spec/spec_tests/change_streams_spec.rb +3 -6
  82. data/spec/spec_tests/data/transactions/abort.yml +3 -1
  83. data/spec/spec_tests/data/transactions/commit.yml +4 -3
  84. data/spec/spec_tests/data/transactions/error-labels.yml +17 -13
  85. data/spec/spec_tests/data/transactions/read-concern.yml +611 -0
  86. data/spec/spec_tests/data/transactions/retryable-commit.yml +126 -21
  87. data/spec/spec_tests/data/transactions_api/callback-aborts.yml +42 -39
  88. data/spec/spec_tests/data/transactions_api/callback-commits.yml +52 -50
  89. data/spec/spec_tests/data/transactions_api/callback-retry.yml +33 -31
  90. data/spec/spec_tests/data/transactions_api/commit-retry.yml +42 -39
  91. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror-4.2.yml +13 -12
  92. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror.yml +15 -26
  93. data/spec/spec_tests/data/transactions_api/commit-writeconcernerror.yml +25 -33
  94. data/spec/spec_tests/data/transactions_api/commit.yml +44 -42
  95. data/spec/spec_tests/data/transactions_api/transaction-options.yml +25 -23
  96. data/spec/spec_tests/max_staleness_spec.rb +2 -0
  97. data/spec/spec_tests/retryable_writes_spec.rb +2 -6
  98. data/spec/spec_tests/sdam_spec.rb +2 -0
  99. data/spec/spec_tests/server_selection_spec.rb +3 -0
  100. data/spec/spec_tests/transactions_api_spec.rb +7 -1
  101. data/spec/spec_tests/transactions_spec.rb +6 -0
  102. data/spec/spec_tests/uri_options_spec.rb +4 -26
  103. data/spec/support/certificates/ca.pem +21 -16
  104. data/spec/support/certificates/client.pem +90 -90
  105. data/spec/support/certificates/client_cert.pem +21 -20
  106. data/spec/support/certificates/client_key.pem +27 -28
  107. data/spec/support/certificates/client_key_encrypted.pem +26 -26
  108. data/spec/support/certificates/crl.pem +10 -8
  109. data/spec/support/certificates/crl_client_revoked.pem +11 -10
  110. data/spec/support/certificates/server.pem +48 -33
  111. data/spec/support/change_streams.rb +12 -32
  112. data/spec/support/client_registry.rb +12 -1
  113. data/spec/support/cluster_config.rb +48 -2
  114. data/spec/support/common_shortcuts.rb +73 -7
  115. data/spec/support/connection_string.rb +0 -3
  116. data/spec/support/constraints.rb +87 -22
  117. data/spec/support/crud.rb +2 -1
  118. data/spec/support/shared/server_selector.rb +0 -28
  119. data/spec/support/shared/session.rb +25 -14
  120. data/spec/support/transactions.rb +4 -8
  121. data/spec/support/transactions/operation.rb +26 -4
  122. data/spec/support/transactions/verifier.rb +5 -2
  123. metadata +496 -488
  124. metadata.gz.sig +5 -2
  125. data/spec/support/certificates/password_protected.pem +0 -51
@@ -10,24 +10,25 @@ tests:
10
10
  -
11
11
  name: withTransaction
12
12
  object: session0
13
- callback:
14
- operations:
15
- -
16
- name: insertOne
17
- object: collection
18
- arguments:
19
- session: session0
20
- document: { _id: 1 }
21
- result:
22
- insertedId: 1
23
- -
24
- name: insertOne
25
- object: collection
26
- arguments:
27
- session: session0
28
- document: { _id: 2 }
29
- result:
30
- insertedId: 2
13
+ arguments:
14
+ callback:
15
+ operations:
16
+ -
17
+ name: insertOne
18
+ object: collection
19
+ arguments:
20
+ session: session0
21
+ document: { _id: 1 }
22
+ result:
23
+ insertedId: 1
24
+ -
25
+ name: insertOne
26
+ object: collection
27
+ arguments:
28
+ session: session0
29
+ document: { _id: 2 }
30
+ result:
31
+ insertedId: 2
31
32
  expectations:
32
33
  -
33
34
  command_started_event:
@@ -89,30 +90,31 @@ tests:
89
90
  -
90
91
  name: withTransaction
91
92
  object: session0
92
- callback:
93
- operations:
94
- -
95
- name: insertOne
96
- object: collection
97
- arguments:
98
- session: session0
99
- document: { _id: 1 }
100
- result:
101
- insertedId: 1
102
- -
103
- name: commitTransaction
104
- object: session0
105
- -
106
- name: startTransaction
107
- object: session0
108
- -
109
- name: insertOne
110
- object: collection
111
- arguments:
112
- session: session0
113
- document: { _id: 2 }
114
- result:
115
- insertedId: 2
93
+ arguments:
94
+ callback:
95
+ operations:
96
+ -
97
+ name: insertOne
98
+ object: collection
99
+ arguments:
100
+ session: session0
101
+ document: { _id: 1 }
102
+ result:
103
+ insertedId: 1
104
+ -
105
+ name: commitTransaction
106
+ object: session0
107
+ -
108
+ name: startTransaction
109
+ object: session0
110
+ -
111
+ name: insertOne
112
+ object: collection
113
+ arguments:
114
+ session: session0
115
+ document: { _id: 2 }
116
+ result:
117
+ insertedId: 2
116
118
  expectations:
117
119
  -
118
120
  command_started_event:
@@ -10,16 +10,17 @@ tests:
10
10
  -
11
11
  name: withTransaction
12
12
  object: session0
13
- callback:
14
- operations:
15
- -
16
- name: insertOne
17
- object: collection
18
- arguments:
19
- session: session0
20
- document: { _id: 1 }
21
- result:
22
- insertedId: 1
13
+ arguments:
14
+ callback:
15
+ operations:
16
+ -
17
+ name: insertOne
18
+ object: collection
19
+ arguments:
20
+ session: session0
21
+ document: { _id: 1 }
22
+ result:
23
+ insertedId: 1
23
24
  expectations:
24
25
  -
25
26
  command_started_event:
@@ -136,19 +137,20 @@ tests:
136
137
  -
137
138
  name: withTransaction
138
139
  object: session0
139
- callback:
140
- operations:
141
- -
142
- name: insertOne
143
- object: collection
144
- arguments:
145
- session: session0
146
- document: { _id: 1 }
147
- result:
148
- insertedId: 1
149
- transactionOptions:
150
- readConcern: { level: snapshot }
151
- writeConcern: { w: 1 }
140
+ arguments:
141
+ callback:
142
+ operations:
143
+ -
144
+ name: insertOne
145
+ object: collection
146
+ arguments:
147
+ session: session0
148
+ document: { _id: 1 }
149
+ result:
150
+ insertedId: 1
151
+ options:
152
+ readConcern: { level: snapshot }
153
+ writeConcern: { w: 1 }
152
154
  expectations:
153
155
  -
154
156
  command_started_event:
@@ -46,6 +46,7 @@ describe 'Max Staleness Spec' do
46
46
 
47
47
  let(:cluster) do
48
48
  double('cluster').tap do |c|
49
+ allow(c).to receive(:connected?).and_return(true)
49
50
  allow(c).to receive(:summary)
50
51
  allow(c).to receive(:topology).and_return(topology)
51
52
  allow(c).to receive(:single?).and_return(topology.single?)
@@ -99,6 +100,7 @@ describe 'Max Staleness Spec' do
99
100
 
100
101
  before do
101
102
  allow(cluster).to receive(:servers).and_return(candidate_servers)
103
+ allow(cluster).to receive(:addresses).and_return(candidate_servers.map(&:address))
102
104
  end
103
105
 
104
106
  context 'when the max staleness is invalid' do
@@ -11,6 +11,8 @@ describe 'Retryable writes spec tests' do
11
11
  spec.tests.each do |test|
12
12
 
13
13
  context(test.description) do
14
+ min_server_fcv '3.6'
15
+ require_topology :replica_set
14
16
 
15
17
  let(:collection) do
16
18
  client[TEST_COLL]
@@ -21,12 +23,6 @@ describe 'Retryable writes spec tests' do
21
23
  end
22
24
 
23
25
  before do
24
- unless sessions_enabled?
25
- skip 'Sessions not enabled'
26
- end
27
- unless replica_set?
28
- skip 'Not in replica set'
29
- end
30
26
  unless spec.server_version_satisfied?(client)
31
27
  skip 'Test cannot be run on this server version'
32
28
  end
@@ -44,6 +44,8 @@ describe 'Server Discovery and Monitoring' do
44
44
  context("Phase: #{index + 1}") do
45
45
 
46
46
  before do
47
+ allow(@client.cluster).to receive(:connected?).and_return(true)
48
+
47
49
  phase.responses.each do |response|
48
50
  server = find_server(@client, response.address)
49
51
  unless server
@@ -37,6 +37,7 @@ describe 'Server Selection' do
37
37
 
38
38
  let(:cluster) do
39
39
  double('cluster').tap do |c|
40
+ allow(c).to receive(:connected?).and_return(true)
40
41
  allow(c).to receive(:summary)
41
42
  allow(c).to receive(:topology).and_return(topology)
42
43
  allow(c).to receive(:single?).and_return(topology.single?)
@@ -81,6 +82,8 @@ describe 'Server Selection' do
81
82
 
82
83
  before do
83
84
  allow(cluster).to receive(:servers).and_return(candidate_servers)
85
+ allow(cluster).to receive(:servers_list).and_return(candidate_servers)
86
+ allow(cluster).to receive(:addresses).and_return(candidate_servers.map(&:address))
84
87
  allow(cluster).to receive(:options).and_return(server_selection_timeout: 0.2)
85
88
  allow(cluster).to receive(:scan!).and_return(true)
86
89
  allow(cluster).to receive(:app_metadata).and_return(app_metadata)
@@ -14,7 +14,13 @@ describe 'Transactions API' do
14
14
  require_transaction_support
15
15
 
16
16
  if spec.min_server_version
17
- min_server_version spec.min_server_version.split('.')[0..1].join('.')
17
+ min_server_fcv spec.min_server_version.split('.')[0..1].join('.')
18
+ end
19
+
20
+ if test_instance.skip_reason
21
+ before do
22
+ skip test_instance.skip_reason
23
+ end
18
24
  end
19
25
 
20
26
  let(:test) { test_factory.call }
@@ -15,6 +15,12 @@ describe 'Transactions' do
15
15
 
16
16
  let(:test) { test_factory.call }
17
17
 
18
+ if test_instance.skip_reason
19
+ before do
20
+ skip test_instance.skip_reason
21
+ end
22
+ end
23
+
18
24
  before(:each) do
19
25
  test.setup_test
20
26
  end
@@ -10,32 +10,10 @@ describe 'Uri Options' do
10
10
  context(spec.description) do
11
11
 
12
12
  before(:all) do
13
-
14
- module Mongo
15
- class Address
16
-
17
- private
18
-
19
- alias :original_create_resolver :create_resolver
20
- def create_resolver(timeout, ssl_options)
21
- family = (host == 'localhost') ? ::Socket::AF_INET : ::Socket::AF_UNSPEC
22
- info = ::Socket.getaddrinfo(host, nil, family, ::Socket::SOCK_STREAM)
23
- FAMILY_MAP[info.first[4]].new(info[3], port, host)
24
- end
25
- end
26
- end
27
- end
28
-
29
- after(:all) do
30
-
31
- module Mongo
32
- # Return the implementations to their originals for the other
33
- # tests in the suite.
34
- class Address
35
- alias :create_resolver :original_create_resolver
36
- remove_method(:original_create_resolver)
37
- end
38
- end
13
+ # Since the tests issue global assertions on Mongo::Logger,
14
+ # we need to close all clients/stop monitoring to avoid monitoring
15
+ # threads warning and interfering with these assertions
16
+ ClientRegistry.instance.close_all_clients
39
17
  end
40
18
 
41
19
  spec.tests.each do |test|
@@ -1,17 +1,22 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIICnTCCAgYCCQD4+RCKzwZr/zANBgkqhkiG9w0BAQUFADCBkjELMAkGA1UEBhMC
3
- VVMxETAPBgNVBAgMCE5ldyBZb3JrMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MQ4w
4
- DAYDVQQKDAUxMEdlbjEPMA0GA1UECwwGS2VybmVsMRowGAYDVQQDDBFNeSBDZXJ0
5
- IEF1dGhvcml0eTEbMBkGCSqGSIb3DQEJARYMcm9vdEBsYXphcnVzMB4XDTEzMTEz
6
- MDAyMzU0OVoXDTIzMTEyODAyMzU0OVowgZIxCzAJBgNVBAYTAlVTMREwDwYDVQQI
7
- DAhOZXcgWW9yazEWMBQGA1UEBwwNTmV3IFlvcmsgQ2l0eTEOMAwGA1UECgwFMTBH
8
- ZW4xDzANBgNVBAsMBktlcm5lbDEaMBgGA1UEAwwRTXkgQ2VydCBBdXRob3JpdHkx
9
- GzAZBgkqhkiG9w0BCQEWDHJvb3RAbGF6YXJ1czCBnzANBgkqhkiG9w0BAQEFAAOB
10
- jQAwgYkCgYEA1xymeY+U/evUuQvxpun9moe4GopN80c1ptmaAHM/1Onwaq54Wt27
11
- nl1wUVme3dh4DdWviYY7mJ333HVEnp/QhVcT4kQhICZqdgPKPdCseQW3H+8x6Gwz
12
- hrNRBdz0NkSoFxDlIymfy2Q2xoQpbCGAg+EnRYUTKlHMXNpUDLFhGjcCAwEAATAN
13
- BgkqhkiG9w0BAQUFAAOBgQDRQB3c/9osTexEzMPHyMGTzG5nGwy8Wv77GgW3BETM
14
- hECoGqueXLa5ZgvealJrnMHNKdj6vrCGgBDzE0K0VdXc4dLtLmx3DRntDOAWKJdB
15
- 2XPMvdC7Ec//Fwep/9emz0gDiJrTiEpL4p74+h+sp4Xy8cBokQ3Ss5S9NmnPXT7E
16
- qQ==
17
- -----END CERTIFICATE-----
2
+ MIIDkzCCAnugAwIBAgIDAzYnMA0GCSqGSIb3DQEBCwUAMHUxFzAVBgNVBAMTDlJ1
3
+ YnkgRHJpdmVyIENBMRAwDgYDVQQLEwdEcml2ZXJzMRAwDgYDVQQKEwdNb25nb0RC
4
+ MRYwFAYDVQQHEw1OZXcgWW9yayBDaXR5MREwDwYDVQQIEwhOZXcgWW9yazELMAkG
5
+ A1UEBhMCVVMwHhcNMTkwMjE0MjA1NzUwWhcNMzkwMjE0MjA1NzUwWjB1MRcwFQYD
6
+ VQQDEw5SdWJ5IERyaXZlciBDQTEQMA4GA1UECxMHRHJpdmVyczEQMA4GA1UEChMH
7
+ TW9uZ29EQjEWMBQGA1UEBxMNTmV3IFlvcmsgQ2l0eTERMA8GA1UECBMITmV3IFlv
8
+ cmsxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
9
+ lnEX6KqH3BaOy5BMLGER0R2duAR1GIrxQTcuBubLZywW8yT0UwIzBhxu536DFESk
10
+ Q7Zd8U1o54/+TPfKAeXSwSulkyzNEljD4W+yMcYFRFuZYZn1BtCjrd6PonOhRpQw
11
+ 5/dLXfs0dn6HpSaJDvmK5xJb/xFx5N2HLeCpJqMbfcQAuBE6BfcA9juAfRsMozhC
12
+ C6IX5ErIAAnIoK3QcxJmYD3OQQdWEeUGmq+b7ClltlaxKrOyLRDEdQXrHcvEtC2P
13
+ 6Qg6bWfjCoFq1ZedoAjycBydnkvjm0JNApGTuL/n6Wl+76v8pmppNTfu2bdvxRI4
14
+ k08J6oT0Id9aUOCJyNqU4QIDAQABoywwKjAMBgNVHRMEBTADAQH/MBoGA1UdEQQT
15
+ MBGCCWxvY2FsaG9zdIcEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEAQNkZgtJU9evV
16
+ +eGFsTjr02DCvrd8ClmQDwAwCcl+4YN9ztLWKOghPk7q7kfricDkE3JR0jxIBgaG
17
+ UVXaJA+G+h8n1phY7xM/jytXBa3RQJmPNS33E54ZpRojXikouMvkfHovgX8fci8s
18
+ 0qXM8f6DRTCNI9BCpfCd6QK1Cf8Fcq8A6os4QYg6PHVui17zsDDT+/9vTmhiKjBr
19
+ PgY/oqYCkfH1XTHn9PAHnaYfBPojfx7T0zDRPVVG2C/aS/xN0pMKUb945Ac/FXd6
20
+ KyCBVJqfIQmGR4GF3ORQNzQYsEORKqKcl/6iGgKRbXGzZeHHABfVJtlpFzvs4V93
21
+ 6BlLo4wq4A==
22
+ -----END CERTIFICATE-----
@@ -1,101 +1,101 @@
1
1
  Certificate:
2
2
  Data:
3
3
  Version: 3 (0x2)
4
- Serial Number: 7 (0x7)
5
- Signature Algorithm: sha1WithRSAEncryption
6
- Issuer: C=US, ST=New York, L=New York City, O=10Gen, OU=Kernel, CN=My Cert Authority/emailAddress=root@lazarus
4
+ Serial Number: 78625 (0x13321)
5
+ Signature Algorithm: sha256WithRSAEncryption
6
+ Issuer: CN = Ruby Driver CA, OU = Drivers, O = MongoDB, L = New York City, ST = New York, C = US
7
7
  Validity
8
- Not Before: Aug 23 14:55:32 2013 GMT
9
- Not After : Jan 7 14:55:32 2041 GMT
10
- Subject: C=US, ST=New York, L=New York City, O=10Gen, OU=kerneluser, CN=client
8
+ Not Before: Feb 14 20:57:58 2019 GMT
9
+ Not After : Feb 14 20:57:58 2039 GMT
10
+ Subject: CN = localhost, OU = Drivers, O = MongoDB, L = New York City, ST = New York, C = US
11
11
  Subject Public Key Info:
12
12
  Public Key Algorithm: rsaEncryption
13
- Public-Key: (2048 bit)
13
+ RSA Public-Key: (2048 bit)
14
14
  Modulus:
15
- 00:ba:16:42:d4:8b:3d:5e:8a:67:9e:a7:c0:cd:4a:
16
- 9c:9c:fd:95:b9:83:bf:f4:cf:03:8c:2e:db:a9:c1:
17
- 35:58:80:f6:e2:e9:87:28:84:e3:d0:9b:68:60:51:
18
- 0e:42:84:d8:6f:e8:34:cc:18:97:79:d3:8d:d8:2f:
19
- 23:11:25:6f:69:7a:38:bb:8c:b2:29:e9:91:be:79:
20
- 8c:cc:1b:56:98:98:d3:83:2a:c5:f9:9c:86:0c:2c:
21
- 24:0e:5c:46:3b:a9:95:44:6c:c5:e0:7c:9d:03:ae:
22
- 0d:23:99:49:a4:48:dd:0e:35:a2:e5:b4:8b:86:bd:
23
- c0:c8:ce:d5:ac:c4:36:f3:9e:5f:17:00:23:8d:53:
24
- a1:43:1b:a3:61:96:36:80:4d:35:50:b5:8b:69:31:
25
- 39:b4:63:8b:96:59:5c:d1:ea:92:eb:eb:fa:1b:35:
26
- 64:44:b3:f6:f3:a6:9d:49:3a:59:e5:e1:c2:cb:98:
27
- be:29:b3:22:dd:33:97:d7:50:4f:db:c2:58:64:18:
28
- b5:8c:3c:6b:2d:21:f6:bd:8d:e5:d2:da:8d:79:fe:
29
- a7:80:75:a8:15:b9:ee:79:7f:01:31:1d:e5:e7:15:
30
- 76:53:65:f6:fe:f0:93:7d:20:3d:cc:ff:9b:ca:b2:
31
- 50:2c:1b:3a:69:d5:e6:70:cf:ac:be:7e:5c:33:c4:
32
- 6e:a7
15
+ 00:96:2d:53:a9:0d:f6:fe:3c:34:5c:60:87:56:c8:
16
+ 69:da:85:e7:10:96:c6:39:6e:5c:09:f3:42:e0:a7:
17
+ bb:38:37:ef:a6:63:6c:28:8b:1d:1a:52:00:52:19:
18
+ 94:63:f9:58:4e:9c:d2:ca:ab:2e:20:66:c3:7d:fb:
19
+ a4:52:e6:7c:5b:bf:b4:06:1f:e4:9e:6b:77:f1:38:
20
+ 14:b2:56:af:77:dd:23:99:1c:b8:07:e5:79:c6:b9:
21
+ 10:18:ea:47:0c:b5:df:d0:a6:15:14:09:37:51:9e:
22
+ f2:7c:2b:66:f8:e9:59:f6:51:e9:50:e2:11:52:d9:
23
+ cf:00:0c:9e:15:55:51:e1:d8:96:9d:15:54:9c:78:
24
+ db:5f:2e:f2:91:5f:55:3c:3f:18:6f:32:16:82:76:
25
+ 9e:83:6c:25:22:b1:27:70:69:cd:aa:a1:52:64:60:
26
+ e5:b3:24:ee:29:ef:2c:ad:de:09:53:02:08:39:10:
27
+ 4f:4a:fc:8b:21:18:ce:f1:fc:54:0c:7f:a6:ec:b2:
28
+ b1:d6:c7:61:bb:bb:3f:7e:31:80:f1:39:f8:4d:e8:
29
+ c2:45:11:e1:ac:90:97:e5:4a:58:a6:07:1b:7f:61:
30
+ c4:aa:f2:66:66:06:b2:c7:1b:71:df:dc:3f:53:fe:
31
+ 85:e4:8b:97:11:c2:d0:7e:10:35:2b:a3:e7:7d:c7:
32
+ 6b:f7
33
33
  Exponent: 65537 (0x10001)
34
34
  X509v3 extensions:
35
- X509v3 Basic Constraints:
36
- CA:FALSE
37
- Netscape Comment:
38
- OpenSSL Generated Certificate
39
- X509v3 Subject Key Identifier:
40
- 4A:8B:EE:22:42:E6:F8:62:4C:86:38:8D:C5:78:95:98:C1:10:05:7C
41
- X509v3 Authority Key Identifier:
42
- keyid:07:41:19:3A:9F:7E:C5:B7:22:4E:B7:BC:D5:DF:E4:FC:09:B8:64:16
43
-
44
- Signature Algorithm: sha1WithRSAEncryption
45
- 13:13:a8:f0:de:78:c6:b1:e0:85:cc:27:e6:04:28:44:93:1d:
46
- f1:ff:5e:81:69:33:1f:f3:76:e0:49:ca:d9:ad:aa:db:f5:a5:
47
- f8:a6:50:bb:a1:a7:40:14:e4:2f:8d:b8:21:7f:35:04:60:db:
48
- af:f0:9e:dd:a1:ca:0b:7f:03:2e:2f:19:1e:32:6e:1e:2d:87:
49
- 68:e3:37:47:a8:5b:93:d1:88:41:73:da:88:21:59:27:d4:35:
50
- 1c:6a:27:b5:c0:c6:17:ba:f3:87:c8:e1:f4:8f:43:12:bc:fa:
51
- 8d:90:d5:86:83:df:51:a5:c9:e0:92:f0:66:d0:37:61:6f:85:
52
- 24:18
35
+ X509v3 Subject Alternative Name:
36
+ DNS:localhost, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1
37
+ Signature Algorithm: sha256WithRSAEncryption
38
+ 48:41:5e:7b:fd:f5:bf:32:52:cd:bc:f8:71:7e:0d:0d:22:05:
39
+ 7d:a5:11:ed:86:ac:02:9c:c3:e1:f4:f4:36:d2:48:8d:a4:5b:
40
+ 4a:d1:76:8f:25:17:72:07:99:49:2f:09:f0:25:f9:0a:a7:06:
41
+ 99:ab:e8:f7:48:c7:4c:f1:a1:4e:f4:64:3a:d8:25:e4:76:30:
42
+ 2a:f6:b8:71:ee:05:cd:b2:7a:7f:e6:c7:7a:c3:af:f1:d1:16:
43
+ 73:a5:bf:db:14:71:c4:d8:f7:e7:ce:82:48:2f:ce:e5:fd:8f:
44
+ 89:4b:a6:0c:1e:6b:42:9d:64:73:7e:37:00:07:b5:e6:b9:b9:
45
+ 89:38:04:d6:67:dd:e1:26:98:e4:49:06:8e:2c:d3:ee:c1:ee:
46
+ 09:b9:95:3a:bd:6a:61:c2:d2:19:6c:e5:86:49:63:ae:e4:93:
47
+ 92:01:48:d2:32:94:2c:62:fd:04:2e:7f:a2:26:85:dd:99:78:
48
+ da:9b:0c:84:19:29:b2:c6:55:e1:4d:97:d5:9a:63:e0:8d:f8:
49
+ 67:4c:3f:0e:6b:67:13:58:ba:28:ec:40:e6:65:c1:18:23:ae:
50
+ 16:1c:fb:7b:d9:bc:c2:84:71:fb:f5:a8:71:cc:a5:2f:28:3b:
51
+ 45:97:d6:15:9e:e8:44:ec:9e:05:72:b2:0a:ac:31:fe:a9:0e:
52
+ e1:ce:82:5f
53
53
  -----BEGIN CERTIFICATE-----
54
- MIIDdjCCAt+gAwIBAgIBBzANBgkqhkiG9w0BAQUFADCBkjELMAkGA1UEBhMCVVMx
55
- ETAPBgNVBAgMCE5ldyBZb3JrMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MQ4wDAYD
56
- VQQKDAUxMEdlbjEPMA0GA1UECwwGS2VybmVsMRowGAYDVQQDDBFNeSBDZXJ0IEF1
57
- dGhvcml0eTEbMBkGCSqGSIb3DQEJARYMcm9vdEBsYXphcnVzMB4XDTEzMDgyMzE0
58
- NTUzMloXDTQxMDEwNzE0NTUzMlowbjELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5l
59
- dyBZb3JrMRYwFAYDVQQHDA1OZXcgWW9yayBDaXR5MQ4wDAYDVQQKDAUxMEdlbjET
60
- MBEGA1UECwwKa2VybmVsdXNlcjEPMA0GA1UEAwwGY2xpZW50MIIBIjANBgkqhkiG
61
- 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuhZC1Is9XopnnqfAzUqcnP2VuYO/9M8DjC7b
62
- qcE1WID24umHKITj0JtoYFEOQoTYb+g0zBiXedON2C8jESVvaXo4u4yyKemRvnmM
63
- zBtWmJjTgyrF+ZyGDCwkDlxGO6mVRGzF4HydA64NI5lJpEjdDjWi5bSLhr3AyM7V
64
- rMQ2855fFwAjjVOhQxujYZY2gE01ULWLaTE5tGOLlllc0eqS6+v6GzVkRLP286ad
65
- STpZ5eHCy5i+KbMi3TOX11BP28JYZBi1jDxrLSH2vY3l0tqNef6ngHWoFbnueX8B
66
- MR3l5xV2U2X2/vCTfSA9zP+byrJQLBs6adXmcM+svn5cM8RupwIDAQABo3sweTAJ
67
- BgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0
68
- aWZpY2F0ZTAdBgNVHQ4EFgQUSovuIkLm+GJMhjiNxXiVmMEQBXwwHwYDVR0jBBgw
69
- FoAUB0EZOp9+xbciTre81d/k/Am4ZBYwDQYJKoZIhvcNAQEFBQADgYEAExOo8N54
70
- xrHghcwn5gQoRJMd8f9egWkzH/N24EnK2a2q2/Wl+KZQu6GnQBTkL424IX81BGDb
71
- r/Ce3aHKC38DLi8ZHjJuHi2HaOM3R6hbk9GIQXPaiCFZJ9Q1HGontcDGF7rzh8jh
72
- 9I9DErz6jZDVhoPfUaXJ4JLwZtA3YW+FJBg=
54
+ MIIDkjCCAnqgAwIBAgIDATMhMA0GCSqGSIb3DQEBCwUAMHUxFzAVBgNVBAMTDlJ1
55
+ YnkgRHJpdmVyIENBMRAwDgYDVQQLEwdEcml2ZXJzMRAwDgYDVQQKEwdNb25nb0RC
56
+ MRYwFAYDVQQHEw1OZXcgWW9yayBDaXR5MREwDwYDVQQIEwhOZXcgWW9yazELMAkG
57
+ A1UEBhMCVVMwHhcNMTkwMjE0MjA1NzU4WhcNMzkwMjE0MjA1NzU4WjBwMRIwEAYD
58
+ VQQDEwlsb2NhbGhvc3QxEDAOBgNVBAsTB0RyaXZlcnMxEDAOBgNVBAoTB01vbmdv
59
+ REIxFjAUBgNVBAcTDU5ldyBZb3JrIENpdHkxETAPBgNVBAgTCE5ldyBZb3JrMQsw
60
+ CQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJYtU6kN
61
+ 9v48NFxgh1bIadqF5xCWxjluXAnzQuCnuzg376ZjbCiLHRpSAFIZlGP5WE6c0sqr
62
+ LiBmw337pFLmfFu/tAYf5J5rd/E4FLJWr3fdI5kcuAfleca5EBjqRwy139CmFRQJ
63
+ N1Ge8nwrZvjpWfZR6VDiEVLZzwAMnhVVUeHYlp0VVJx4218u8pFfVTw/GG8yFoJ2
64
+ noNsJSKxJ3BpzaqhUmRg5bMk7invLK3eCVMCCDkQT0r8iyEYzvH8VAx/puyysdbH
65
+ Ybu7P34xgPE5+E3owkUR4ayQl+VKWKYHG39hxKryZmYGsscbcd/cP1P+heSLlxHC
66
+ 0H4QNSuj533Ha/cCAwEAAaMwMC4wLAYDVR0RBCUwI4IJbG9jYWxob3N0hwR/AAAB
67
+ hxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUAA4IBAQBIQV57/fW/MlLN
68
+ vPhxfg0NIgV9pRHthqwCnMPh9PQ20kiNpFtK0XaPJRdyB5lJLwnwJfkKpwaZq+j3
69
+ SMdM8aFO9GQ62CXkdjAq9rhx7gXNsnp/5sd6w6/x0RZzpb/bFHHE2PfnzoJIL87l
70
+ /Y+JS6YMHmtCnWRzfjcAB7XmubmJOATWZ93hJpjkSQaOLNPuwe4JuZU6vWphwtIZ
71
+ bOWGSWOu5JOSAUjSMpQsYv0ELn+iJoXdmXjamwyEGSmyxlXhTZfVmmPgjfhnTD8O
72
+ a2cTWLoo7EDmZcEYI64WHPt72bzChHH79ahxzKUvKDtFl9YVnuhE7J4FcrIKrDH+
73
+ qQ7hzoJf
73
74
  -----END CERTIFICATE-----
74
- -----BEGIN PRIVATE KEY-----
75
- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6FkLUiz1eimee
76
- p8DNSpyc/ZW5g7/0zwOMLtupwTVYgPbi6YcohOPQm2hgUQ5ChNhv6DTMGJd5043Y
77
- LyMRJW9peji7jLIp6ZG+eYzMG1aYmNODKsX5nIYMLCQOXEY7qZVEbMXgfJ0Drg0j
78
- mUmkSN0ONaLltIuGvcDIztWsxDbznl8XACONU6FDG6NhljaATTVQtYtpMTm0Y4uW
79
- WVzR6pLr6/obNWREs/bzpp1JOlnl4cLLmL4psyLdM5fXUE/bwlhkGLWMPGstIfa9
80
- jeXS2o15/qeAdagVue55fwExHeXnFXZTZfb+8JN9ID3M/5vKslAsGzpp1eZwz6y+
81
- flwzxG6nAgMBAAECggEBALYw92urjAFVFxCiA8W7aEzYhtAkaztft4R3mD/C19z4
82
- H0CZDeig+3+RuIactY5xDIu8WHz/EseHVlg0BmxSL5ugu4z8uq8IbNaFoVFw7r7m
83
- 2ieRKFY0ZpXiXcbllynw5iEhMjeRKhWhQmH5Qb2kTTINV5j4xKa+f9Lblx7Y2Uh4
84
- tsaOtlMwb98D2/KYJdTv5Nj1nyuSqRVhECsd00Cb6JUBGQBx8Ja0wFy9gEygq6kU
85
- w3s1XNOSnYNEo4FaVZwp5KZyCyBENcKpNUq4nXt/7ncEfVYdJck0Li3wN4Jr2J9S
86
- eHqRzh8QkHxc1Ro8ktcXaUSs9kFuwvVvb4rcGUpOMWkCgYEA9xxp8yDtFVgzMtc/
87
- vS8xgM1Wj4SrgKKYhE2wS05BJh/41oFMzfH1FpZ1GCM983r4QgYWoT71XsBgiOMC
88
- yN2p2IbV4V44bMGKJqaVMkB91CVCUWI6piaCQb/1CJTwaXE7zPim6dlUSxxBBnRn
89
- LP50NTscRLFcCZELD3Yl7jR8XFUCgYEAwMfkNFmGtBKAwlHZ3Y3XOwPWg+jCll7s
90
- 9nhv8TU2IB9pcCRGqyOT7k1YymvYkDT2Je4JUPWEBs4cW7yD61LrQ8w8+DrE9dGo
91
- czzGPyjOAANSX0asG74UjkNIQThmyEOltVHIxYMaSqowjHRSPdA+R4Od9EdcDdfS
92
- q5SfSVFxmwsCgYBtl1thqUOcCL7EGHQ7KdfxgJ+YDMWmyfWMD4xVCYKZLurD7xop
93
- 59nDR7zslIygE/RQC7Uzk+FsQTNO4ibVAIGX9syaI5gwm3DyjURzwehMEq4ju8W4
94
- 9DEmicRZJvysNrzHvasA4RKiMQihnTQ43yyYgvuZd3MTBxF5rPNLfll89QKBgQC9
95
- SsmiOZIR+OUjaTmS2bbQBNm7Fm8TNcxZyzKn1wb5jb57VbNqUfnskVgxEqpIFyjn
96
- X48YRqtH/1RLI5UpGXdXUBFB8Hr7oM1VsgQ7ejakPp7AXOWcLA2FDz3AhMAvvnTU
97
- 0KRihHPpgqk/EOy8M2Ej2XHcrcEO+q+quLmbRXRWtwKBgHacQiwci/2J+v0e9i52
98
- re/2AJHKP5MwNHFe1e01iNc5EEN0G+/Ut8XW19DWf6bsxqie0ChC+xN8TUst8alT
99
- F+tXTsHHmt/lRcjTROjT5XVuoqjtU2Q0QeVeGLgvObso+fZy3ZNeQuSJjWukdMZ3
100
- 57rGT6p0OuM8qbrTzpv3JMrm
101
- -----END PRIVATE KEY-----
75
+ -----BEGIN RSA PRIVATE KEY-----
76
+ MIIEowIBAAKCAQEAli1TqQ32/jw0XGCHVshp2oXnEJbGOW5cCfNC4Ke7ODfvpmNs
77
+ KIsdGlIAUhmUY/lYTpzSyqsuIGbDffukUuZ8W7+0Bh/knmt38TgUslavd90jmRy4
78
+ B+V5xrkQGOpHDLXf0KYVFAk3UZ7yfCtm+OlZ9lHpUOIRUtnPAAyeFVVR4diWnRVU
79
+ nHjbXy7ykV9VPD8YbzIWgnaeg2wlIrEncGnNqqFSZGDlsyTuKe8srd4JUwIIORBP
80
+ SvyLIRjO8fxUDH+m7LKx1sdhu7s/fjGA8Tn4TejCRRHhrJCX5UpYpgcbf2HEqvJm
81
+ Zgayxxtx39w/U/6F5IuXEcLQfhA1K6Pnfcdr9wIDAQABAoIBAClvRB/mrHkk30WF
82
+ lJHLJfmW7FPVZce+vUI5jgAyByPRuxtrXxIon9T9Pv1n9VtIFqdJ+ZbVeBqUf+eo
83
+ oIQG99TQpbjy378d46/4Sy2RYURvDT1XgSccl2bO9LQLH6NQIvqMeFBY4pxwgHLl
84
+ /rk6mQmvO/KHDUSQt95JnOxB6B+plv1prpQVGHVqzre8LAZdJdv/8wVqFHbrAGoU
85
+ 62wUQ66y5oSxLN9YUzTQNb8ECBRTfmF9WCF9aXx4TJyX0+WkyiztUx0ArBm/ANGv
86
+ k5GzPoL0UFRjVr+ObM755SHrJQ9pIOjJnZAA0DW8fHAQcV8XcA2UcqrA+jw/XX9Q
87
+ ku4cz5ECgYEA5iopSEu8WLEkCmVAYVurd1gQSlJQ6aYrcMas+p2kqW1p/hkDvREO
88
+ dt55evAKIENgVo9N4daN4K5ijftxxTQyX0HlO/0eeC6LpWIPjkkJ02H5htKvvIhw
89
+ zxJd7XTKyQA1/wOc/Ooo5MfGO44eBVVBzErX6rGzc/PFfLzlGDa567sCgYEApwiz
90
+ h9SppQwsbjXDjcOfJoZbmnJjzdMJ1rDUnLY7iCaVdf7cIaHCY72xSlgtruVkGQ6m
91
+ vYwjh/YnwU3qoBi1tbu+ByHWxImLwsLZMA4ct4IF5Qvi2d2v4GtOq/sQcqB+35d/
92
+ dJ4CcR1sHe6R5H0uvDDmNoJiJFESbtTD0Wt4VvUCgYAehOSoc3JsCEERJ8/bmP4p
93
+ ewHd+QBFmwUTlSSGrrSQyrNNQB/gyAw08tcE2CNfl8+EasgW9A4oBreGwBqb3Yn4
94
+ W5J729pYcUOPEGujoEevQcSGfhVTWHws2PCfdecVs/N09xOv7ZSykVLVvsh4SI/K
95
+ +PmcYye6bk53dcyi407P1QKBgAUbiwHYSue1G5azJiurk65F5X8viEW+8koSVi4E
96
+ lIVxSJi3Flwg6iTKpCU11Q/IC+uIOykIo/2AVW7fxxDmMIhCGWl2a27PFer6slF5
97
+ 3P7vhuaeGm23Da27GkjAAJzAs6B6rXcPbduvnqK7rNJj0Y4HoMKB8iZSJFInR2Wb
98
+ 964RAoGBAIvzvWDusSLOmkAN7KKwbmVdrKLgKPGtyNjJyKdp0zUxslOQsSraOq/K
99
+ hsBgotDdq8igR6iUHfmcSs7FVU1QBBMfqe5XVJhj4GWMe2VzRIvBcuvaMLyUuZ61
100
+ TwPjfJRUCACo4MSQHEBlbWq9ZYzO8nZ+FyCldN/n5Uevp84BOyBO
101
+ -----END RSA PRIVATE KEY-----