XDS Server
XDS Server
initSecureDiscoveryService
setPeerCertVerifier
func (s *Server) setPeerCertVerifier(tlsOptions TLSOptions) error {
if tlsOptions.CaCertFile == "" && s.CA == nil && features.SpiffeBundleEndpoints == "" {
// Running locally without configured certs - no TLS mode
return nil
}
s.peerCertVerifier = spiffe.NewPeerCertVerifier()
var rootCertBytes []byte
var err error
// 判断是否手动指定
if tlsOptions.CaCertFile != "" {
if rootCertBytes, err = ioutil.ReadFile(tlsOptions.CaCertFile); err != nil {
return err
}
} else {
// 加载RA cert
if s.RA != nil {
rootCertBytes = append(rootCertBytes, s.RA.GetCAKeyCertBundle().GetRootCertPem()...)
}
// 加载CA cert
if s.CA != nil {
rootCertBytes = append(rootCertBytes, s.CA.GetCAKeyCertBundle().GetRootCertPem()...)
}
}
if len(rootCertBytes) != 0 {
// 根据信任域添加添加CA证书到certPools/generalCertPool
err := s.peerCertVerifier.AddMappingFromPEM(spiffe.GetTrustDomain(), rootCertBytes)
if err != nil {
log.Errorf("Add Root CAs into peerCertVerifier failed: %v", err)
return fmt.Errorf("add root CAs into peerCertVerifier failed: %v", err)
}
}
if features.SpiffeBundleEndpoints != "" {
certMap, err := spiffe.RetrieveSpiffeBundleRootCertsFromStringInput(
features.SpiffeBundleEndpoints, []*x509.Certificate{})
if err != nil {
return err
}
s.peerCertVerifier.AddMappings(certMap)
}
return nil
}主动推送
cds
eds
lds
nds
rds
Last updated