Skip to content

Commit

Permalink
added tls examples
Browse files Browse the repository at this point in the history
  • Loading branch information
banalna committed Aug 4, 2023
1 parent 93742f6 commit 1ffe0a1
Show file tree
Hide file tree
Showing 41 changed files with 746 additions and 54 deletions.
18 changes: 3 additions & 15 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,11 @@
# <img src="https://uploads-ssl.webflow.com/5ea5d3315186cf5ec60c3ee4/5edf1c94ce4c859f2b188094_logo.svg" alt="Pip.Services Logo" width="200"> <br/> Remote Procedure Calls for Pip.Services in Go Changelog

## <a name="1.6.3"></a> 1.6.3 (2023-08-4)
## <a name="1.6.0-1.6.4"></a> 1.6.0-1.6.4 (2023-08-5)

### Features
- Added IHttpEndpoint interface for custom endpoint implementation

## <a name="1.6.2"></a> 1.6.2 (2023-08-04)

### Bug fixing
- Fixed configuring custom SSL

## <a name="1.6.1"></a> 1.6.1 (2023-08-04)

### Features
- Added inheritance constructor for TLS in RestClient

## <a name="1.6.0"></a> 1.6.0 (2023-08-03)
### Features
- Added supports custom CA certificates for server and client
- Added inheritance constructor for TLS in RestClient
- Added IHttpEndpoint interface for custom endpoint implementation

