Introduce TLS Settings for go-micro based http services

TLS for the services can be configure by setting the "OCIS_HTTP_TLS_ENABLED",
"OCIS_HTTP_TLS_CERTIFICATE" and "OCIS_HTTP_TLS_KEY" environment variables.
Currently the ocis proxy is this only service that directly accesses backend
services. It determines whether to use TLS or not by looking a the new registry
metadata "use_tls". As specific CA Cert for certificate verification
can be set with the "PROXY_HTTPS_CACERT" environment variable.
This commit is contained in:
Ralf Haferkamp
2022-11-03 11:58:53 +01:00
committed by Ralf Haferkamp
parent cbe41fb85f
commit b24d126b30
31 changed files with 243 additions and 72 deletions
+9 -1
View File
@@ -3,6 +3,7 @@ package http
import (
"crypto/tls"
"crypto/x509"
"fmt"
"os"
"github.com/cs3org/reva/v2/pkg/events/server"
@@ -24,7 +25,8 @@ import (
func Server(opts ...Option) (http.Service, error) {
options := newOptions(opts...)
service := http.NewService(
service, err := http.NewService(
http.TLSConfig(options.Config.HTTP.TLS),
http.Logger(options.Logger),
http.Namespace(options.Config.HTTP.Namespace),
http.Name("graph"),
@@ -33,6 +35,12 @@ func Server(opts ...Option) (http.Service, error) {
http.Context(options.Context),
http.Flags(options.Flags...),
)
if err != nil {
options.Logger.Error().
Err(err).
Msg("Error initializing http service")
return http.Service{}, fmt.Errorf("could not initialize http service: %w", err)
}
var publisher events.Stream