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

Leave a comment

Your email address will not be published. Required fields are marked *