if (ckch && ckch->dh) {
dh = ckch->dh;
- SSL_CTX_set_tmp_dh(ctx, dh);
+ if (!SSL_CTX_set_tmp_dh(ctx, dh)) {
+ memprintf(err, "%sunable to load the DH parameter specified in '%s'",
+ err && *err ? *err : "", path);
+#if defined(SSL_CTX_set_dh_auto)
+ SSL_CTX_set_dh_auto(ctx, 1);
+ memprintf(err, "%s, SSL library will use an automatically generated DH parameter.\n",
+ err && *err ? *err : "");
+#else
+ memprintf(err, "%s, DH ciphers won't be available.\n",
+ err && *err ? *err : "");
+#endif
+ ret |= ERR_WARN;
+ goto end;
+ }
if (ssl_dh_ptr_index >= 0) {
/* store a pointer to the DH params to avoid complaining about
}
}
else if (global_dh) {
- SSL_CTX_set_tmp_dh(ctx, global_dh);
+ if (!SSL_CTX_set_tmp_dh(ctx, global_dh)) {
+ memprintf(err, "%sunable to use the global DH parameter for certificate '%s'",
+ err && *err ? *err : "", path);
+#if defined(SSL_CTX_set_dh_auto)
+ SSL_CTX_set_dh_auto(ctx, 1);
+ memprintf(err, "%s, SSL library will use an automatically generated DH parameter.\n",
+ err && *err ? *err : "");
+#else
+ memprintf(err, "%s, DH ciphers won't be available.\n",
+ err && *err ? *err : "");
+#endif
+ ret |= ERR_WARN;
+ goto end;
+ }
}
else {
/* Clear openssl global errors stack */
goto end;
}
- SSL_CTX_set_tmp_dh(ctx, local_dh_1024);
+ if (!SSL_CTX_set_tmp_dh(ctx, local_dh_1024)) {
+ memprintf(err, "%sunable to load default 1024 bits DH parameter for certificate '%s'.\n",
+ err && *err ? *err : "", path);
+#if defined(SSL_CTX_set_dh_auto)
+ SSL_CTX_set_dh_auto(ctx, 1);
+ memprintf(err, "%s, SSL library will use an automatically generated DH parameter.\n",
+ err && *err ? *err : "");
+#else
+ memprintf(err, "%s, DH ciphers won't be available.\n",
+ err && *err ? *err : "");
+#endif
+ ret |= ERR_WARN;
+ goto end;
+ }
}
else {
SSL_CTX_set_tmp_dh_callback(ctx, ssl_get_tmp_dh);
NULL);
if (ecdhe == NULL) {
- SSL_CTX_set_dh_auto(ctx, 1);
+ SSL_CTX_set_ecdh_auto(ctx, 1);
return cfgerr;
}
#else