Skip to content

Commit 33d16ae

Browse files
authored
Merge pull request #186 from ftokarev/netty-grpc-server-mtls
NettyGrpcServer -- support mutual TLS
2 parents 8b55c80 + 66e25ea commit 33d16ae

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeServerProperties.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public final class ChaincodeServerProperties {
2020
private String keyPassword;
2121
private String keyCertChainFile;
2222
private String keyFile;
23+
private String trustCertCollectionFile;
2324
private boolean tlsEnabled = false;
2425

2526
public ChaincodeServerProperties() {
@@ -133,6 +134,14 @@ public void setKeyFile(String keyFile) {
133134
this.keyFile = keyFile;
134135
}
135136

137+
public String getTrustCertCollectionFile() {
138+
return trustCertCollectionFile;
139+
}
140+
141+
public void setTrustCertCollectionFile(String trustCertCollectionFile) {
142+
this.trustCertCollectionFile = trustCertCollectionFile;
143+
}
144+
136145
public boolean isTlsEnabled() {
137146
return tlsEnabled;
138147
}

fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/NettyGrpcServer.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder;
1212
import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig;
1313
import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolNames;
14+
import io.grpc.netty.shaded.io.netty.handler.ssl.ClientAuth;
1415
import io.grpc.netty.shaded.io.netty.handler.ssl.SslContextBuilder;
1516
import org.apache.commons.logging.Log;
1617
import org.apache.commons.logging.LogFactory;
@@ -73,6 +74,12 @@ public NettyGrpcServer(final ChaincodeBase chaincodeBase, final ChaincodeServerP
7374
ApplicationProtocolNames.HTTP_2);
7475
sslContextBuilder.applicationProtocolConfig(apn);
7576

77+
if (chaincodeServerProperties.getTrustCertCollectionFile() != null) {
78+
final File trustCertCollectionFile = Paths.get(chaincodeServerProperties.getTrustCertCollectionFile()).toFile();
79+
sslContextBuilder.clientAuth(ClientAuth.REQUIRE);
80+
sslContextBuilder.trustManager(trustCertCollectionFile);
81+
}
82+
7683
serverBuilder.sslContext(sslContextBuilder.build());
7784
}
7885

0 commit comments

Comments
 (0)