Compare commits

...

2 Commits

3 changed files with 40 additions and 4 deletions

View File

@ -103,6 +103,7 @@ type HTTP2HTTPSPluginOptions struct {
LocalAddr string `json:"localAddr,omitempty"` LocalAddr string `json:"localAddr,omitempty"`
HostHeaderRewrite string `json:"hostHeaderRewrite,omitempty"` HostHeaderRewrite string `json:"hostHeaderRewrite,omitempty"`
RequestHeaders HeaderOperations `json:"requestHeaders,omitempty"` RequestHeaders HeaderOperations `json:"requestHeaders,omitempty"`
RootCA string `json:"rootCA,omitempty"`
} }
func (o *HTTP2HTTPSPluginOptions) Complete() {} func (o *HTTP2HTTPSPluginOptions) Complete() {}
@ -137,6 +138,7 @@ type HTTPS2HTTPSPluginOptions struct {
EnableHTTP2 *bool `json:"enableHTTP2,omitempty"` EnableHTTP2 *bool `json:"enableHTTP2,omitempty"`
CrtPath string `json:"crtPath,omitempty"` CrtPath string `json:"crtPath,omitempty"`
KeyPath string `json:"keyPath,omitempty"` KeyPath string `json:"keyPath,omitempty"`
RootCA string `json:"rootCA,omitempty"`
} }
func (o *HTTPS2HTTPSPluginOptions) Complete() { func (o *HTTPS2HTTPSPluginOptions) Complete() {

View File

@ -19,11 +19,13 @@ package plugin
import ( import (
"context" "context"
"crypto/tls" "crypto/tls"
"crypto/x509"
"io" "io"
stdlog "log" stdlog "log"
"net" "net"
"net/http" "net/http"
"net/http/httputil" "net/http/httputil"
"os"
"github.com/fatedier/golib/pool" "github.com/fatedier/golib/pool"
@ -53,8 +55,23 @@ func NewHTTP2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) {
l: listener, l: listener,
} }
tr := &http.Transport{ tr := &http.Transport{}
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
if opts.RootCA != "" {
caCert, err := os.ReadFile(opts.RootCA)
if err != nil {
return nil, err
}
caCertPool, err := x509.SystemCertPool()
if err != nil {
return nil, err
}
caCertPool.AppendCertsFromPEM(caCert)
tr.TLSClientConfig = &tls.Config{
RootCAs: caCertPool,
}
} else {
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
} }
rp := &httputil.ReverseProxy{ rp := &httputil.ReverseProxy{

View File

@ -19,12 +19,14 @@ package plugin
import ( import (
"context" "context"
"crypto/tls" "crypto/tls"
"crypto/x509"
"fmt" "fmt"
"io" "io"
stdlog "log" stdlog "log"
"net" "net"
"net/http" "net/http"
"net/http/httputil" "net/http/httputil"
"os"
"time" "time"
"github.com/fatedier/golib/pool" "github.com/fatedier/golib/pool"
@ -58,8 +60,23 @@ func NewHTTPS2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) {
l: listener, l: listener,
} }
tr := &http.Transport{ tr := &http.Transport{}
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
if opts.RootCA != "" {
caCert, err := os.ReadFile(opts.RootCA)
if err != nil {
return nil, err
}
caCertPool, err := x509.SystemCertPool()
if err != nil {
return nil, err
}
caCertPool.AppendCertsFromPEM(caCert)
tr.TLSClientConfig = &tls.Config{
RootCAs: caCertPool,
}
} else {
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
} }
rp := &httputil.ReverseProxy{ rp := &httputil.ReverseProxy{