Kullanımı kolay bir komut satırı anahtarı bilmiyorum, ancak openssl s_client
komut satırında, -msg
el sıkışma mesajının onaltılık bir dökümünü almak için seçenek ekleyebilirsiniz . Sonra ServerKeyExchange
mesajı arayın ; şöyle görünmelidir:
<<< TLS 1.2 Handshake [length 030f], ServerKeyExchange
0c 00 03 0b 01 00 ff ff ff ff ff ff ff ff c9 0f
da a2 21 68 c2 34 c4 c6 62 8b 80 dc 1c d1 29 02
4e 08 8a 67 cc 74 02 0b be a6 3b 13 9b 22 51 4a
(...)
ve şu şekilde okur:
0c 00 03 0b
: 0x00030B bayt uzunluğunda "ServerKeyExchange" ("0c") türünde ileti.
- İlk eleman, iki bayt uzunluk başlıklı büyük bir tamsayı olarak DH modülüdür. Burada uzunluk,
01 00
0x0100 bayt üzerinde kodlanmış bir tam sayı olarak kodlanır. Bu 256 bayttır, bu nedenle modülün uzunluğu 2041 ile 2048 bit arasındadır.
- Modül baytları, imzasız big-endian sırasıyla izler. Bu modülün en üst baytı bu durumda
ff ff ff ff...
. Bu durumda modülün uzunluğu tam olarak 2048 bittir.
Bir ECDHE şifreleme paketi (eliptik eğri) kullanıyorsanız, ServerKeyExchange
format elbette farklıdır.
Mesajın tanımı için standarda bakın ServerKeyExchange
. DHE şifre takımları için, p , jeneratör g ve sunucu DH ortak anahtarı y modülünü içerir, bu sırayla, her biri yukarıda açıklanan formatta büyük bir tamsayı olarak ifade edilir (bayt cinsinden uzunluğu içeren 16 bitlik başlık, ardından tamsayı imzasız big-endian kodlamasındaki değer).
Son OpenSSL sürümleri, sunucunun anahtar çiftinin ( iletiyi imzalamak için kullanılır) gücüyle eşleşen (güvenlik açısından) bir DH modülü boyutu seçme eğilimindedir ServerKeyExchange
. Yukarıdaki örnekte, sunucunun 2048 bitlik RSA anahtarı vardır, bu nedenle OpenSSL, 2048 bitlik DH modülünü kullanmayı seçmiştir (bu durumda, RFC 3526, bölüm 3'te açıklanan iyi bilinen modül ).
Diğer bazı sunucular, daha büyük DH gruplarını desteklemeyen bazı mevcut istemcilerle uyumluluk sağlamak için 1024 bit DH gruplarına bağlı kalmaktadır (en büyük suçlu Java'nın 2012'de Java 8 build 56'da düzeltilen SSL uygulamasıdır ). DHE şifreleme paketleri için TLS protokolünde bilinen bir kusur, istemcinin hangi modül boyutunu destekleyebileceğini belirleyememesidir (bu, ECDHE için sabittir, çünkü istemci kabul ettiği eğrilerin tam listesini belirleyebilir) .
s_client
1.0.2'de "el sıkışma x okuyor ve y yazmış" ifadesinden hemen önce "Geçici sunucu anahtarı" DH & boyutu veya ECDH ve eğri görüntülenir, böylece artık ihtiyacınız kalmaz kodunu çözmek için. Son zamanlarda DHE'yi otomatik olarak seçen Apache mod_ssl : httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslcertificatefile (Java istemcileriyle ilgili sorunu not eder).