Skip to content
Snippets Groups Projects
Commit 598408bb authored by Daniel Kahn Gillmor's avatar Daniel Kahn Gillmor Committed by Ondřej Surý
Browse files

Auto-renew ephemeral X.509 certificate.

If the ephemeral X.509 certificate is due for renewal in less than a
week, regenerate it automatically.
parent a405b874
1 merge request!112Create and use ephemeral TLS credentials if none are explicitly configured
...@@ -130,11 +130,26 @@ struct tls_ctx_t *tls_new(struct worker_ctx *worker) ...@@ -130,11 +130,26 @@ struct tls_ctx_t *tls_new(struct worker_ctx *worker)
} }
time_t now = time(NULL); time_t now = time(NULL);
if (net->tls_credentials->valid_until != GNUTLS_X509_NO_WELL_DEFINED_EXPIRATION && if (net->tls_credentials->valid_until != GNUTLS_X509_NO_WELL_DEFINED_EXPIRATION) {
now >= net->tls_credentials->valid_until) { if (net->tls_credentials->ephemeral_servicename) {
/* Warn once when certificate expires */ /* ephemeral cert: refresh if due to expire within a week */
kr_log_error("[tls] X.509 certificate has expired!\n"); if (now >= net->tls_credentials->valid_until - 60*60*24*7) {
net->tls_credentials->valid_until = GNUTLS_X509_NO_WELL_DEFINED_EXPIRATION; struct tls_credentials *newcreds = tls_get_ephemeral_credentials(worker->engine);
if (newcreds) {
tls_credentials_release(net->tls_credentials);
net->tls_credentials = newcreds;
kr_log_info("[tls] Renewed expiring ephemeral X.509 cert\n");
} else {
kr_log_error("[tls] Failed to renew expiring ephemeral X.509 cert, using existing one\n");
}
}
} else {
/* non-ephemeral cert: warn once when certificate expires */
if (now >= net->tls_credentials->valid_until) {
kr_log_error("[tls] X.509 certificate has expired!\n");
net->tls_credentials->valid_until = GNUTLS_X509_NO_WELL_DEFINED_EXPIRATION;
}
}
} }
struct tls_ctx_t *tls = calloc(1, sizeof(struct tls_ctx_t)); struct tls_ctx_t *tls = calloc(1, sizeof(struct tls_ctx_t));
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment