TCP源站也支持证书

This commit is contained in:
GoEdgeLab
2022-01-16 19:58:07 +08:00
parent 90d8c08b89
commit 6a6714fea0
2 changed files with 32 additions and 8 deletions

View File

@@ -86,11 +86,11 @@ func (this *HTTPClientPool) Client(req *HTTPRequest, origin *serverconfigs.Origi
} }
// TLS通讯 // TLS通讯
tlsConfig := &tls.Config{ var tlsConfig = &tls.Config{
InsecureSkipVerify: true, InsecureSkipVerify: true,
} }
if origin.Cert != nil { if origin.Cert != nil {
obj := origin.Cert.CertObject() var obj = origin.Cert.CertObject()
if obj != nil { if obj != nil {
tlsConfig.InsecureSkipVerify = false tlsConfig.InsecureSkipVerify = false
tlsConfig.Certificates = []tls.Certificate{*obj} tlsConfig.Certificates = []tls.Certificate{*obj}

View File

@@ -44,10 +44,22 @@ func OriginConnect(origin *serverconfigs.OriginConfig, remoteAddr string) (net.C
// TODO 支持TCP4/TCP6 // TODO 支持TCP4/TCP6
// TODO 支持指定特定网卡 // TODO 支持指定特定网卡
// TODO Addr支持端口范围如果有多个端口时随机一个端口使用 // TODO Addr支持端口范围如果有多个端口时随机一个端口使用
// TODO 支持使用证书
conn, err = tls.DialWithDialer(&dialer, "tcp", origin.Addr.Host+":"+origin.Addr.PortRange, &tls.Config{ var tlsConfig = &tls.Config{
InsecureSkipVerify: true, InsecureSkipVerify: true,
}) }
if origin.Cert != nil {
var obj = origin.Cert.CertObject()
if obj != nil {
tlsConfig.InsecureSkipVerify = false
tlsConfig.Certificates = []tls.Certificate{*obj}
if len(origin.Cert.ServerName) > 0 {
tlsConfig.ServerName = origin.Cert.ServerName
}
}
}
conn, err = tls.DialWithDialer(&dialer, "tcp", origin.Addr.Host+":"+origin.Addr.PortRange, tlsConfig)
} }
// TODO 需要在合适的时机删除TOA记录 // TODO 需要在合适的时机删除TOA记录
@@ -69,10 +81,22 @@ func OriginConnect(origin *serverconfigs.OriginConfig, remoteAddr string) (net.C
// TODO 支持TCP4/TCP6 // TODO 支持TCP4/TCP6
// TODO 支持指定特定网卡 // TODO 支持指定特定网卡
// TODO Addr支持端口范围如果有多个端口时随机一个端口使用 // TODO Addr支持端口范围如果有多个端口时随机一个端口使用
// TODO 支持使用证书
return tls.Dial("tcp", origin.Addr.Host+":"+origin.Addr.PortRange, &tls.Config{ var tlsConfig = &tls.Config{
InsecureSkipVerify: true, InsecureSkipVerify: true,
}) }
if origin.Cert != nil {
var obj = origin.Cert.CertObject()
if obj != nil {
tlsConfig.InsecureSkipVerify = false
tlsConfig.Certificates = []tls.Certificate{*obj}
if len(origin.Cert.ServerName) > 0 {
tlsConfig.ServerName = origin.Cert.ServerName
}
}
}
return tls.Dial("tcp", origin.Addr.Host+":"+origin.Addr.PortRange, tlsConfig)
case serverconfigs.ProtocolUDP: case serverconfigs.ProtocolUDP:
addr, err := net.ResolveUDPAddr("udp", origin.Addr.Host+":"+origin.Addr.PortRange) addr, err := net.ResolveUDPAddr("udp", origin.Addr.Host+":"+origin.Addr.PortRange)
if err != nil { if err != nil {