Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3e29993

Browse files
authored
chore: minor cleanup PR#315 (#322)
* use trust store for ssl connections even if key/cert not used.* remove/fix debugging println* fix property names to be consistent.
1 parent0fb6578 commit3e29993

17 files changed

+706
-52
lines changed

‎src/main/kotlin/com/coder/gateway/CoderGatewayConnectionProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ class CoderGatewayConnectionProvider : GatewayConnectionProvider {
140140
if (token==null) {// User aborted.
141141
throwIllegalArgumentException("Unable to connect to$deploymentURL,$TOKEN is missing")
142142
}
143-
val client=CoderRestClient(deploymentURL, token.first,null, settings)
143+
val client=CoderRestClient(deploymentURL, token.first,null, settings)
144144
returntry {
145145
Pair(client, client.me().username)
146146
}catch (ex:AuthenticationResponseException) {

‎src/main/kotlin/com/coder/gateway/sdk/CoderRestClientService.kt

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.google.gson.Gson
1919
importcom.google.gson.GsonBuilder
2020
importcom.intellij.ide.plugins.PluginManagerCore
2121
importcom.intellij.openapi.components.Service
22+
importcom.intellij.openapi.diagnostic.Logger
2223
importcom.intellij.openapi.extensions.PluginId
2324
importcom.intellij.openapi.util.SystemInfo
2425
importokhttp3.OkHttpClient
@@ -36,7 +37,6 @@ import java.net.URL
3637
importjava.nio.file.Path
3738
importjava.security.KeyFactory
3839
importjava.security.KeyStore
39-
importjava.security.PrivateKey
4040
importjava.security.cert.CertificateException
4141
importjava.security.cert.CertificateFactory
4242
importjava.security.cert.X509Certificate
@@ -47,6 +47,7 @@ import java.util.Base64
4747
importjava.util.Locale
4848
importjava.util.UUID
4949
importjavax.net.ssl.HostnameVerifier
50+
importjavax.net.ssl.KeyManager
5051
importjavax.net.ssl.KeyManagerFactory
5152
importjavax.net.ssl.SNIHostName
5253
importjavax.net.ssl.SSLContext
@@ -251,53 +252,56 @@ class CoderRestClient(
251252
}
252253
}
253254

254-
funcoderSocketFactory(settings:CoderSettingsState) :SSLSocketFactory {
255-
if (settings.tlsCertPath.isBlank()|| settings.tlsKeyPath.isBlank()) {
256-
returnSSLSocketFactory.getDefault()asSSLSocketFactory
257-
}
255+
funSSLContextFromPEMs(certPath:String,keyPath:String,caPath:String) :SSLContext {
256+
var km:Array<KeyManager>?=null
257+
if (certPath.isNotBlank()&& keyPath.isNotBlank()) {
258+
val certificateFactory=CertificateFactory.getInstance("X.509")
259+
val certInputStream=FileInputStream(expandPath(certPath))
260+
val certChain= certificateFactory.generateCertificates(certInputStream)
261+
certInputStream.close()
262+
263+
// ideally we would use something like PemReader from BouncyCastle, but
264+
// BC is used by the IDE. This makes using BC very impractical since
265+
// type casting will mismatch due to the different class loaders.
266+
val privateKeyPem=File(expandPath(keyPath)).readText()
267+
val start:Int= privateKeyPem.indexOf("-----BEGIN PRIVATE KEY-----")
268+
val end:Int= privateKeyPem.indexOf("-----END PRIVATE KEY-----", start)
269+
val pemBytes:ByteArray=Base64.getDecoder().decode(
270+
privateKeyPem.substring(start+"-----BEGIN PRIVATE KEY-----".length, end)
271+
.replace("\\s+".toRegex(),"")
272+
)
273+
274+
val privateKey=try {
275+
val kf=KeyFactory.getInstance("RSA")
276+
val keySpec=PKCS8EncodedKeySpec(pemBytes)
277+
kf.generatePrivate(keySpec)
278+
}catch (e:InvalidKeySpecException) {
279+
val kf=KeyFactory.getInstance("EC")
280+
val keySpec=PKCS8EncodedKeySpec(pemBytes)
281+
kf.generatePrivate(keySpec)
282+
}
258283

259-
val certificateFactory=CertificateFactory.getInstance("X.509")
260-
val certInputStream=FileInputStream(expandPath(settings.tlsCertPath))
261-
val certChain= certificateFactory.generateCertificates(certInputStream)
262-
certInputStream.close()
263-
264-
// ideally we would use something like PemReader from BouncyCastle, but
265-
// BC is used by the IDE. This makes using BC very impractical since
266-
// type casting will mismatch due to the different class loaders.
267-
val privateKeyPem=File(expandPath(settings.tlsKeyPath)).readText()
268-
val start:Int= privateKeyPem.indexOf("-----BEGIN PRIVATE KEY-----")
269-
val end:Int= privateKeyPem.indexOf("-----END PRIVATE KEY-----", start)
270-
val pemBytes:ByteArray=Base64.getDecoder().decode(
271-
privateKeyPem.substring(start+"-----BEGIN PRIVATE KEY-----".length, end)
272-
.replace("\\s+".toRegex(),"")
273-
)
274-
275-
var privateKey:PrivateKey
276-
try {
277-
val kf=KeyFactory.getInstance("RSA")
278-
val keySpec=PKCS8EncodedKeySpec(pemBytes)
279-
privateKey= kf.generatePrivate(keySpec)
280-
}catch (e:InvalidKeySpecException) {
281-
val kf=KeyFactory.getInstance("EC")
282-
val keySpec=PKCS8EncodedKeySpec(pemBytes)
283-
privateKey= kf.generatePrivate(keySpec)
284-
}
285-
286-
val keyStore=KeyStore.getInstance(KeyStore.getDefaultType())
287-
keyStore.load(null)
288-
certChain.withIndex().forEach {
289-
keyStore.setCertificateEntry("cert${it.index}", it.valueasX509Certificate)
290-
}
291-
keyStore.setKeyEntry("key", privateKey,null, certChain.toTypedArray())
284+
val keyStore=KeyStore.getInstance(KeyStore.getDefaultType())
285+
keyStore.load(null)
286+
certChain.withIndex().forEach {
287+
keyStore.setCertificateEntry("cert${it.index}", it.valueasX509Certificate)
288+
}
289+
keyStore.setKeyEntry("key", privateKey,null, certChain.toTypedArray())
292290

293-
val keyManagerFactory=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm())
294-
keyManagerFactory.init(keyStore,null)
291+
val keyManagerFactory=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm())
292+
keyManagerFactory.init(keyStore,null)
293+
km= keyManagerFactory.keyManagers
294+
}
295295

296296
val sslContext=SSLContext.getInstance("TLS")
297297

298-
val trustManagers= coderTrustManagers(settings.tlsCAPath)
299-
sslContext.init(keyManagerFactory.keyManagers, trustManagers,null)
298+
val trustManagers= coderTrustManagers(caPath)
299+
sslContext.init(km, trustManagers,null)
300+
return sslContext
301+
}
300302

