Cursor AI编程助手离线资源库部署与本地模型集成实战
2026/5/11 1:07:07
mTLS( mutual TLS)双向认证确保服务网格中所有通信都是加密的,并进行双向身份验证。
package meshauth import ( "crypto/tls" "crypto/x509" "fmt" "io/ioutil" ) type Certificate struct { cert tls.Certificate caPool *x509.CertPool } func NewCertificate(certFile, keyFile, caFile string) (*Certificate, error) { cert, err := tls.LoadX509KeyPair(certFile, keyFile) if err != nil { return nil, fmt.Errorf("failed to load certificate: %w", err) } caCert, err := ioutil.ReadFile(caFile) if err != nil { return nil, fmt.Errorf("failed to read CA certificate: %w", err) } caPool := x509.NewCertPool() if !caPool.AppendCertsFromPEM(caCert) { return nil, fmt.Errorf("failed to parse CA certificate") } return &Certificate{ cert: cert, caPool: caPool, }, nil } func (c *Certificate) GetConfig() *tls.Config { return &tls.Config{ Certificates: []tls.Certificate{c.cert}, ClientCAs: c.caPool, ClientAuth: tls.RequireAndVerifyClientCert, MinVersion: tls.VersionTLS12, } }type SecureClient struct { cert *Certificate addr string } func NewSecureClient(addr string, cert *Certificate) *SecureClient { return &SecureClient{ cert: cert, addr: addr, } } func (c *SecureClient) Dial() (*tls.Conn, error) { return tls.Dial("tcp", c.addr, c.cert.GetConfig()) }mTLS是服务网格安全通信的基础,通过证书管理和双向认证确保服务间通信的安全性。