@@ -130,13 +130,34 @@ class CertHandler {
130
130
{
131
131
upsert : false ,
132
132
returnDocument : 'after' ,
133
- projection : { _id : true }
133
+ projection : { _id : true , autogenerated : true , expires : true , servername : true }
134
134
}
135
135
) ;
136
136
137
- if ( r && r . value ) {
137
+ if ( r ?. value ) {
138
+ const certData = r . value ;
139
+ const now = new Date ( ) ;
140
+
141
+ if ( certData . autogenerated && certData . expires < now ) {
142
+ // delete expired automatic cert, do not try to renew it
143
+ try {
144
+ let r = await this . database . collection ( 'certs' ) . deleteOne ( { _id : certData . _id } ) ;
145
+ if ( r ?. deletedCount ) {
146
+ this . loggelf ( {
147
+ short_message : `Deleted autogenerated certificate ${ certData . cervername } ` ,
148
+ _sni_servername : certData . cervername ,
149
+ _cert_action : 'sni_autodelete'
150
+ } ) ;
151
+ }
152
+ } catch ( err ) {
153
+ //ignore
154
+ }
155
+
156
+ return await this . getNextRenewal ( ) ;
157
+ }
158
+
138
159
// use getRecord to decrypt secrets
139
- return await this . getRecord ( { _id : r . value . _id } , true ) ;
160
+ return await this . getRecord ( { _id : certData . _id } , true ) ;
140
161
}
141
162
142
163
return false ;
@@ -728,7 +749,7 @@ class CertHandler {
728
749
log . verbose ( 'Certs' , 'ACME precheck passed. action=precheck domain=%s' , domain ) ;
729
750
730
751
this . loggelf ( {
731
- short_message : ` Autogenerating TLS certificate for ${ domain } ` ,
752
+ short_message : `Autogenerating TLS certificate for ${ domain } ` ,
732
753
_sni_servername : domain ,
733
754
_cert_action : 'sni_autogenerate'
734
755
} ) ;
0 commit comments