303+
funcoderSocketFactory(settings:CoderSettingsState) :SSLSocketFactory {
304+
val sslContext=SSLContextFromPEMs(settings.tlsCertPath, settings.tlsKeyPath, settings.tlsCAPath)
301305
if (settings.tlsAlternateHostname.isBlank()) {
302306
return sslContext.socketFactory
303307
}
@@ -393,12 +397,11 @@ class AlternateNameSSLSocketFactory(private val delegate: SSLSocketFactory, priv
393397
}
394398

395399
classCoderHostnameVerifier(privatevalalternateName:String) : HostnameVerifier {
400+
val logger=Logger.getInstance(CoderRestClientService::class.java.simpleName)
396401
overridefunverify(host:String,session:SSLSession):Boolean {
397402
if (alternateName.isEmpty()) {
398-
println("using default hostname verifier, alternateName is empty")
399403
returnOkHostnameVerifier.verify(host, session)
400404
}
401-
println("Looking for alternate hostname:$alternateName")
402405
val certs= session.peerCertificates?:returnfalse
403406
for (certin certs) {
404407
if (cert!isX509Certificate) {
@@ -411,13 +414,12 @@ class CoderHostnameVerifier(private val alternateName: String) : HostnameVerifie
411414
continue
412415
}
413416
val hostname= entry[1]asString
414-
println("Found cert hostname:$hostname")
417+
logger.debug("Found cert hostname:$hostname")
415418
if (hostname.lowercase(Locale.getDefault())== alternateName) {
416419
returntrue
417420
}
418421
}
419422
}
420-
println("No matching hostname found")
421423
returnfalse
422424
}
423425
}

