Salah satu website yang biasa saya cek pake cURL muncul pesan error dh key too small, lengkapnya bisa dilihat dibawah ini
* Connected to domain.co.id (10.10.10.10) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: none CApath: /etc/ssl/certs * error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small * Closing connection 0
Untuk lebih meyakinkan, kita validasi DH key yang digunakan si website
openssl s_client -connect domain.co.id:443 -cipher "EDH" | grep "Server Temp Key" # output depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA verify return:1 depth=1 C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA verify return:1 depth=0 C = ID, L = Jakarta, O = PT. XXX Indonesia, OU = Business Technology Services1, CN = domain.co.id verify return:1 Server Temp Key: DH, 1024 bits
Masalah tersebut muncul karena Debian mewajibkan DH key minimal 2048, sementara dari website hanya menggunakan 1024 bits. Ini adalah masalah server side, jadi solusi paling benar adalah meminta si admin web untuk mengupgrade DH key. Bila anda orang yang bertanggung jawab terhadap website tersebut bisa mengambil DH key dari Mozilla
Server Side
Copy file dari
wget https://ssl-config.mozilla.org/ffdhe2048.txt -O /etc/nginx/dhparam.pem
Contoh di nginx, parameternya
ssl_dhparam /etc/nginx/dhparam.pem;
restart service nginx.
Client Side
Bila kita diposisi sebagai client, kita tidak bisa memaksakan admin website tersebut untuk mengupgrade Diffie-Hellman key-nya, maka kita akali dari openssl. Buka file /etc/ssl/openssl.cnf
, ubah
CipherString = DEFAULT@SECLEVEL=2
menjadi
#CipherString = DEFAULT@SECLEVEL=2
dengan begitu openssl tidak ngereject, kalo DH key server dibawah 2048.
Pengguna Fedora 34 cukup menjalankan
sudo update-crypto-policies --set LEGACY