github.com/polarismesh/polaris@v1.17.8/common/secure/tls.go (about) 1 /** 2 * Tencent is pleased to support the open source community by making Polaris available. 3 * 4 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. 5 * 6 * Licensed under the BSD 3-Clause License (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * https://opensource.org/licenses/BSD-3-Clause 11 * 12 * Unless required by applicable law or agreed to in writing, software distributed 13 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 14 * CONDITIONS OF ANY KIND, either express or implied. See the License for the 15 * specific language governing permissions and limitations under the License. 16 */ 17 18 package secure 19 20 import ( 21 "crypto/tls" 22 ) 23 24 // TLSInfo tls 配置信息 25 type TLSInfo struct { 26 // CertFile 服务端证书文件 27 CertFile string 28 // KeyFile CertFile 的密钥 key 文件 29 KeyFile string 30 // ClientCertFile 客户端证书文件 只有当 ClientCertAuth 设置为 true 时生效 31 ClientCertFile string 32 // ClientKeyFile ClientCertFile 的密钥 key 文件 33 ClientKeyFile string 34 35 // TrustedCAFile CA证书文件 36 TrustedCAFile string 37 // ClientCertAuth 是否启用客户端证书 38 ClientCertAuth bool 39 // CRLFile 客户端证书吊销列表 40 CRLFile string 41 42 // InsecureSkipVerify tls 的一个配置 43 // 客户端是否验证证书和服务器主机名 44 InsecureSkipVerify bool 45 // SkipClientSANVerify tls 的一个配置项 46 // 跳过客户端SAN值验证 47 SkipClientSANVerify bool 48 // ServerName 客户端发送的 Server Name Indication 扩展的值 49 // 它在服务器端和客户端都可用 50 ServerName string 51 52 // HandshakeFailure 当连接握手失败时可以选择调用 连接将在之后立即关闭 53 HandshakeFailure func(*tls.Conn, error) 54 55 // CipherSuites tls 的一个配置 56 // 支持的密码套件列表。如果为空,Go 默认会自动填充它。请注意,密码套件按给定顺序排列优先级。 57 CipherSuites []uint16 58 59 // AllowedCN 必须由客户提供的 CN 60 AllowedCN string 61 62 // AllowedHostname 必须与 TLS 匹配的 IP 地址或主机名 63 // 是由客户端提供的证书 64 AllowedHostname string 65 } 66 67 // IsEmpty 检查 tls 配置信息是否为空 当证书和密钥同时存在时才不为空 68 func (t *TLSInfo) IsEmpty() bool { 69 if t == nil { 70 return true 71 } 72 if t.CertFile != "" && t.KeyFile != "" { 73 return false 74 } 75 return true 76 }