Apa perbedaan antara sertifikat dan kunci sehubungan dengan SSL?

127

Setiap kali saya mencoba memahami apa pun tentang SSL, saya selalu kesulitan melacak apa yang dimaksud "kunci" dan "sertifikat". Saya khawatir banyak orang menggunakannya secara salah atau bergantian. Apakah ada perbedaan standar antara kunci dan sertifikat?

drs
sumber
Sertifikat yang digunakan untuk SSL sangat didasarkan pada PKI en.wikipedia.org/wiki/Public-key_cryptography
Zoredache

Jawaban:

115

Sertifikat berisi kunci publik.

Sertifikat itu, selain berisi kunci publik, berisi informasi tambahan seperti penerbit, untuk apa sertifikat itu seharusnya digunakan, dan jenis metadata lainnya.

Biasanya, sertifikat itu sendiri ditandatangani oleh otoritas sertifikat (CA) menggunakan kunci pribadi CA. Ini memverifikasi keaslian sertifikat.

LawrenceC
sumber
4
@Zoredache Jika suatu sertifikat biasanya hanya memiliki kunci publik, apakah ada nama yang baik untuk memanggil file .p12 atau .pfx yang berisi sertifikat dan kunci privat bersama?
drs
Pkcs12 adalah format arsip. Mungkin berisi kunci, atau mungkin tidak. Saya biasanya mencoba untuk selalu spesifik ketika merujuk tentang apa yang berisi file tertentu, atau hanya mengatakan file pkcs12.
Zoredache
2
Di mana informasi tambahan ini dimakamkan? Saya melihat beberapa sertifikat dan semuanya omong kosong bagi saya
CodyBugstein
3
Omong kosong yang Anda lihat adalah pengkodean Base64. Itu dilakukan dengan cara yang mungkin karena alasan yang sama bahwa lampiran email dikonversi menjadi itu - pada dasarnya untuk memastikan mereka dapat mengirim melalui protokol dan mekanisme yang dirancang untuk ASCII hanya tanpa modifikasi biasa dan tanpa khawatir tentang hal-hal seperti baris baru, tanda kurung, dll. opensslPerintah dapat memecahkan kode dan parsing ini atau Anda dapat menggunakan utilitas online seperti ini: lapo.it/asn1js
LawrenceC
Apakah sertifikat ditandatangani oleh CA atau server sedang dikomunikasikan?
Olshansk
58

Dua gambar ini bersama-sama menjelaskan semuanya kepada saya:

Sumber: linuxvoice

masukkan deskripsi gambar di sini

Sumber: infosecinstitute

masukkan deskripsi gambar di sini

Andrejs
sumber
1
Xkcd
Bagus. 1 klarifikasi: gambar pertama adalah standar (1 arah) TLS auth; 2, saling (2 arah) auth. Dan 1 info tambahan dalam yang pertama akan lebih membantu menjelaskan bagaimana kepercayaan itu benar-benar didirikan (semua dalam 1 foto yang terlihat ramah): setelah klien mendapatkan sertifikat kunci publik server, klien memverifikasi bahwa CA yang menandatangani sertifikat server tercantum dalam daftar pribadi CA tepercaya klien (menetapkan bahwa sekarang CA juga mempercayai CA). Kemudian, aman untuk mengirim server kunci sesi, dengan masing-masing sekarang dapat mengenkripsi dan mendekripsi komunikasi berikutnya.
user1172173
Tautan pertama, ke linuxvoice.com/... , memberikan kesalahan sertifikat. Ironis.
Tobb
37

Katakanlah perusahaan A memiliki pasangan kunci dan perlu menerbitkan kunci publiknya untuk penggunaan publik (alias ssl di situs web-nya).

  • Perusahaan A harus mengajukan permintaan sertifikat (CR) ke otoritas sertifikasi (CA) untuk mendapatkan sertifikat untuk pasangan kuncinya.
  • Kunci publik, tetapi bukan kunci pribadi, dari pasangan kunci perusahaan A dimasukkan sebagai bagian dari permintaan sertifikat.
  • CA kemudian menggunakan informasi identitas perusahaan A untuk menentukan apakah permintaan tersebut memenuhi kriteria CA untuk menerbitkan sertifikat.
    Jika CA menyetujui permintaan tersebut, ia mengeluarkan sertifikat kepada perusahaan A. Secara singkat CA menandatangani kunci publik perusahaan A dengan kunci pribadi (CA) -nya, yang memverifikasi keasliannya.