‎src/main/resources/messages/CoderGatewayBundle.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,20 +93,20 @@ gateway.connector.settings.header-command.comment=An external command that \
9393
outputs additional HTTP headers added to all requests. The command must \
9494
output each header as `key=value` on its own line. The following \
9595
environment variables will be available to the process: CODER_URL.
96-
gateway.connector.settings.tls-cert-path.title=CertPath:
96+
gateway.connector.settings.tls-cert-path.title=Certpath:
9797
gateway.connector.settings.tls-cert-path.comment=Optionally set this to \
9898
the path of a certificate to use for TLS connections. The certificate \
9999
should be in X.509 PEM format.
100-
gateway.connector.settings.tls-key-path.title=KeyPath:
100+
gateway.connector.settings.tls-key-path.title=Keypath:
101101
gateway.connector.settings.tls-key-path.comment=Optionally set this to \
102102
the path of the private key that corresponds to the above cert path to use \
103103
for TLS connections. The key should be in X.509 PEM format.
104-
gateway.connector.settings.tls-ca-path.title=CAPath:
104+
gateway.connector.settings.tls-ca-path.title=CApath:
105105
gateway.connector.settings.tls-ca-path.comment=Optionally set this to \
106106
the path of a file containing certificates for an alternate certificate \
107107
authority used to verify TLS certs returned by the Coder service. \
108108
The file should be in X.509 PEM format.
109-
gateway.connector.settings.tls-alt-name.title=AltHostname:
109+
gateway.connector.settings.tls-alt-name.title=Althostname:
110110
gateway.connector.settings.tls-alt-name.comment=Optionally set this to \
111111
an alternate hostname used for verifying TLS connections. This is useful \
112112
when the hostname used to connect to the Coder service does not match the \
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICvjCCAaagAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwFDESMBAGA1UEAwwJVEVT
3+
VC1yb290MCAXDTIzMTAzMDAyMzY0M1oYDzIxMjMxMDA2MDIzNjQzWjAcMRowGAYD
4+
VQQDDBFURVNULWludGVybWVkaWF0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
5+
AQoCggEBAMGD9oILmMRcplGkcNdSZMsBR7C2yoPtL9iRp3V2BKpiRZvQuXHSQsdc
6+
S0Tpk6vnIWQTLkCjVRawL9BoOzwK3FZQti9iXRMnHuzl0gQGZGiHJZ2P/efWaVvn
7+
cmH3Cu2oNCVePhgYAMOiipYGQPcjnQ2kUvMLldZ9+WC+EcaD+FA/kaccPX+kOxQg
8+
qQ0MnPQFfno0F8gylOac+ouKOsXya+jlctgK3dxC73/I+Cdq8xrOJ8lXOYxggleB
9+
ZRXNWWUhrzomn4rUP9wNBrQzFCGcqIS+QjlACjlyn0gPU//ZGVRZ8gZXoI8pDYuB
10+
lRyWpt970/ZPFuiyfiasAAAc8gJ3C7cCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zAN
11+
BgkqhkiG9w0BAQsFAAOCAQEAdHRiLqlYAyGNMPj6wzJt3XmwDbU5yEWor4q+GmA9
12+
fupirWXeSqKiqngDfvHlQNKgDlm10Kuk7LDVUcAP27Xnv/uFmHIUF+4g/eIjxvog
13+
RorUD2I9hi0Wyww7E8th/JfnuDX4YbIQrv1r5P4JaCoc0C2NBd1hO1Er2GdNEoXm
14+
UYoZg6/P5YQkWSLYtLPswb/Hf63DvzG94H6HnFBYlumt/5xYLrfD1Lx8099wZVdR
15+
qWXSi/tYi0HJGGUynZCvjdUu5En7eDoyWclGHz3stOUkBlz0efz01bxpiGsE/rRG
16+
Xr6qJt45N0Zktytk5TphoeDAeFB5ZHRRatZsg9CyZGoaIA==
17+
-----END CERTIFICATE-----
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEpQIBAAKCAQEAwYP2gguYxFymUaRw11JkywFHsLbKg+0v2JGndXYEqmJFm9C5
3+
cdJCx1xLROmTq+chZBMuQKNVFrAv0Gg7PArcVlC2L2JdEyce7OXSBAZkaIclnY/9
4+
59ZpW+dyYfcK7ag0JV4+GBgAw6KKlgZA9yOdDaRS8wuV1n35YL4RxoP4UD+Rpxw9
5+
f6Q7FCCpDQyc9AV+ejQXyDKU5pz6i4o6xfJr6OVy2Ard3ELvf8j4J2rzGs4nyVc5
6+
jGCCV4FlFc1ZZSGvOiafitQ/3A0GtDMUIZyohL5COUAKOXKfSA9T/9kZVFnyBleg
7+
jykNi4GVHJam33vT9k8W6LJ+JqwAABzyAncLtwIDAQABAoIBAQC+gC43rzrgc2S3
8+
km4TSmU3AzeT2x5Z6TDkvd5gX6IQKVXlIgCs8BQVNeJTIK3i2FGits8diqzE/QTU
9+
4QcPAJIP1rzCwM5ngGeNRmEM3U4TKJf7GDkX9ZcahimwDwaPFrre3nu6NEbsUCKl
10+
tdpWcJS3TUDrSkhjMvhAKFxPVLMqKvNK3xg81OmubYDHJ7dmmobJDzklmRlrFCNL
11+
RcQSUYnYruIY4pLmpxVvkFShdxy4oM3f6qanp/nxVvO1of+bqL9fQlgLXSYt83eK
12+
qlUKDdZx/IfckS/DU/8s/PnC5KbrAZB/vNcTIN7USsuAZgP/a8XDLrcH121YZEjW
13+
gIwleYUBAoGBAOtkBKYu+DqlB6xsDJ4XiNji1J19Kmkea+rK5YH21RJlAW3Uh9Y+
14+
tu9J0iQqqQgyIT+v8U0b6uvKjGUoKYbGha7Cl2X93tFL6QGhfewWF/Yqnzr6cBip
15+
IGfHTTWRkZCeNyDII2VEn4B5E+0emCp0p9B8ffr/bUHgFr/wLLD/sDyXAoGBANJ1
16+
XYLK+ilWvL3iV9pcvbuHMP7igXP/wOJsoOpMNixBVhzSm4FZWk4duHdRvMQysk8f
17+
KFiEx+0EJwYyBpbnBCRemhFzergV+6a8tJ4x4rBaVOQBTdLJLPypU5tcLP0iWX+b
18+
oyp7mRT+1ffQ2RcFZBRN6bOvcFrkwdiEl6lglu3hAoGBALnTLpxmrg3V5FXowpk3
19+
aRAXGdPuUMHFg1pKrJ5J1vF7jYI/6rBmuBH1jBCDIQfYU0ksw2ilJnLYZrcg2o+M
20+
P1K0ScL5hKJjs+FWtMrgsi/ie+uac030jiF/Q+OLNIgfbtPRS6gRYX2Rl/p0UZoK
21+
l8RN00KHzJ/ZoPwLRazBXUanAoGBAKzVv9bS1MCwP859HILymMpxyvX3lDJsPb51
22+
UW0462BKw+plt1lxxOzUEZLD6I8Dx1WdE+gmG331ZAr9eFXjII6xtjtQp96YBxO2
23+
c2pbM3x6oq6gt4W8uxpAAK5c84Fq/S8D5OrVmDEa2yNqO25hegAGwD9Ve6LZrKwg
24+
r+Bkt25hAoGAdfY0dHAbZpBSSBixb+XsnDxAne8I4OwTOpExdSH1V1Q85CdTlYLq
25+
FoLuy4rqdrF9kFnasn66diaqUtVaubdG8GyJXTGh1rpOGTjhAjAWCl27fOcO/Ffv
26+
7MqsNI8qhOwIJYaBZ8PXtROp5rf3reqjHu9KqfMj+a2sADiF4bW7KYg=
27+
-----END RSA PRIVATE KEY-----

