Hi,
At the moment, openVPN is unnecessarily blocking the usage of both PKCS#12
certificate and additional CA´s provided in PEM files.
This is a patch for openVPN, to make it possible to use both PKCS#12 and
additonal CA´s for verification.
PS: Please CC me on any answers.
Best regards,
Philipp Gühring
--- options.c.orig 2006-01-10 16:46:50.000000000 +0100
+++ options.c 2006-01-10 16:47:11.000000000 +0100
@@ -1582,8 +1582,8 @@
#endif
if (options->pkcs12_file)
{
- if (options->ca_file)
- msg(M_USAGE, "Parameter --ca cannot be used when --pkcs12 is also specified.");
+// if (options->ca_file)
+// msg(M_USAGE, "Parameter --ca cannot be used when --pkcs12 is also specified.");
if (options->cert_file)
msg(M_USAGE, "Parameter --cert cannot be used when --pkcs12 is also specified.");
if (options->priv_key_file)
--- ssl.c.orig 2005-11-01 12:06:10.000000000 +0100
+++ ssl.c 2006-01-10 16:48:45.000000000 +0100
@@ -842,6 +842,24 @@
msg (M_SSLERR, "Cannot add certificate to client CA list (SSL_CTX_add_client_CA)");
}
}
+
+ /* Load CA file for verifying peer supplied certificate */
+ if(options->ca_file)
+ {
+ if (!SSL_CTX_load_verify_locations (ctx, options->ca_file, NULL))
+ msg (M_SSLERR, "Cannot load CA certificate file %s (SSL_CTX_load_verify_locations)", options->ca_file);
+
+ /* Load names of CAs from file and use it as a client CA list */
+ {
+ STACK_OF(X509_NAME) *cert_names;
+ cert_names = SSL_load_client_CA_file (options->ca_file);
+ if (!cert_names)
+ msg (M_SSLERR, "Cannot load CA certificate file %s (SSL_load_client_CA_file)", options->ca_file);
+ SSL_CTX_set_client_CA_list (ctx, cert_names);
+ }
+ }
+
+
}
else
{