Jadi kunci publik perusahaan A yang ditandatangani dengan kunci pribadi CA yang valid disebut sertifikat perusahaan A.

Mohsen Heydari
sumber
Apakah Perusahaan A suatu titik mengaitkan kunci pribadi (Perusahaan A) dengan sertifikat (Perusahaan A)?
Tola Odejayi
Tidak. Kunci pribadi tetap privet untuk A.
Mohsen Heydari
Jadi di mana kunci pribadi perusahaan A digunakan?
sivann
2
Setelah formalitas di atas. Perusahaan A akan memiliki sertifikat SSL yang valid di situs webnya. Setiap pengunjung (browser) yang mengomunikasikan situs web akan menggunakan kunci publik sertifikat untuk mengenkripsi pesannya. Perusahaan A yang memiliki kunci pribadi sertifikat SSL adalah satu-satunya yang dapat mendekripsi pesan tersebut.
Mohsen Heydari
Saya kira perusahaan A adalah laki-laki.
DimiDak
5

Izinkan saya menjelaskan dengan sebuah contoh.

Dalam PKI berbasis pasangan kunci normal, ada kunci pribadi dan kunci publik.

Dalam sistem berbasis sertifikat, ada kunci pribadi dan sertifikat. Sertifikat memiliki lebih banyak informasi daripada kunci publik.

Demo (Anda dapat menghasilkan sertifikat dan kunci pribadi): http://www.selfsignedcertificate.com/

Anda dapat mengunduh membuka file kunci pribadi dan file sertifikat, Anda melihat file sertifikat berisi banyak informasi seperti yang ditunjukkan di bawah ini. masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Anda dapat mencocokkan sertifikat yang dihasilkan (dibuka oleh editor teks), dan kunci pribadi (dibuka oleh editor teks) dari situs ini: https://www.sslshopper.com/certificate-key-matcher.html

Jika sertifikat cocok dengan kunci pribadi klien, klien yakin, sertifikat itu diberikan oleh klien atau diberikan oleh agen tepercaya klien (CA).

Namun, ada masalah hanya dalam komunikasi kunci pribadi dan berbasis sertifikat .

Karena, siapa pun dapat membuat sertifikat dan kunci pribadi mereka sendiri, sehingga jabat tangan sederhana tidak membuktikan apa pun tentang server selain dari itu server mengetahui kunci pribadi yang cocok dengan kunci publik sertifikat. Salah satu cara untuk mengatasi masalah ini adalah meminta klien memiliki satu set atau lebih sertifikat yang dipercayai. Jika sertifikat tidak diatur, server tidak dapat dipercaya .

Ada beberapa kelemahan dari pendekatan sederhana ini. Server harus dapat meningkatkan ke kunci yang lebih kuat dari waktu ke waktu ("rotasi tombol"), yang menggantikan kunci publik dalam sertifikat dengan yang baru. Sayangnya, sekarang aplikasi klien harus diperbarui karena pada dasarnya perubahan konfigurasi server. Ini khususnya bermasalah jika server tidak di bawah kendali pengembang aplikasi, misalnya, jika itu adalah layanan web pihak ketiga. Pendekatan ini juga memiliki masalah jika aplikasi harus berbicara dengan server yang sewenang-wenang seperti browser web atau aplikasi email.

Untuk mengatasi kelemahan ini, server biasanya dikonfigurasikan dengan sertifikat dari penerbit terkenal yang disebut Certificate Authorities (CAs). host-platform (klien) umumnya berisi daftar CA terkenal yang dipercayai. Mirip dengan server, CA memiliki sertifikat dan kunci pribadi. Saat mengeluarkan sertifikat untuk server, CA menandatangani sertifikat server menggunakan kunci privasinya. Klien kemudian dapat memverifikasi bahwa server memiliki sertifikat yang dikeluarkan oleh CA yang dikenal oleh platform.

