Nguyen Thai Ngoc Duy <[email protected]> writes:

> GnuTLS's RSA key generation time is really long, making it barely
> usable in real life (you would not want to wait half an hour for a new
> https site you visit).

Have you raised a bug report with the GnuTLS people?  I am using the
default configuration of GnuTLS so if it is slow then the problem is
with them.

> I tried "openssl rsa 1024" and it took only a
> few seconds. How about dropping GnuTLS support in favor of OpenSSL? I
> made a patch, which  simply calls "openssl rsa 1024" to generate
> private keys. It worked really well I did not have to wait while
> surfing https sites.

The reason that I use GnuTLS is because the license better matches the
license of WWWOFFLE (which is the GPL).  GnuTLS uses the LGPL license
but OpenSSL uses a BSD type of certificate.  The OpenSSL FAQ has a
question about using OpenSSL in GPL software:

| * Can I use OpenSSL with GPL software?
| 
| On many systems including the major Linux and BSD distributions, yes (the
| GPL does not place restrictions on using libraries that are part of the
| normal operating system distribution).
| 
| On other systems, the situation is less clear. Some GPL software copyright
| holders claim that you infringe on their rights if you use OpenSSL with
| their software on operating systems that don't normally include OpenSSL.
| 
| If you develop open source software that uses OpenSSL, you may find it
| useful to choose an other license than the GPL, or state explicitly that
| "This program is released under the GPL with the additional exemption that
| compiling, linking, and/or using OpenSSL is allowed."  If you are using
| GPL software developed by others, you may want to ask the copyright holder
| for permission to use their software with OpenSSL.


> If it's not feasible to adapt openssl, how about an option to reuse
> existing private keys? It makes system much weaker, but for a single
> user system like mine, I don't really care.

The certificates are all unique to the server that they are pretending
to be for.  They cannot be re-used.


The new version of GnuTLS (newer than the one that was available when
I added GnuTLS support to WWWOFFLE) is also very quick to generate a
key.  From researching this I see that it is possible to use a less
good random number source which is quicker at the expense of being
less secure.

This patch seems to fix the problem - the only problem remaining is
that there is a good reason that the default is not to do things this
way.

-------------------- certificates.c patch --------------------
--- certificates.c      2007/07/08 17:52:39     1.32
+++ certificates.c      2009/03/13 18:48:12
@@ -43,6 +43,7 @@
 #if USE_GNUTLS
 #include <gnutls/gnutls.h>
 #include <gnutls/x509.h>
+#include <gcrypt.h>
 #endif
 
 #include "wwwoffle.h"
@@ -125,6 +126,10 @@
     gnutls_global_init();
  initialised=1;
 
+ /* Use faster but less secure key generation. */
+
+ gcry_control(GCRYCTL_ENABLE_QUICK_RANDOM,0);
+
  /* Create the certificates directory if needed */
 
  if(stat("certificates",&buf))
-------------------- certificates.c patch --------------------

-- 
Andrew.
----------------------------------------------------------------------
Andrew M. Bishop                             [email protected]
                                      http://www.gedanken.demon.co.uk/

WWWOFFLE users page:
        http://www.gedanken.demon.co.uk/wwwoffle/version-2.9/user.html

Reply via email to