Skip to content

Commit f8b6a87

Browse files
isapegonizhikovandrey-kuznetsov
authored
GG-32662 [IGNITE-12718] add SSL keyfile password argument (#16)
Co-authored-by: Nikolay Izhikov <nizhikov@apache.org> Co-authored-by: Andrey Kuznetsov <stkuzma@gmail.com>
1 parent 33f7ead commit f8b6a87

11 files changed

Lines changed: 248 additions & 60 deletions

File tree

pygridgain/connection/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def _check_ssl_params(params):
7272
'ssl_ciphers',
7373
'ssl_cert_reqs',
7474
'ssl_keyfile',
75+
'ssl_keyfile_password',
7576
'ssl_certfile',
7677
'ssl_ca_certfile',
7778
]
@@ -115,6 +116,9 @@ def __init__(
115116
116117
:param ssl_keyfile: (optional) a path to SSL key file to identify
117118
local (client) party,
119+
:param ssl_keyfile_password: (optional) password for SSL key file,
120+
can be provided when key file is encrypted to prevent OpenSSL
121+
password prompt,
118122
:param ssl_certfile: (optional) a path to ssl certificate file
119123
to identify local (client) party,
120124
:param ssl_ca_certfile: (optional) a path to a trusted certificate

pygridgain/connection/ssl.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,36 @@
1414
# limitations under the License.
1515
#
1616
import ssl
17+
from ssl import SSLContext
1718

1819
from pygridgain.constants import *
1920

2021

2122
def wrap(conn: 'Connection', _socket):
2223
""" Wrap socket in SSL wrapper. """
2324
if conn.ssl_params.get('use_ssl', None):
24-
_socket = ssl.wrap_socket(
25-
_socket,
26-
ssl_version=conn.ssl_params.get(
27-
'ssl_version', SSL_DEFAULT_VERSION
28-
),
29-
ciphers=conn.ssl_params.get(
30-
'ssl_ciphers', SSL_DEFAULT_CIPHERS
31-
),
32-
cert_reqs=conn.ssl_params.get(
33-
'ssl_cert_reqs', ssl.CERT_NONE
34-
),
35-
keyfile=conn.ssl_params.get('ssl_keyfile', None),
36-
certfile=conn.ssl_params.get('ssl_certfile', None),
37-
ca_certs=conn.ssl_params.get('ssl_ca_certfile', None),
38-
)
25+
keyfile = conn.ssl_params.get('ssl_keyfile', None)
26+
certfile = conn.ssl_params.get('ssl_certfile', None)
27+
28+
if keyfile and not certfile:
29+
raise ValueError("certfile must be specified")
30+
31+
password = conn.ssl_params.get('ssl_keyfile_password', None)
32+
ssl_version = conn.ssl_params.get('ssl_version', SSL_DEFAULT_VERSION)
33+
ciphers = conn.ssl_params.get('ssl_ciphers', SSL_DEFAULT_CIPHERS)
34+
cert_reqs = conn.ssl_params.get('ssl_cert_reqs', ssl.CERT_NONE)
35+
ca_certs = conn.ssl_params.get('ssl_ca_certfile', None)
36+
37+
context = SSLContext(ssl_version)
38+
context.verify_mode = cert_reqs
39+
40+
if ca_certs:
41+
context.load_verify_locations(ca_certs)
42+
if certfile:
43+
context.load_cert_chain(certfile, keyfile, password)
44+
if ciphers:
45+
context.set_ciphers(ciphers)
46+
47+
_socket = context.wrap_socket(sock=_socket)
48+
3949
return _socket

tests/config/ignite-config-ssl.xml

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22

33
<!--
4-
Licensed to the Apache Software Foundation (ASF) under one or more
5-
contributor license agreements. See the NOTICE file distributed with
6-
this work for additional information regarding copyright ownership.
7-
The ASF licenses this file to You under the Apache License, Version 2.0
8-
(the "License"); you may not use this file except in compliance with
9-
the License. You may obtain a copy of the License at
10-
11-
http://www.apache.org/licenses/LICENSE-2.0
12-
13-
Unless required by applicable law or agreed to in writing, software
14-
distributed under the License is distributed on an "AS IS" BASIS,
15-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16-
See the License for the specific language governing permissions and
17-
limitations under the License.
4+
Copyright 2019 GridGain Systems, Inc. and Contributors.
5+
6+
Licensed under the GridGain Community Edition License (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
https://www.gridgain.com/products/software/community-edition/gridgain-community-edition-license
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
1817
-->
1918

2019
<beans xmlns="http://www.springframework.org/schema/beans"

tests/config/log4j.xml

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22

33
<!--
4-
Licensed to the Apache Software Foundation (ASF) under one or more
5-
contributor license agreements. See the NOTICE file distributed with
6-
this work for additional information regarding copyright ownership.
7-
The ASF licenses this file to You under the Apache License, Version 2.0
8-
(the "License"); you may not use this file except in compliance with
9-
the License. You may obtain a copy of the License at
4+
Copyright 2019 GridGain Systems, Inc. and Contributors.
105
11-
http://www.apache.org/licenses/LICENSE-2.0
6+
Licensed under the GridGain Community Edition License (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
129
13-
Unless required by applicable law or agreed to in writing, software
14-
distributed under the License is distributed on an "AS IS" BASIS,
15-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16-
See the License for the specific language governing permissions and
17-
limitations under the License.
10+
https://www.gridgain.com/products/software/community-edition/gridgain-community-edition-license
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
1817
-->
1918

2019
<Configuration>
2120
<Appenders>
22-
<Console name="CONSOLE" target="SYSTEM_OUT" level="debug">
21+
<Console name="CONSOLE" target="SYSTEM_OUT">
2322
<PatternLayout pattern="[%d{ISO8601}][%-5p][%t][%c{1}] %m%n"/>
2423
</Console>
25-
<RollingFile name="FILE" level="debug" append="true"
24+
<RollingFile name="FILE" append="true"
2625
filePattern="logs/ignite-log-${env:IGNITE_INSTANCE_INDEX}-%i.log.gz"
2726
fileName="logs/ignite-log-${env:IGNITE_INSTANCE_INDEX}.txt">
2827
<PatternLayout pattern="%m%n"/>

tests/config/ssl.xml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<!--
4+
Copyright 2019 GridGain Systems, Inc. and Contributors.
5+
6+
Licensed under the GridGain Community Edition License (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
https://www.gridgain.com/products/software/community-edition/gridgain-community-edition-license
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
-->
18+
19+
<beans xmlns="http://www.springframework.org/schema/beans"
20+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
21+
xsi:schemaLocation="
22+
http://www.springframework.org/schema/beans
23+
http://www.springframework.org/schema/beans/spring-beans.xsd">
24+
25+
<!--
26+
Initialize property configurer so we can reference environment variables.
27+
-->
28+
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
29+
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK"/>
30+
<property name="searchSystemEnvironment" value="true"/>
31+
</bean>
32+
33+
<bean id="test.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
34+
<property name="localHost" value="127.0.0.1"/>
35+
<property name="connectorConfiguration"><null/></property>
36+
37+
<property name="clientConnectorConfiguration">
38+
<bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
39+
<property name="host" value="127.0.0.1"/>
40+
<property name="portRange" value="10"/>
41+
<property name="sslEnabled" value="true"/>
42+
<property name="useIgniteSslContextFactory" value="false"/>
43+
<property name="sslClientAuth" value="true"/>
44+
45+
<!-- Provide Ssl context. -->
46+
<property name="sslContextFactory">
47+
<bean class="org.apache.ignite.ssl.SslContextFactory">
48+
<property name="keyStoreFilePath" value="${PYTHON_TEST_CONFIG_PATH}/ssl/server.jks"/>
49+
<property name="keyStorePassword" value="123456"/>
50+
<property name="trustStoreFilePath" value="${PYTHON_TEST_CONFIG_PATH}/ssl/trust.jks"/>
51+
<property name="trustStorePassword" value="123456"/>
52+
</bean>
53+
</property>
54+
</bean>
55+
</property>
56+
</bean>
57+
</beans>

tests/config/ssl/README.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
These files generated using script
2+
`$IGNITE_SRC/modules/platforms/cpp/thin-client-test/config/ssl/generate_certificates.sh`
3+
To update them just run script and move files to this folder.

tests/config/ssl/client_full.pem

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCnW8A/wVcIQL7O
3+
T197f6YSl572HyXZbhAMXU9CIT5Er1TDUETPHE2cslvkXSvpMkaI61ftPelEfoir
4+
IVyuoJb4c6rnPLtnt+LfUmN8MS8C+vsZPw6gaZW6JIKGMLsUo/nmz986C9AfuSco
5+
auVFQC+48pHjzXUQ+sGvnAQjSaz/U5+0pKMJBMxxmcwLSn6vopz7859X08odWdV2
6+
5sq6irJW+w/93vuYdBXqlFthjMSVzOBhFTeTYw6db+CmNofG+EMjqP9lB5rPGLHb
7+
qbOJx3jv8dvTxECtoc2myAmQrUB9+xXX6/90j2HRuNu2BauPsmpfq7lNvjV/Bea/
8+
hnhFl+anAgMBAAECggEBAIsACYzqZ/7Sx6dTBVrtimGmzMBe3nDYmTurxEiIk884
9+
UI5n/L6II24iNXBWckIdH7hYv46r/TKGZby82N2xQ7LXXvrv1jcu45/YLgjYUNOI
10+
4UT2uo9BIrqX2FDb6IYcK1MpE56CcTnn7j4DiqkZxok17zXlT3XqzzOrwUQNzUHC
11+
Oo3vPRzZBYqyLknyIqNP5fZoJbVgH469ka6s6oOyOzW5fTvPdlK/lWqAdqf7GJEV
12+
1xwVsDOy1NvrxXwqz3knq3yykkErYFXi7Wf4AcCMH0n42kWQwWh4w3Ug+TtcRe4c
13+
Y7qcQFa3GVeVDIB4komCtezOhHGG4upRuwK4fko1iwECgYEA2OCIHqjvWEmOsB3G
14+
2c7ci78NNjOVn12NhiX671wALnJ+IqVlHUg1TUV8lu7oK8rHLDhiQPiM9aTc1012
15+
+3pwSn9l2z5UtEt4KxeRc14lCOMST+mZe/SDf7TLQsj26oOWJksT9UfxT2AtzcvF
16+
Xy51uG+0Ve32s1OZiGp04lORPtMCgYEAxYxtbxkYJsg2yXjf/d97hr+eMGoyoWxv
17+
TIytIWyNh8SinQdyjyPlMrMjDKXhPuMvWocAkDiLtd9wHSzgTV8VkdRuajDxptjL
18+
Z0Kjt9pMp1SMTNzfCMflDviWq46SXEAQkm7lAag3zqZNB34rI5WpW8dPf/gIIJCc
19+
zegqadYXHF0CgYAOi0g1niim6A/smaKbOrcpm/9b0ivHizORenyQjr/oXX89/Y+B
20+
XjVM4EsRqCXjwe6HdaSJLOHvG0ZAHg7LoJNlO5PuFwkBKkp9wU/cx8R+CxRQTZ8g
21+
Y+5pows6iFWetoJcQQ6ulUuGgjGwKmkrD+ePHdafKJ0xu3qBXnpGL0p/RwKBgQCm
22+
xDZ57EhMLQa7LBSDf88K4OZM3snhJeYLTFK3fak47RGN2ISoO9g35av3+GzfJvCJ
23+
zp/2IBYpMfe2WXT9PAC8fAW+FZVakXecs0/8XAgL1j8ef/K0ufMvoUGokBIUWGzl
24+
AULIFFcQV6l9YtBOGQDAntAJKrzJqOsGlDCB6h7WbQKBgQCnF1SuakiToiv7TQHk
25+
KQT6kUGqBO7hSfGG3jx2alATXww46iCj2Op8dcIYcM1vPCSFlMgI4zlgX01tap2/
26+
+LDtehygTY11jm6q8adoplqGN8LlotXeBTwgN2COdNbhh6Nj+9M+yCl749nnBfd7
27+
17EiuQzTB8B4oK9dfvDK07hq3w==
28+
-----END PRIVATE KEY-----
29+
-----BEGIN CERTIFICATE-----
30+
MIIEBTCCAu0CCQDvTawLdBCCFDANBgkqhkiG9w0BAQsFADCBvzELMAkGA1UEBhMC
31+
VVMxFjAUBgNVBAgMDU1hc3NhY2h1c2V0dHMxEjAQBgNVBAcMCVdha2VmaWVsZDEa
32+
MBgGA1UEAwwRaWduaXRlLmFwYWNoZS5vcmcxJzAlBgNVBAoMHlRoZSBBcGFjaGUg
33+
U29mdHdhcmUgRm91bmRhdGlvbjEZMBcGA1UECwwQQXBhY2hlIElnbml0ZSBDQTEk
34+
MCIGCSqGSIb3DQEJARYVZGV2QGlnbml0ZS5hcGFjaGUub3JnMB4XDTIwMDgzMTA5
35+
MjgyNVoXDTMwMDgyOTA5MjgyNVowgcgxCzAJBgNVBAYTAlVTMRYwFAYDVQQIDA1N
36+
YXNzYWNodXNldHRzMRIwEAYDVQQHDAlXYWtlZmllbGQxGjAYBgNVBAMMEWlnbml0
37+
ZS5hcGFjaGUub3JnMScwJQYDVQQKDB5UaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5k
38+
YXRpb24xIjAgBgNVBAsMGUFwYWNoZSBJZ25pdGUgQ2xpZW50IFRlc3QxJDAiBgkq
39+
hkiG9w0BCQEWFWRldkBpZ25pdGUuYXBhY2hlLm9yZzCCASIwDQYJKoZIhvcNAQEB
40+
BQADggEPADCCAQoCggEBAKdbwD/BVwhAvs5PX3t/phKXnvYfJdluEAxdT0IhPkSv
41+
VMNQRM8cTZyyW+RdK+kyRojrV+096UR+iKshXK6glvhzquc8u2e34t9SY3wxLwL6
42+
+xk/DqBplbokgoYwuxSj+ebP3zoL0B+5Jyhq5UVAL7jykePNdRD6wa+cBCNJrP9T
43+
n7SkowkEzHGZzAtKfq+inPvzn1fTyh1Z1XbmyrqKslb7D/3e+5h0FeqUW2GMxJXM
44+
4GEVN5NjDp1v4KY2h8b4QyOo/2UHms8Ysdups4nHeO/x29PEQK2hzabICZCtQH37
45+
Fdfr/3SPYdG427YFq4+yal+ruU2+NX8F5r+GeEWX5qcCAwEAATANBgkqhkiG9w0B
46+
AQsFAAOCAQEAiE2xX2uNRmsPMfVA//nbc6Djj+a/FEqJ2OvqVTaJPw5M2Jw8F+XG
47+
sd09qXXCKpBtihBrbnoHQIQNUTOAkuxrCkRCubQ0w7PQTomOX/cXQdMPdgWa27Oi
48+
Li7Pq2FwAEwhnSfOPwrj+2XU1bzwwIMdT85XD9KQFirIzGaAnGMN08pNxRROlOyV
49+
bOqIptP9DGuM51lKNd+rNoBY1C29pnYoitFjarRkNfOwJqBabPacDvjZLuo/CP8Z
50+
KmhjH3W1AtcRNGNrlaqsaS02Ny6SgvXWKNKtp5xRpwmOZ6YT8Q2pHXPfE8mjCvl0
51+
Cu6HiNMP8LUdxriKDtdHZbhBCAfnjzBzUw==
52+
-----END CERTIFICATE-----
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
Proc-Type: 4,ENCRYPTED
3+
DEK-Info: AES-256-CBC,42A0C0A0F7D8E31ABF5BE4EC262E2881
4+
5+
j6XDTAvm5OI12CmE/UlK9NTTWbvwuoKcuqaYlPxPtPdO9tZ7RxdPLX0aasi4ALPm
6+
WF1oe1SmPAneXQrHejxb/mw1rliqwVwEblSdXUEtq4ZFSGwy+YmYXP62XNKwColM
7+
BppNX87MxS5hu6wsV2cuML7e/Y5wUro04Tk2kXoraVXyxLChKffY68rzih1pv5d1
8+
cA4lFqvMNBbIOGIUIRX60eZSlZ6XS5oZY9pc7O+KOUH7e8Pa3dFEbdXgbSX+dGLt
9+
DhV7bb1sciuJDBC7F9HjZem5YkKt44AkwfL3v/m7kGTaESNN2/NYemNGsth+HmF6
10+
nWB5ver1dQ3iGG1gLLmLbDyXcmOHSxWIcagqN0/bX08gBdBIWiTTHx7k3ke8z5QO
11+
8T+Yx6O6O0ccLWYZUnA3Dw4vNEV8Xn1V2+e0Z0uhTt0kf2bu4xCwkmrlREjcqtMD
12+
8OAzzhiyQjJGmbQQpTrVKdIT5e3Ux+PKzaUo5U1ZP8s7b76VxjsmljXrFV9I4qLC
13+
/NP22GH71F+p68qaawldw/ljtx9KuVYGD3cbvN5bF3VDUSf4HoI56U/WrfM1/P+/
14+
27yLYGEb8g4kzIp0GjC50CkFZRTAG/C5kh5mo+L8A5kQ77z8Utn75FnnUDuL22Pa
15+
qnJE7IWFWITA0f3KE62oiIxx//+rxy4KneYKv9HLRjqd7p0Yzv9XhyBlXtFRX9g0
16+
ji8M0lvJGwDxarH6BTFozLYfjFo92FG5la0GJS/uPOXaly2DFElg71pA24xGlgr0
17+
u6Cprge5T95VVFKOEJ6z5M0tTtfKPXnD+vb9FfIotKWr03+palUANGuXAIf3C++a
18+
NfUm6R7dZ3nUGk4+L+U+NsyIGEMYnBLD5jgSVGg8q3MiUb6Zwy3lV0maoNV3pizt
19+
QrWWlSuo6fUAkFEADyEhy305FhjWBTsJ5ZP+D75Joh5tR7gzDhl0Xg4nyTQ+QUM+
20+
6E/yBsEIjunITQeDOf7Il8Jg/07T0StH9RllWnz7/UTAD4SYrrPs5Fvn1heIP/aO
21+
s/ER7Ip2YVhr0U4aCFzzuxSuWRRJCEE7Rb0AYT7pU4/iTu2tQYQV/VAMaK+PM0O6
22+
j5YwnV7fVZBjs3BgZodu+qm/8bK7fSjG8qQQ50jEcQZmkqEuBbJRIi4RNvBpm1Eo
23+
q79CuxhAPBM69jmJao5cxKOj3zRzI3ZamT6cMcssz/HkgEKO4H9rr2ZKB4xCeR7n
24+
QUo9bQbnq5W4xbei23Zk5/Tg8g0lUdfhiNTa+0mQap7Vnl7SQaaH4MfKEpdzm7eW
25+
73eIvl4HVOtp76SIV82wMMW+IVzcikpFwQpP8EEq+XGZFk/zY1tptsRy2USadM4Y
26+
Hjpyx4ZOYFg0HKI0vc2TuMo2AvmgyL1/zBB4DC44OUEW8TuUoX20rYhtq3alqlpl
27+
ieHAyqIDeZV+//FSMSDiHR4TAWQu4LnH/3G0MIZYnp9jyqjc7fF+uXfdSiCqGFn3
28+
DP9nU/PyL0fYFXnNlL8Lazyhi7ETvn694ni/HdElXnqugAIBdaRcwjqfaZ0XA0ho
29+
QGOSiPEYkJL19x93C96EXmBxW+Y72uxlEeEYuFafSegIypOkf4swgzlfdsaVq2uo
30+
-----END RSA PRIVATE KEY-----
31+
-----BEGIN CERTIFICATE-----
32+
MIIEBTCCAu0CCQDvTawLdBCCFTANBgkqhkiG9w0BAQsFADCBvzELMAkGA1UEBhMC
33+
VVMxFjAUBgNVBAgMDU1hc3NhY2h1c2V0dHMxEjAQBgNVBAcMCVdha2VmaWVsZDEa
34+
MBgGA1UEAwwRaWduaXRlLmFwYWNoZS5vcmcxJzAlBgNVBAoMHlRoZSBBcGFjaGUg
35+
U29mdHdhcmUgRm91bmRhdGlvbjEZMBcGA1UECwwQQXBhY2hlIElnbml0ZSBDQTEk
36+
MCIGCSqGSIb3DQEJARYVZGV2QGlnbml0ZS5hcGFjaGUub3JnMB4XDTIwMDgzMTA5
37+
MjgyNVoXDTMwMDgyOTA5MjgyNVowgcgxCzAJBgNVBAYTAlVTMRYwFAYDVQQIDA1N
38+
YXNzYWNodXNldHRzMRIwEAYDVQQHDAlXYWtlZmllbGQxGjAYBgNVBAMMEWlnbml0
39+
ZS5hcGFjaGUub3JnMScwJQYDVQQKDB5UaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5k
40+
YXRpb24xIjAgBgNVBAsMGUFwYWNoZSBJZ25pdGUgQ2xpZW50IFRlc3QxJDAiBgkq
41+
hkiG9w0BCQEWFWRldkBpZ25pdGUuYXBhY2hlLm9yZzCCASIwDQYJKoZIhvcNAQEB
42+
BQADggEPADCCAQoCggEBAPXi2AbcfKK/BdGWIZZvXyICOfLXXXNezAo1fiVs5LfG
43+
C5v0lBSmxeu1NYRF05Wf4/mEmVZnhzoVxViQWlUbL6M6A/VrrZPOF421tloiz/1J
44+
hBfVI91JBji2cP78HvdPAGIHg5zLlgGUxaKxgvRfm3v43hc3YvzXo8Adg6QBMNdQ
45+
m3co5L887lhixCHZh/FcncbaXSwRSZJtS9B1DiCUVIlfcAIkn80xL2bJ5giS5vwH
46+
pKZagoykaVbwrd3ObHGQtCZ/TtLM5gseDfppEWRtZv5wmJEejcHot5nSfUIrDuuY
47+
7MO6flSy6yshSXbk2eAQ8YCLywwSm87uA3PrOeX77PsCAwEAATANBgkqhkiG9w0B
48+
AQsFAAOCAQEAI+2iiMcS1ks7YZZb9H/Oa1Il4wOOC+OEkFsVBLBKtUiEYkBJHykg
49+
BPguDjd/wXfCRb8FgG28JUfhzcvEIZB18tb1updKvEsLZUfPGXI89vUTshi51hy7
50+
VoOAJMyzJRWDP37MAtnTAu0uS205Q+8VE/adDrdjDQKBGF98OkXQVsxyfckzY2Za
51+
mmCmOWdJWTZH/5eh+2ogvsGDy9VXYyQlhNNl5oLVldPL4AjanKfIwaYIwYZXyKV9
52+
2+2lkkM7ikY6WxCHct41IuyBx5Nty2zu5tdLoQd1lII4u1c0t5AfrJYyWjeNMMnF
53+
+e9wWnM1ivfHESAHFzhdzSbXuEFHlq3F1w==
54+
-----END CERTIFICATE-----

tests/config/ssl/server.jks

2.32 KB
Binary file not shown.

tests/config/ssl/trust.jks

1.31 KB
Binary file not shown.

0 commit comments

Comments
 (0)