Skip to content

Commit 1be5e45

Browse files
authored
Merge pull request #187 from ftokarev/netty-grpc-server-mtls-release-2.2
NettyGrpcServer -- support mutual TLS (release-2.2 port)
2 parents 1663b4f + 4ae6752 commit 1be5e45

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

fabric-chaincode-shim/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ jacocoTestCoverageVerification {
115115
'org.hyperledger.fabric.contract.ContractRouter',
116116
'org.hyperledger.fabric.contract.routing.impl.ContractDefinitionImpl',
117117
'org.hyperledger.fabric.contract.routing.RoutingRegistry',
118+
'org.hyperledger.fabric.contract.routing.impl.RoutingRegistryImpl',
119+
'org.hyperledger.fabric.contract.routing.impl.SerializerRegistryImpl',
118120
'org.hyperledger.fabric.contract.execution.impl.ContractInvocationRequest',
119121
'org.hyperledger.fabric.contract.routing.TransactionType',
120122
'org.hyperledger.fabric.contract.metadata.MetadataBuilder',
@@ -139,6 +141,8 @@ jacocoTestCoverageVerification {
139141
'org.hyperledger.fabric.contract.execution.impl.ContractInvocationRequest',
140142
'org.hyperledger.fabric.contract.routing.impl.ContractDefinitionImpl',
141143
'org.hyperledger.fabric.contract.routing.RoutingRegistry',
144+
'org.hyperledger.fabric.contract.routing.impl.RoutingRegistryImpl',
145+
'org.hyperledger.fabric.contract.routing.impl.SerializerRegistryImpl',
142146
'org.hyperledger.fabric.shim.impl.Handler',
143147
'org.hyperledger.fabric.shim.ChaincodeBase',
144148
'org.hyperledger.fabric.contract.metadata.MetadataBuilder',

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
@@ -12,6 +12,7 @@
1212
import io.grpc.netty.shaded.io.netty.handler.ssl.SslContextBuilder;
1313
import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolConfig;
1414
import io.grpc.netty.shaded.io.netty.handler.ssl.ApplicationProtocolNames;
15+
import io.grpc.netty.shaded.io.netty.handler.ssl.ClientAuth;
1516
import org.apache.commons.logging.Log;
1617
import org.apache.commons.logging.LogFactory;
1718

@@ -72,6 +73,12 @@ public NettyGrpcServer(final ChaincodeBase chaincodeBase, final ChaincodeServerP
7273
ApplicationProtocolNames.HTTP_2);
7374
sslContextBuilder.applicationProtocolConfig(apn);
7475

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

0 commit comments

Comments
 (0)