## <a name="1.5.2"></a> 1.5.2 (2023-01-12)
### Bug fixing
Expand Down
18 changes: 12 additions & 6 deletions clients/RestClient.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Configuration parameters:
- enable_extend_tls - enable extended tls options for custom root certificates
- certificate_server_name - certificates server (default: letsencrypt.org)
- certificate_server_name - certificates server (default: localhost)
References:
Expand Down Expand Up @@ -114,7 +114,7 @@ type RestClient struct {
//The HTTP client.
Client *http.Client
//The connection resolver.
ConnectionResolver rpccon.HttpConnectionResolver
ConnectionResolver *rpccon.HttpConnectionResolver
//The logger.
Logger *clog.CompositeLogger
//The performance counters.
Expand Down Expand Up @@ -162,10 +162,10 @@ func NewRestClient() *RestClient {
"options.debug", true,
"options.correlation_id", "query",

"options.certificate_server_name", "letsencrypt.org",
"options.certificate_server_name", "localhost",
"options.enable_extend_tls", false,
)
rc.ConnectionResolver = *rpccon.NewHttpConnectionResolver()
rc.ConnectionResolver = rpccon.NewHttpConnectionResolver()
rc.Logger = clog.NewCompositeLogger()
rc.Counters = ccount.NewCompositeCounters()
rc.Tracer = ctrace.NewCompositeTracer(nil)
Expand All @@ -174,6 +174,8 @@ func NewRestClient() *RestClient {
rc.Headers = *cdata.NewEmptyStringValueMap()
rc.ConnectTimeout = 10000
rc.passCorrelationId = "query"

rc.ITlsConfigurator = &rc
return &rc
}

Expand Down Expand Up @@ -270,7 +272,7 @@ func (c *RestClient) Open(correlationId string) error {
c.Client = &localClient

if connection.Protocol() == "https" {
certificates, err := c.GetCertificates()
certificates, err := c.ITlsConfigurator.GetCertificates()
if err != nil {
return err
}
Expand All @@ -285,7 +287,7 @@ func (c *RestClient) Open(correlationId string) error {
},
}

caCertPool, err := c.GetCaCert()
caCertPool, err := c.ITlsConfigurator.GetCaCert()
if err != nil {
return err
}
Expand Down Expand Up @@ -561,3 +563,7 @@ func (c *RestClient) GetCaCert() (*x509.CertPool, error) {
return nil, nil
}
}

func (c *RestClient) GetClientAuthType() tls.ClientAuthType {
return tls.NoClientCert
}
2 changes: 1 addition & 1 deletion component.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "pip-services3-rpc-go",
"type": "module",
"language": "go",
"version": "1.6.3",
"version": "1.6.4",
"build": 0,
"registry": "pipservices",
"artifacts": [
Expand Down
8 changes: 4 additions & 4 deletions example/bin/main.go → example/basic_tls/bin/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import (

cconf "github.com/pip-services3-go/pip-services3-commons-go/config"
cref "github.com/pip-services3-go/pip-services3-commons-go/refer"
eclients "github.com/pip-services3-go/pip-services3-rpc-go/example/clients"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/data"
elogic "github.com/pip-services3-go/pip-services3-rpc-go/example/logic"
eservices "github.com/pip-services3-go/pip-services3-rpc-go/example/services"
eclients "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/clients"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/data"
elogic "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/logic"
eservices "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/services"
)

func main() {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (

cdata "github.com/pip-services3-go/pip-services3-commons-go/data"
"github.com/pip-services3-go/pip-services3-rpc-go/clients"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/data"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/data"
)

var (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package example_clients

import (
cdata "github.com/pip-services3-go/pip-services3-commons-go/data"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/data"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/data"
)

type IDummyClient interface {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
cdata "github.com/pip-services3-go/pip-services3-commons-go/data"
crun "github.com/pip-services3-go/pip-services3-commons-go/run"
cvalid "github.com/pip-services3-go/pip-services3-commons-go/validate"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/data"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/data"
)

type DummyCommandSet struct {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package example_logic
import (
cdata "github.com/pip-services3-go/pip-services3-commons-go/data"
cerr "github.com/pip-services3-go/pip-services3-commons-go/errors"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/data"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/data"
)

type DummyController struct {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package example_logic

import (
cdata "github.com/pip-services3-go/pip-services3-commons-go/data"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/data"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/data"
)

type IDummyController interface {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import (
cerr "github.com/pip-services3-go/pip-services3-commons-go/errors"
crefer "github.com/pip-services3-go/pip-services3-commons-go/refer"
cvalid "github.com/pip-services3-go/pip-services3-commons-go/validate"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/data"
elogic "github.com/pip-services3-go/pip-services3-rpc-go/example/logic"
edata "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/data"
elogic "github.com/pip-services3-go/pip-services3-rpc-go/example/basic_tls/logic"
"github.com/pip-services3-go/pip-services3-rpc-go/services"
)

Expand Down
113 changes: 113 additions & 0 deletions example/custom_endpoint/bin/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package main

import (
"fmt"

eendpoint "github.com/pip-services3-go/pip-services3-rpc-go/example/custom_endpoint/endpoint"
elogic "github.com/pip-services3-go/pip-services3-rpc-go/example/custom_endpoint/logic"
eservices "github.com/pip-services3-go/pip-services3-rpc-go/example/custom_endpoint/services"

eclients "github.com/pip-services3-go/pip-services3-rpc-go/example/custom_endpoint/clients"

cconf "github.com/pip-services3-go/pip-services3-commons-go/config"
cref "github.com/pip-services3-go/pip-services3-commons-go/refer"
)

func main() {
service := BuildRestService()
client := BuildRestClient()

err := service.Open("")
if err != nil {
panic(err)
}
defer service.Close("")
defer service.Endpoint.Close("")

err = client.Open("")
if err != nil {
panic(err)
}
defer client.Close("")

res, err := client.SayHello("example", "Jhon")
if err != nil {
panic(err)
}

fmt.Printf("Response from Server: %s", res)
}

const (
Port = 3000
Protocol = "https"
Host = "localhost"
)

func BuildRestService() *eservices.MyRestService {
// Create custom endpoint
endpointConfig := cconf.NewConfigParamsFromTuples(
"root_path", "",
"cors_headers", "x-session-id",

"connection.protocol", Protocol,
"connection.host", Host,
"connection.port", Port,

"endpoint_config.ssl_key_file", "../certs/server.key",
"endpoint_config.ssl_crt_file", "../certs/server.crt",
"endpoint_config.ssl_ca_file", "../certs/ca.crt",

"endpoint_config.client_auth_type", "require_and_verify_client_cert",
)

eendpoint := eendpoint.NewMyHttpEndpoint()
eendpoint.Configure(endpointConfig)

// Create Service
serviceConfig := cconf.NewConfigParamsFromTuples(
"connection.protocol", Protocol,
"connection.host", Host,
"connection.port", Port,
"openapi_content", "swagger yaml or json content",
"swagger.enable", "true",
)

ctrl := elogic.NewMyController()

service := eservices.NewMyRestService()
service.Configure(serviceConfig)

var references *cref.References = cref.NewReferencesFromTuples(
cref.NewDescriptor("pip-services-dummies", "controller", "default", "default", "1.0"), ctrl,
cref.NewDescriptor("pip-services-dummies", "service", "rest", "default", "1.0"), service,
cref.NewDescriptor("pip-services-dummies", "endpoint", "http", "custom", "1.0"), eendpoint,
)

eendpoint.SetReferences(references)
service.SetReferences(references)

eendpoint.Open("")
return service
}

func BuildRestClient() *eclients.MyRestClient {
clientConfig := cconf.NewConfigParamsFromTuples(
"connection.protocol", Protocol,
"connection.host", Host,
"connection.port", Port,

"rest_client_config.correlation_id_place", "headers",

"rest_client_config.ssl_key_file", "../certs/client.key",
"rest_client_config.ssl_crt_file", "../certs/client.crt",
"rest_client_config.ssl_ca_file", "../certs/ca.crt",
)

client := eclients.NewMyRestClient()

client.Configure(clientConfig)
client.SetReferences(cref.NewEmptyReferences())

return client
}
16 changes: 16 additions & 0 deletions example/custom_endpoint/certs/ca.crl
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-----BEGIN X509 CRL-----
MIICfDBmAgEBMA0GCSqGSIb3DQEBCwUAMA0xCzAJBgNVBAMTAmNhFw0yMzA3Mjgx
NjMyMDBaFw0yNTAxMjgxNjMyMDBaMACgIzAhMB8GA1UdIwQYMBaAFIkcup4xuoZh
Ly5cRUbPs7l1ZbCzMA0GCSqGSIb3DQEBCwUAA4ICAQDDokwX3MOnEiodk/M5zNj/
QoRDxstEYfbbe8wLwpUQfzpdGjHhVD/Ba1B7v2D/gen0q6PdOrjLFYHRN3GonXrR
L4WIcc+M+Z0Tx3VD27eM/ot6PmLr2/837brkRIdpIXmARQyu+utSWpFFXCBgp206
jst+AEe8XHO/vJlnS06EwZnrhJa/2Nqigc1xfaI/IAPpnn/G2tvOkVth8BasbhIu
5GWIxyABenJIFNQQ7tzL3dUJOveyU1YlV+3wqVy7RBV/wu/z0pdH2GLvEz0mwD1A
1fhCweIH7iG7ljfAAU61V0uY4JMvhmjlfJT11fctY8lwjQdMV0QxaPlivetiwfqm
YqCjFTO87SPA8uZUnwnZt4mEGBZ99PKYI4Yymx6bf+MPi437n95d0+pMm5oBuWvy
6WwCv4BL52ul6KJsQ0TF6T2KPp2E5lVIcWDtg6VPscZlwEJyBwtQhyCW3pC4QrZt
vpJ/VMY8eI7ncTePL4mMJuz/BgvJrqcw/PC0M2i6UgsemQn7vEsYYy43Uw2CNlwu
IIz1m8shURtXhSAQYVRQFrbm1apq9hB0ktzCT5DlZ0UwoMNkxOL+7xAtfvl/WL02
52QJZ0bDjacXLuDdf8jAo6KmaFni5kO8PZzFedTjmmLExIdQKWlZkGHbYlv3OmDs
7Xyo1w7rAsQpMVHgQjikVg==
-----END X509 CRL-----
28 changes: 28 additions & 0 deletions example/custom_endpoint/certs/ca.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN CERTIFICATE-----
MIIE2jCCAsKgAwIBAgIBATANBgkqhkiG9w0BAQsFADANMQswCQYDVQQDEwJjYTAe
Fw0yMzA3MjgxNjIyMDBaFw0yNTAxMjgxNjMyMDBaMA0xCzAJBgNVBAMTAmNhMIIC
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxRCOmfm2Z+q80Q5qEC4asTM9
MWc5TonSMYWG7LaRkhCqojwWtsbMbJukEgG532i/mERFQ4/f2s/1p+da/8atJu4s
Zp+LK03ieBiALbjANc3xAiehzeHaPxxLUtSposGEvqqx8hVV++E+HtNLscqlK6ne
6wVUVW4mFWVbI8ZOoltuyB9lxDeKLy9ISPGKV3Cw6fNMsBXHPPTsTxZFyy9YA0U4
w1oyf6NDPX6vVEXzzxyZVohhQgoMNpOhAtkj+EWaL3RNQfYn70zz5smaXHC24CGP
jBbgsNkgM7n/pHRGtKg+QbqxlmxtzlT6lpiu0tkLsW/jocMdbiDV1Kb+bD5xiaqX
rMOggZs/LEte6hy+0X87KKs7ikBJ51rI/Km4DGlZli9bPKdNj8lrjwq5Y4+8JP92
F8ixQA7yIW2lyGzaOGABtgzFpIjnqvlaU/2vcIpqWiWDi0+EjqTacfOI0o1t6bsK
U0y5Mk095g9dx6A94RcJUz034wGOR2xln3QTcIColm1yiJlrwgKGnJCSaG+N4Zzo
lxZpsZlUR1meGUyYI6O5MIZvkBdQJ8TI15T4bBij90qECtstQnb5Zoc6uS+hpIqi
VCbgBQHO9yXpELvwT72mltMGxOsjHuNTaz6Ifmxwp9R323ZA+wZaUx/iGvpzsIg6
PsezsRR2LRde3zuNbHsCAwEAAaNFMEMwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB
/wQIMAYBAf8CAQAwHQYDVR0OBBYEFIkcup4xuoZhLy5cRUbPs7l1ZbCzMA0GCSqG
SIb3DQEBCwUAA4ICAQBYNFXkk+K5I3RDylmpcMbX2+Y3y/a7vSXDP3tGkb79C/Bf
W2q07C9kf6xjvFiHKXuSDZ+EuoCtIpBLhpeYW2UrMBT0veBbP3QMnjdNCVvPUde8
totlUSZGVNMloA35Cl+nS4VyfEA/cnTy6gTbqYeHdOiZsYiThF4v8LlUNOXD2Y+U
Ynsnl6B6JSXQ+d9UFKgK/lhBcMtKX+SIpAYVgsw6uMkM0lbd27jAAikVK0B82+pW
mPOICkab5itYp3CNG/LwSAO9Uo6dv7HFs2O/30MaLDNUFleXSdkCQ2XekAmf9K5p
ShmdmGXjcxlMpycZPS655rhkLargqEHPB6CibvCwPnu+hefQQj1RlL/8UT/6uAFN
zc/DA0Anok8s5HHVEmDkZxLYdIb/VKhHxQlT+hmGhK3MTbUqHF5E+LEPxFk3PeTR
CrJcdEREMoMBIVIBmp8t1IB+H2hB10y93nugnp9u7clyVOsFGglo+DJugc9+vjcG
Y9+eJLYrmHonjfTEyJW4urRtxdKeEsm9P9ns4NMochjSDR9ZYo6HfPOhM+Ty3eUt
U2l0qq6lI/FcoQjFHXzC9au6u6tK0a8EBQppdEDXNShPn2Udwm+p7rooo8fzaDEy
WiVG3/nisrSQf50SmIIRVOq9nkaDBjdz2Q2HnAHV3880vkivGOaiBzqLv91scA==
-----END CERTIFICATE-----
51 changes: 51 additions & 0 deletions example/custom_endpoint/certs/ca.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
Loading

0 comments on commit 1ffe0a1

Please sign in to comment.