Cara membuat HTTP Public Key Pinning
Jadi kemarin saya baru sadar ada kesalahan dalam pembahasan header security HTTP yakni HPKP (HTTP Public Key Pinning) dari pertanyaan mas Odingk, saya sebut sekilas tapi tidak berikan cara membuat dan pakainya. Mungkin waktu itu masih belajaran jadi tidak disentuh sama sekali. 😀
Jadi kita memerlukan fingerprint dari sertifikat SSL yang dipakai websitenya. Yang perlu anda lakukan untuk mendapatkan sidik jarinya adalah eksekusi perintah berikut:
openssl x509 -pubkey < sertifikat_ssl.crt | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64
Dan akan muncul deretan kode seperti ini nantinya:
klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=
Setelah itu bisa kita tambahkan dalam header HTTPnya:
- Apache
Header set Public-Key-Pins "pin-sha256=\"klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; includeSubDomains; max-age=60"
- Nginx
add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; includeSubdomains; max-age=60'
Lama waktu berlakunya (max-age
) saya berikan 60
detik supaya apabila ada masalah anda tidak terblokir terlalu lama durasinya. Kalau tidak ada masalah pada konfigurasi HPKPnya bisa ditingkatkan menjadi 2592000
misalnya.
Oh ya, anda bisa menyisipkan beberapa fingerprint sertifikat SSL apabila anda ingin menggunakan backup sertifikat SSL apabila yang sedang digunakan bermasalah. Jadi butuh lebih dari satu sertifikat SSL, ini tidak wajib tapi saya informasikan saja kalau bisa.
iya saya kemarin sempat error pas menambahkan Public Key Pinning, tapi saya cari tutor lain akhirnya bisa. thx mas sudah kasi pencerahan.. Salam
Sep mas. Tampaknya dulu saya pas nulis tutorialnya belum menguasai/paham jadinya cuma disebut saja tapi ga dimasukin kodenya. 😀
klo di windows serve caranya gmn ya..?
Ini pakai IIS mas?
Kalo di shared hosting gimana caranya agar mendapat Public Key pinning ini?
Encoded dan decoded SSL sertifikatnya saya bisa copy paste, tapi selain dengan command linux VPS, bisa kah cara lain untuk shared server?
Mungkin bisa coba ini mas: https://report-uri.io/home/pkp_hash
mas ini kita pakai ssl sertifikat sama yang umumnya di pakai di website ya? atau ini merupakan jenis sendiri (pinning ssl)
maaf newbe
Mas, mungkin sebaiknya jangan membuat HPKP, karena selain sulit, HPKP bisa ‘mematikan’ web kamu ketika salah sedikit Pin saja. Lagian pula, HPKP sudah deprecated oleh Chrome, dan kemungkinan besar fitur tersebut akan di buang, begitu juga dengan Browser lain.
Silahkan kunjungi referensi berikut:
– hxxps://raymii(dot)org/s/blog/Chrome_68_is_deprecating_HPKP.html
– hxxps://scotthelme(dot)co(dot)uk/im-giving-up-on-hpkp/
Oh, ya, untuk pengganti nya, bisa anda gunakan Header Expect-CT.
Note: Pastikan Sertifikat SSL yang anda gunakan mendukung Certification Transparency (CT), Let’s Encrypt mendukung nya, kalau mau tinggal renew aja SSL LE nya secara manual.
Jika saya menjawab pertanyaan itu, maka saya jawab.
Kalo HPKP itu harus menggunakan Sertifikat SSL yang anda gunakan, alias yang umumnya di pakai di website, bukan self-signed (atau jenis sendiri).