aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
Diffstat (limited to 'src/or')
-rw-r--r--src/or/router.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/or/router.c b/src/or/router.c
index 211366351..422fe5db2 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -660,8 +660,18 @@ router_initialize_tls_context(void)
flags |= TOR_TLS_CTX_USE_ECDHE_P224;
}
if (!lifetime) { /* we should guess a good ssl cert lifetime */
- /* choose between 1 and 365 days */
- lifetime = 1*24*3600 + crypto_rand_int(364*24*3600);
+
+ /* choose between 5 and 365 days, and round to the day */
+ lifetime = 5*24*3600 + crypto_rand_int(361*24*3600);
+ lifetime -= lifetime % (24*3600);
+
+ if (crypto_rand_int(2)) {
+ /* Half the time we expire at midnight, and half the time we expire
+ * one second before midnight. (Some CAs wobble their expiry times a
+ * bit in practice, perhaps to reduce collision attacks; see ticket
+ * 8443 for details about observed certs in the wild.) */
+ lifetime--;
+ }
}
/* It's ok to pass lifetime in as an unsigned int, since