Namun, saat memecahkan beberapa masalah, penggunaan CA memperkenalkan masalah lain. Karena CA mengeluarkan sertifikat untuk banyak server, Anda masih perlu beberapa cara untuk memastikan Anda berbicara dengan server yang Anda inginkan. Untuk mengatasinya, sertifikat yang dikeluarkan oleh CA mengidentifikasi server baik dengan nama tertentu seperti gmail.com atau kumpulan host wildcard seperti * .google.com.

Contoh berikut akan membuat konsep-konsep ini sedikit lebih konkret. Dalam cuplikan di bawah ini dari baris perintah, perintah s_client alat openssl melihat informasi sertifikat server Wikipedia. Ini menentukan port 443 karena itu adalah default untuk HTTPS. Perintah mengirimkan output dari openssl s_client ke openssl x509, yang memformat informasi tentang sertifikat sesuai dengan standar X.509. Secara khusus, perintah meminta subjek, yang berisi informasi nama server, dan penerbit, yang mengidentifikasi CA.

$ openssl s_client -connect wikipedia.org:443 | openssl x509 -noout -subject -issuer
subject= /serialNumber=sOrr2rKpMVP70Z6E9BT5reY008SJEdYv/C=US/O=*.wikipedia.org/OU=GT03314600/OU=See www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=*.wikipedia.org
issuer= /C=US/O=GeoTrust, Inc./CN=RapidSSL CA

Anda dapat melihat bahwa sertifikat dikeluarkan untuk server yang cocok * .wikipedia.org oleh RapidSSL CA.

Seperti yang Anda lihat, karena informasi tambahan ini dikirim oleh CA ke Server, klien dapat dengan mudah mengetahui apakah ia berkomunikasi dengan servernya atau tidak.

Uddhav Gautam
sumber
3

Sertifikat SSL diperoleh dari Otoritas Sertifikasi tepercaya, yang menjamin koneksi aman situs web. Sertifikat SSL biasanya berisi logo otentikasi dan juga kunci publik yang diperlukan untuk mengenkripsi dan mendekripsi data yang akan dikirim ke komputer. Fungsi Kunci SSL

Beberapa kunci SSL dapat dihasilkan selama sesi. Mereka digunakan untuk mengenkripsi dan mendekripsi informasi yang dikirim ke dan dari komputer. Kunci digunakan untuk memverifikasi bahwa informasi tersebut belum dimodifikasi atau dirusak.

Perbedaan Siklus Hidup

Sertifikat bertahan lebih lama dari kunci SSL. Sertifikat SSL diperoleh dari Otoritas Sertifikasi, yang dapat diperpanjang secara berkala oleh bank dan bisnis. Kunci SSL atau kunci sesi, di sisi lain, dihasilkan secara unik selama sesi dan dibuang ketika sesi berakhir.

Baca lebih lanjut di sini

Shekhar
sumber
2

OK, mari kita jabarkan ini sehingga orang yang tidak teknis bisa mengerti.

Pikirkan seperti ini. Sertifikat adalah seperti brankas di bank Anda. Ini berisi banyak hal penting; umumnya barang yang mengandung identitas Anda. Sertifikat memiliki kunci publik dan memerlukan kunci pribadi untuk membukanya.

Brankas Anda juga perlu dua kunci untuk dibuka, seperti halnya sertifikat.
Dengan brankas, kunci bankir seperti kunci publik karena tetap di bank dan kunci publik tetap dengan sertifikat. Anda memiliki kunci pribadi, yang diperlukan untuk "mendapatkan sertifikat Anda" dan dalam contoh kotak penyimpanan pengaman, kunci pribadi Anda diperlukan selain kunci publik.

Sebelum Anda benar-benar dapat membuka brankas Anda, Anda harus terlebih dahulu memverifikasi identitas Anda (seperti permintaan sertifikat); setelah Anda diidentifikasi, Anda menggunakan kunci pribadi Anda bersama dengan kunci publik untuk membuka kotak pengaman Anda. Ini seperti membuat permintaan sertifikat, dan kemudian mendapatkan sertifikat dari otoritas sertifikasi (selama Anda dapat diidentifikasi (tepercaya) dan Anda memiliki kunci yang tepat).

kayu
sumber
3
<PiratesOfTheCarribean> Jadi kita akan mengejar kunci ini! </PiratesOfTheCarribean> (Baca: Anda sama sekali tidak masuk akal ...)
Timo