From: Kaspar Brand
-This directive points to the PEM-encoded Certificate file for the server and
-optionally also to the corresponding RSA or DSA Private Key file for it
-(contained in the same file). If the contained Private Key is encrypted the
-Pass Phrase dialog is forced at startup time. This directive can be used up to
-three times (referencing different filenames) when both a RSA, a DSA, and an
-ECC based server certificate is used in parallel.Module: mod_ssl openssl dhparam
+and openssl ecparam, respectively). If the private key
+is encrypted, the pass phrase dialog is forced at startup time.
+
+This directive can be used up to three times (referencing different filenames)
+when both an RSA, a DSA, and an ECC based server certificate is used in
+parallel. Note that DH and ECDH parameters are only read from the first
+SSLCertificateFile directive.
+Beginning with version 2.5.0-dev as of 2013-09-29, mod_ssl makes use of +standardized DH parameters with prime lengths of 2048, 3072 and 4096 bits +(from RFC 3526), and hands +them out to clients based on the length of the certificate's RSA/DSA key. +With Java-based clients in particular (Java 7 or earlier), this may lead +to handshake failures - see this +FAQ answer for working around +such issues. +
+SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt@@ -715,6 +736,15 @@ prefixes are:
-: remove cipher from list (can be added later again)!: kill cipher from list completely (can not be added later again)aNULL, eNULL and EXP
+ciphers are always disabledBeginning with version 2.5.0-dev as of 2013-09-25, null and export-grade
+ciphers are always disabled, as mod_ssl unconditionally prepends any supplied
+cipher suite string with !aNULL:!eNULL:!EXP: at initialization.
A simpler way to look at all of this is to use the ``openssl ciphers
-v'' command which provides a nice way to successively create the
correct cipher-spec string. The default cipher-spec string
diff --git a/docs/manual/ssl/ssl_faq.html.en b/docs/manual/ssl/ssl_faq.html.en
index b05c510f11a..3adf499e924 100644
--- a/docs/manual/ssl/ssl_faq.html.en
+++ b/docs/manual/ssl/ssl_faq.html.en
@@ -524,6 +524,8 @@ Does this mean the username/password is being sent unencrypted?
Beginning with version 2.5.0-dev as of 2013-09-29,
+ mod_ssl will use DH parameters which include primes
+ with lengths of more than 1024 bits. Java 7 and earlier limit their
+ support for DH prime sizes to a maximum of 1024 bits, however.
If your Java-based client aborts with exceptions such as
+ java.lang.RuntimeException: Could not generate DH keypair and
+ java.security.InvalidAlgorithmParameterException: Prime size must be
+ multiple of 64, and can only range from 512 to 1024 (inclusive),
+ and httpd logs tlsv1 alert internal error (SSL alert number 80)
+ (at LogLevel info
+ or higher), you can either rearrange mod_ssl's cipher list with
+ SSLCipherSuite
+ (possibly in conjunction with SSLHonorCipherOrder),
+ or you can use the SSLCertificateFile
+ directive to configure custom DH parameters with a 1024-bit prime, which
+ will always have precedence over any of the built-in DH parameters.
To generate custom DH parameters, use the openssl dhparam
+ command. Alternatively, you can append the following standard 1024-bit DH
+ parameters from RFC 2409,
+ section 6.2 to the respective
+ SSLCertificateFile file:
-----BEGIN DH PARAMETERS----- +MIGHAoGBAP//////////yQ/aoiFowjTExmKLgNwc0SkCTgiKZ8x0Agu+pjsTmyJR +Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL +/1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC +-----END DH PARAMETERS-----