@@ -752,31 +752,33 @@ func (cfg *Config) getCertFromAnyCertManager(ctx context.Context, hello *tls.Cli
752
752
return Certificate {}, nil
753
753
}
754
754
755
- var upstreamCert * tls.Certificate
756
-
757
755
// try all the GetCertificate methods on external managers; use first one that returns a certificate
756
+ var upstreamCert * tls.Certificate
757
+ var err error
758
758
for i , certManager := range cfg .OnDemand .Managers {
759
- var err error
760
759
upstreamCert , err = certManager .GetCertificate (ctx , hello )
761
760
if err != nil {
762
- logger .Error ("getting certificate from external certificate manager" ,
761
+ logger .Error ("external certificate manager" ,
763
762
zap .String ("sni" , hello .ServerName ),
764
- zap .Int ("cert_manager" , i ),
763
+ zap .String ("cert_manager" , fmt .Sprintf ("%T" , certManager )),
764
+ zap .Int ("cert_manager_idx" , i ),
765
765
zap .Error (err ))
766
766
continue
767
767
}
768
768
if upstreamCert != nil {
769
769
break
770
770
}
771
771
}
772
+ if err != nil {
773
+ return Certificate {}, fmt .Errorf ("external certificate manager indicated that it is unable to yield certificate: %v" , err )
774
+ }
772
775
if upstreamCert == nil {
773
776
logger .Debug ("all external certificate managers yielded no certificates and no errors" , zap .String ("sni" , hello .ServerName ))
774
777
return Certificate {}, nil
775
778
}
776
779
777
780
var cert Certificate
778
- err := fillCertFromLeaf (& cert , * upstreamCert )
779
- if err != nil {
781
+ if err = fillCertFromLeaf (& cert , * upstreamCert ); err != nil {
780
782
return Certificate {}, fmt .Errorf ("external certificate manager: %s: filling cert from leaf: %v" , hello .ServerName , err )
781
783
}
782
784
0 commit comments