‎src/test/fixtures/tls/chain-leaf.crt

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
Certificate:
2+
Data:
3+
Version: 3 (0x2)
4+
Serial Number: 4096 (0x1000)
5+
Signature Algorithm: sha256WithRSAEncryption
6+
Issuer: CN=TEST-intermediate
7+
Validity
8+
Not Before: Oct 30 02:36:43 2023 GMT
9+
Not After : Oct 6 02:36:43 2123 GMT
10+
Subject: CN=localhost
11+
Subject Public Key Info:
12+
Public Key Algorithm: rsaEncryption
13+
RSA Public-Key: (2048 bit)
14+
Modulus:
15+
00:ca:ff:7b:41:45:d2:46:14:9c:d7:9d:62:79:04:
16+
05:5c:36:c1:43:7d:da:2b:25:26:d1:64:15:42:fa:
17+
10:cc:fd:cf:48:17:87:2f:16:a3:84:11:bd:8a:57:
18+
73:28:24:af:5e:30:a0:57:bb:b9:9d:90:88:41:d3:
19+
c5:6d:20:25:b3:78:6d:1c:96:69:be:ab:52:64:31:
20+
27:4c:d2:d2:02:e5:2e:c2:b0:2c:2e:6f:38:bc:a7:
21+
29:9f:e1:8d:a0:e1:3c:00:9f:37:23:7c:d2:a2:64:
22+
28:fe:97:c1:34:83:1c:29:59:d9:a8:72:c7:bf:22:
23+
02:d0:b5:99:7e:42:7b:56:19:12:21:a9:a4:d8:f0:
24+
70:ef:a1:da:1d:cc:9c:37:7c:45:28:ea:42:f9:20:
25+
1e:6e:87:04:fc:db:0a:80:99:77:0a:38:de:a5:ba:
26+
b0:75:59:3a:cf:76:27:a1:9d:11:08:db:df:05:d1:
27+
0e:22:62:de:61:df:15:b2:77:39:3a:c8:dc:77:e4:
28+
20:c4:20:d7:1a:c0:4b:01:6b:06:4f:4c:b4:23:e9:
29+
dc:18:72:b1:9d:42:14:81:4e:7d:f3:c7:15:72:d5:
30+
b7:81:e7:f8:59:b4:b2:f3:f8:32:c3:aa:8d:d5:d4:
31+
b0:90:bd:da:43:2c:ce:dd:b8:18:83:a2:63:be:66:
32+
99:df
33+
Exponent: 65537 (0x10001)
34+
X509v3 extensions:
35+
X509v3 Key Usage:
36+
Digital Signature, Key Encipherment
37+
X509v3 Extended Key Usage:
38+
TLS Web Server Authentication, TLS Web Client Authentication
39+
X509v3 Subject Alternative Name:
40+
DNS:localhost
41+
Signature Algorithm: sha256WithRSAEncryption
42+
52:1f:1f:e7:4a:e7:37:be:49:a4:54:ed:f2:c7:da:87:f0:b3:
43+
3a:01:21:16:2f:c7:05:2b:c7:dc:2e:98:b1:7e:40:06:32:ca:
44+
cc:d3:95:16:bd:d0:76:a9:9f:d5:cb:64:e0:38:3f:fc:12:62:
45+
08:4b:b1:b0:b9:ce:e0:b5:75:25:d9:83:44:81:db:9c:4d:2f:
46+
39:3b:1c:da:18:fb:99:5b:59:fc:12:de:88:5c:0f:47:58:b3:
47+
5b:70:2f:63:6c:57:19:5b:11:47:2a:98:ba:fe:dd:39:93:34:
48+
9b:c0:7a:3e:4e:6c:ed:e6:ed:e9:9e:92:ab:35:4d:59:57:f8:
49+
44:4f:c4:33:a3:20:ec:09:21:cf:2f:e8:35:61:9b:bf:11:9c:
50+
13:90:81:d4:1c:ec:41:83:86:e3:03:c6:65:c0:db:c8:60:ed:
51+
b1:72:61:66:8f:a9:5e:0f:2d:3d:5c:b6:8a:1f:4e:86:e6:e6:
52+
3d:08:54:c8:41:79:45:3a:92:73:5b:92:34:ba:99:38:f2:9f:
53+
4d:71:37:a1:b7:8d:1b:02:f1:77:d4:3e:6d:23:81:a3:fc:f4:
54+
8b:f2:a6:14:bc:3e:94:2a:7f:bd:d8:fe:41:42:85:31:dd:ed:
55+
b9:03:ad:73:7d:2d:9d:f7:a1:c8:9c:d7:1d:67:83:23:14:da:
56+
61:3c:82:f7
57+
-----BEGIN CERTIFICATE-----
58+
MIIC8jCCAdqgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwHDEaMBgGA1UEAwwRVEVT
59+
VC1pbnRlcm1lZGlhdGUwIBcNMjMxMDMwMDIzNjQzWhgPMjEyMzEwMDYwMjM2NDNa
60+
MBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
61+
AQoCggEBAMr/e0FF0kYUnNedYnkEBVw2wUN92islJtFkFUL6EMz9z0gXhy8Wo4QR
62+
vYpXcygkr14woFe7uZ2QiEHTxW0gJbN4bRyWab6rUmQxJ0zS0gLlLsKwLC5vOLyn
63+
KZ/hjaDhPACfNyN80qJkKP6XwTSDHClZ2ahyx78iAtC1mX5Ce1YZEiGppNjwcO+h
64+
2h3MnDd8RSjqQvkgHm6HBPzbCoCZdwo43qW6sHVZOs92J6GdEQjb3wXRDiJi3mHf
65+
FbJ3OTrI3HfkIMQg1xrASwFrBk9MtCPp3BhysZ1CFIFOffPHFXLVt4Hn+Fm0svP4
66+
MsOqjdXUsJC92kMszt24GIOiY75mmd8CAwEAAaNEMEIwCwYDVR0PBAQDAgWgMB0G
67+
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAUBgNVHREEDTALgglsb2NhbGhv
68+
c3QwDQYJKoZIhvcNAQELBQADggEBAFIfH+dK5ze+SaRU7fLH2ofwszoBIRYvxwUr
69+
x9wumLF+QAYyyszTlRa90Hapn9XLZOA4P/wSYghLsbC5zuC1dSXZg0SB25xNLzk7
70+
HNoY+5lbWfwS3ohcD0dYs1twL2NsVxlbEUcqmLr+3TmTNJvAej5ObO3m7emekqs1
71+
TVlX+ERPxDOjIOwJIc8v6DVhm78RnBOQgdQc7EGDhuMDxmXA28hg7bFyYWaPqV4P
72+
LT1ctoofTobm5j0IVMhBeUU6knNbkjS6mTjyn01xN6G3jRsC8XfUPm0jgaP89Ivy
73+
phS8PpQqf73Y/kFChTHd7bkDrXN9LZ33ocic1x1ngyMU2mE8gvc=
74+
-----END CERTIFICATE-----

