Skip to content

Commit 1d645e4

Browse files
Fix Java Proxy Feature Tests with tlsServerName set (#717)
* fix proxy not using tlsServerName to verify * fixes for go features tests when overriding tls server name and ca cert
1 parent eb21066 commit 1d645e4

File tree

3 files changed

+39
-25
lines changed

3 files changed

+39
-25
lines changed

cmd/run.go

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package cmd
33
import (
44
"bufio"
55
"context"
6-
"crypto/tls"
76
"encoding/json"
87
"errors"
98
"fmt"
@@ -301,15 +300,16 @@ func (r *Runner) Run(ctx context.Context, patterns []string) error {
301300
err = r.RunGoExternal(ctx, run)
302301
}
303302
} else {
304-
err = cmd.NewRunner(cmd.RunConfig{
305-
Server: r.config.Server,
306-
Namespace: r.config.Namespace,
307-
ClientCertPath: r.config.ClientCertPath,
308-
ClientKeyPath: r.config.ClientKeyPath,
309-
TLSServerName: r.config.TLSServerName,
310-
SummaryURI: r.config.SummaryURI,
311-
HTTPProxyURL: r.config.HTTPProxyURL,
312-
}).Run(ctx, run)
303+
err = cmd.NewRunner(cmd.RunConfig{
304+
Server: r.config.Server,
305+
Namespace: r.config.Namespace,
306+
ClientCertPath: r.config.ClientCertPath,
307+
ClientKeyPath: r.config.ClientKeyPath,
308+
CACertPath: r.config.CACertPath,
309+
TLSServerName: r.config.TLSServerName,
310+
SummaryURI: r.config.SummaryURI,
311+
HTTPProxyURL: r.config.HTTPProxyURL,
312+
}).Run(ctx, run)
313313
}
314314
case "java":
315315
if r.config.DirName != "" {
@@ -428,14 +428,16 @@ func (r *Runner) handleHistory(ctx context.Context, run *cmd.Run, summary Summar
428428
Namespace: r.config.Namespace,
429429
Logger: r.log,
430430
}
431-
if r.config.ClientCertPath != "" {
432-
cert, err := tls.LoadX509KeyPair(r.config.ClientCertPath, r.config.ClientKeyPath)
433-
if err != nil {
434-
return fmt.Errorf("failed to load certs: %s", err)
435-
}
436-
opts.ConnectionOptions.TLS = &tls.Config{Certificates: []tls.Certificate{cert}}
431+
tlsCfg, err := harness.LoadTLSConfig(
432+
r.config.ClientCertPath,
433+
r.config.ClientKeyPath,
434+
r.config.CACertPath,
435+
r.config.TLSServerName,
436+
)
437+
if err != nil {
438+
return fmt.Errorf("failed to load TLS config: %w", err)
437439
}
438-
var err error
440+
opts.ConnectionOptions.TLS = tlsCfg
439441
if cl, err = client.Dial(opts); err != nil {
440442
return fmt.Errorf("failed creating client: %w", err)
441443
}

features/client/http_proxy/feature.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,25 @@ public static Run execute(Runner runner, boolean useAuth) throws Exception {
4040
var proxyAddr = proxyAddrBuilder.build();
4141

4242
// Build a client that uses the HTTP proxy
43-
var service =
44-
WorkflowServiceStubs.newServiceStubs(
45-
WorkflowServiceStubsOptions.newBuilder()
46-
.setTarget(runner.config.serverHostPort)
47-
.setSslContext(runner.config.sslContext)
48-
.setMetricsScope(runner.config.metricsScope)
49-
.setChannelInitializer(builder -> builder.proxyDetector(addr -> proxyAddr))
50-
.build());
43+
var serviceBuilder =
44+
WorkflowServiceStubsOptions.newBuilder()
45+
.setTarget(runner.config.serverHostPort)
46+
.setSslContext(runner.config.sslContext)
47+
.setMetricsScope(runner.config.metricsScope);
48+
49+
var tlsServerName = runner.config.tlsServerName;
50+
serviceBuilder.setChannelInitializer(
51+
builder -> {
52+
builder.proxyDetector(addr -> proxyAddr);
53+
// Override authority for TLS verification if server name is specified
54+
if (runner.config.sslContext != null
55+
&& tlsServerName != null
56+
&& !tlsServerName.isEmpty()) {
57+
builder.overrideAuthority(tlsServerName);
58+
}
59+
});
60+
61+
var service = WorkflowServiceStubs.newServiceStubs(serviceBuilder.build());
5162
var client =
5263
WorkflowClient.newInstance(
5364
service,

harness/go/cmd/run.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ func (r *Runner) Run(ctx context.Context, run *Run) error {
235235
Namespace: r.config.Namespace,
236236
ClientCertPath: r.config.ClientCertPath,
237237
ClientKeyPath: r.config.ClientKeyPath,
238+
CACertPath: r.config.CACertPath,
238239
TaskQueue: runFeature.TaskQueue,
239240
Log: r.log,
240241
HTTPProxyURL: r.config.HTTPProxyURL,

0 commit comments

Comments
 (0)