Where does the key length come from?
In this example it is 2048 bits long:
Secure Sockets Layer
TLSv1.2 Record Layer: Handshake Protocol: Server Key Exchange
Content Type: Handshake (22)
Version: TLS 1.2 (0x0303)
Length: 783
Handshake Protocol: Server Key Exchange
Handshake Type: Server Key Exchange (12)
Length: 779
Diffie-Hellman Server Params
p Length: 256
p: ...
g Length: 1
g: 02
Pubkey Length: 256
Pubkey: ...
Signature Algorithm: rsa_pkcs1_sha512 (0x0601)
Signature Length: 256
Signature: ...
It is apparently not a parameter of the cyper suite (here: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256) as there is no key length given for DHE.
Is this just a parameter configured on the server side? Or is it somehow negotiated? I cannot find much information except in "Bulletproof SSL and TLS" in the section about deployment best practices.
To be on the safe side, if deploying DHE, configure it with at least 2,048 bits of security.
That section makes it sound like it's server configuration...
Reason for my question:
I have got a piece of older software which cannot connect to a server via TLS. It complains that it only supports DH key lengths from 512 to 2048. And in the according network trace p Length is 512 (== 4096 bits). Thus the TLS handshake fails.
Now I need to know how I could get my legacy software (running on an embedded device) to talk to the server (preferrably without updating the software).