‎src/test/fixtures/tls/chain-leaf.key

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDK/3tBRdJGFJzX
3+
nWJ5BAVcNsFDfdorJSbRZBVC+hDM/c9IF4cvFqOEEb2KV3MoJK9eMKBXu7mdkIhB
4+
08VtICWzeG0clmm+q1JkMSdM0tIC5S7CsCwubzi8pymf4Y2g4TwAnzcjfNKiZCj+
5+
l8E0gxwpWdmocse/IgLQtZl+QntWGRIhqaTY8HDvododzJw3fEUo6kL5IB5uhwT8
6+
2wqAmXcKON6lurB1WTrPdiehnREI298F0Q4iYt5h3xWydzk6yNx35CDEINcawEsB
7+
awZPTLQj6dwYcrGdQhSBTn3zxxVy1beB5/hZtLLz+DLDqo3V1LCQvdpDLM7duBiD
8+
omO+ZpnfAgMBAAECggEBALkDnv+/tkU/Ni/h9sUbIBOKqBxuUPCv3LBNSn+P0M40
9+
qb4oC4KkXIXbcWfsCj3VKaxsH0e3BhaQi0+Lxs2N1i67nJ7IjDpGhUJh9lKzdstC
10+
vJqe3LW5kvmGVY6tkVrGzdw3QJbshkGRjjd0cpf8wycBCDrZ2inewrgcO3hy+Vxe
11+
vhkvUKyB2rjI9xpBGm5YxJiBJGOFZbInp8+Lnx2wuBy+9Dl3/6KzPNc7UKNobwbV
12+
E+kPZoe/zVtsf60mhKQmvyac9eVNXB+U+t/2dnOExG59ROLfR1lsJH5kGdGd/CvR
13+
pLZJwnLX0cTmczz/bcL2iQ/tSClKq2iWEBUUbflIRUECgYEA+P/qOvBQNGXCSMRa
14+
SKEPMUBFbqFMDEsxu0VDZFbRVNmxs5/S5Ta/+aPRzGLtu9oe+Pdhl1xyC1LzSMwm
15+
jJSRrXpnFlLlbahZ8rGV+s52yL/sVy9yR5FDt2B/Y2fVjr0OAJU9aGDjwq92pJ4+
16+
xDhSuIr1SM/DR6YzdBdfiBWkCv8CgYEA0LR8Z5CpBGu4HMfy1wvo6g5TkuqPjkoA
17+
zyCRpEfGa4goJ4ufvldNkni9dZquWFpdCZX0Ips+S6usbc0/BZHj5z40bEQ1Mg+I
18+
WfqzRlKiBIaz9GcJLHORguW4pikT3H9DtzdZmmww4krkHxJDu5TkTLoOBCbDpPj/
19+
eiETduu50SECgYBybQCR5z+kZKL816b5u3IE2xlNNriA6clH2xOWN8No78WW2zqK
20+
dTeRnDPcbhX7/se+98gUS7po88yzRoXskpXDl/1pp9yhIP185xkaMekqZfBRPI+S
21+
zfHFgoXoA56DQuP9ZpfasLPaEtI94i7L82ooPktsE3YVJg59KgSPwAortwKBgQDN
22+
3UpdSdc+Uhbg5OYH82qC/TC42YBTJXIY3ZJrzpTNWxfoshQXR7xvv4N6ruJMqo3d
23+
N7oCLMnNEIDcKjmBAAAjCDvjk4A5ahLgVqdhtX61Ij391Wi6HSEqUfjKhfheZnZg
24+
EkvjQ9cQUDkm4PhI3rw3ZssOk0Imx6oRSPEPO8QloQKBgBeYMhqy3ueJ0bi5o5R0
25+
QcqOYt49wn6bB8fjncBD2eA6ZrLRnBEnyAWoX3d+tIdgZ+0d9fLMQwUYVW2Ql7hh
26+
fPJDcdEx6f2oJYQCSHu9oUXrCFSKdu2CeOGAw6vRknIv71GSDzcNPtiXCWNX4BF+
27+
d13YhhLzFTqfJtaSb1bFSbcu
28+
-----END PRIVATE KEY-----

‎src/test/fixtures/tls/chain-root.crt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICvTCCAaWgAwIBAgIJALEhrLJNS0biMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
3+
BAMMCVRFU1Qtcm9vdDAgFw0yMzEwMzAwMjM2NDNaGA8yMTIzMTAwNjAyMzY0M1ow
4+
FDESMBAGA1UEAwwJVEVTVC1yb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
5+
CgKCAQEAqLTlMD7rNiC/Hyqz/sh1JBydgNv8CVa/cgCVYQQcGtRl7bs5CfdWti7J
6+
5l7ZEGn+cb+ZyVVyDeF+Tap7zGamQuEkM3C8tettcr7INfKLjNFN94GKtB5LemfK
7+
FFgVA5KWECoovYZPRprgnZuV2QEPdolqwzc3XvaVnmYkxyIhzWD1OFq/vZTFv6eq
8+
fr9JjzWYyv9rCOUmHj/EmVxVVoMYS6Ti3XwOb94Y2CdpuSn3GT4ELN7Tz1B9I0xc
9+
DGKrsjdUIVO5+Bd/5pzQyFMD1UAqsvB9MpHwQswTr/KbrtVC0AQ7fW2q3zOiEg1d
10+
jbNukucc0OwUOIM+UBTtLDBgRzWh5wIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0G
11+
CSqGSIb3DQEBCwUAA4IBAQAQ+7CNlnwdXEx8Q+JAQYw+DOHQEW8BNhi+iurDzgG3
12+
RBdHUO7WZi83ijbWuQkUvsfUsRqTkzg3N9fgY28SAhyhn0UmpGKUN6Eqf2d3nYWl
13+
c5X/vGJrajKZUJdBfCegqCgP2zWJycuG6qAs6dnQOj3GfOlUOakGI3czBlIfOXQv
14+
cU23PbQw0zlXFW6FZIqsuGG4aPeaWhuAJNo2XEDEe8Mdvk9w7pO2hqfBcDe03WyJ
15+
ucxx6vsMUGXBqHiOm8Q5TRjv/Zrd/Bhg8aGQlGDsru/dsjIlcxhrjiZzRQv3KjAj
16+
+lNZcvU6Dsb/4QPJthVfb3ZT6r7QLcOk4TIAVyTVFdYR
17+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp