Di mana n, e, d, p dan q RSA berada di berkas kunci VPN
n, e, d, p dan q berada di dalam satu struktur, bukan di nama berkas. Baca kunci RSA VPN dengan OpenSSL dan pasangkan dengan sertifikatnya tanpa mencetak rahasia.
Huruf-huruf dalam penjelasan RSA menamai bidang di dalam satu objek, bukan berkas yang diberikan alat PKI. Berkas kunci privat memuat struktur yang bidang awalnya publik dan bidang berikutnya tidak boleh meninggalkan mesin yang mengakhiri terowongan. Di antara kedua fakta itu terdapat sebagian besar pertanyaan praktis tentang berkas mana yang menjawab pertanyaan mana. Panduan ini membaca strukturnya lebih dahulu, lalu perintah yang memeriksanya tanpa menumpahkannya.
Pastikan kuncinya RSA sebelum mencari bilangan prima
Sertifikat membuktikan bahwa suatu kunci ada dan telah ditandatangani; sertifikat tidak membuktikan bahwa kuncinya RSA. Sistem dapat dibangun di atas kurva eliptik atau Ed25519, dan tata letak direktori yang sama melayani semuanya. Periksa algoritmanya sebelum mulai mencari faktor prima yang tidak pernah ada.
Ketiga perintah hanya-baca ini menjawab pertanyaan itu dan mencatat versi alat.
openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text
Versi penting karena nama opsi berpindah antar rilis utama. Pada keluaran sertifikat, temukan baris algoritma kunci publik dan ukuran kunci; pada keluaran kunci, kunci RSA mencetak modulus dan eksponen publik. Kunci kurva eliptik mencetak kurva bernama sebagai gantinya, dan tidak ada pencarian yang akan menghasilkan n atau q darinya.
Baca strukturnya, bukan base64
PEM adalah base64 yang dibungkus baris tajuk, dan dekodenya menghasilkan DER, yaitu struktur berserial dan bukan satu bilangan bulat raksasa. Kunci privat RSA berpindah dalam dua wadah umum, PKCS#1 dan PKCS#8, dan keduanya bermuara pada himpunan angka yang sama.
Pada kasus dua bilangan prima, struktur privat membawa sembilan bidang: versi, modulus n, eksponen publik e, eksponen privat d, bilangan prima p dan q, dua eksponen CRT dan satu koefisien CRT. RFC 8017 bagian A.1 mendefinisikan komponen itu dan tata letak ASN.1, dan juga mengizinkan lebih dari dua bilangan prima, karena itu pengurai umum dapat mencetak entri prima tambahan. Perhatikan urutannya, sebab itu menjelaskan kesalahan yang sering terjadi: separuh publik disimpan di dalam berkas privat, jadi adanya bidang publik tidak membuat berkas itu aman untuk dibagikan. Semua yang setelahnya adalah materi yang harus tetap di host.
Pengodean menambah lapisan yang mudah dikacaukan dengan isi. openssl asn1parse menggambar struktur sebagai pohon sehingga urutan bidang menjadi terlihat, dan ia tidak mendekripsi apa pun dan tidak mengatakan apakah kuncinya bisa dipakai.
Pasangkan sertifikat dengan kunci tanpa mencetak kuncinya
Pertanyaan berikutnya biasanya apakah sertifikat dan kunci saling memiliki. Membandingkan modulus menjawabnya, tetapi juga menyalin materi yang dekat dengan privat ke transkrip terminal yang bisa berakhir di tiket. Membandingkan separuh publik menjawab pertanyaan yang sama tanpa sesuatu yang sensitif di layar.
openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH
Berkas yang sama berarti sertifikat membawa separuh publik kunci itu, dan perbedaan berarti Anda memegang pasangan yang salah. Ketidakcocokan itu adalah penyebab paling umum terowongan yang bernegosiasi dengan gembira lalu menolak autentikasi. Setelah itu hapus dua berkas sementara; isinya tidak rahasia, tetapi direktori kerja yang bersih lebih mudah dipikirkan di tengah insiden.
Ketahui apa yang bukan berkas tetangga
Sertifikat bukan kunci publik terenkripsi yang dibuka pihak lain dengan sertifikat CA; ia adalah ikatan bertanda tangan antara kunci publik dan data identitas. Kunci penandatangan privat CA tetap terpisah dari sertifikatnya sendiri dan dari setiap kunci klien. Permintaan juga bukan sertifikat: ia membawa informasi yang diminta dan kunci publik dengan tanda tangan atas permintaan, sehingga menjadi masukan pendaftaran, bukan bukti hak.
| File | Answers | Does not prove |
|---|---|---|
| vpn-client.key | Possession of the private key | That the identity is enrolled |
| vpn-client.crt | A signed binding of public key to identity | That the client holds the matching key |
| vpn-client.csr | The requested binding and public key | That access was granted |
| dh2048.pem | Group parameters for key exchange | Any RSA component |
| crl.pem | Revocation status for certificates | Anything about a private key |
Dua dari entri itu cukup sering dikacaukan dengan parameter RSA sehingga perlu disebut dua kali. Berkas parameter Diffie-Hellman memuat parameter grup untuk pembentukan kunci dan tidak memuat bilangan prima RSA, meskipun juga tercetak sebagai bilangan prima besar. Daftar pencabutan menerbitkan status sertifikat dan bukan tempat eksponen privat bisa bersembunyi.
Karena itu setiap baris inventaris sebaiknya mencatat empat hal: jenis objek, pemilik, tujuan dan apakah materi privat disertakan. Kolom terakhir menentukan ke mana berkas boleh disalin, dan itulah yang dilewatkan orang.
Catat pemasangannya, lalu verifikasi jabat tangan
Sebelum mengubah apa pun, simpan keluaran verifikasi dengan tanggal dan versi OpenSSL. Rotasi berikutnya kemudian dapat dibandingkan dengan bukti, bukan dengan ingatan.
openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates
Setelah perbandingan kunci publik, jalankan jalur yang memakai pasangan itu: naikkan terowongan, pastikan sertifikat disajikan dan diterima, lalu periksa identitas mana yang dicatat gateway. Jika kunci dan sertifikat cocok tetapi autentikasi tetap gagal, kesalahannya ada pada kepercayaan, pemetaan identitas atau kebijakan akses, bukan pada pasangan.
Untuk pengembalian, simpan kunci dan sertifikat sebelumnya di direktori bertanggal dan pulihkan keduanya bersama, jangan pernah salah satu. Kunci tanpa sertifikatnya dan sertifikat tanpa kuncinya gagal dengan cara yang sama dari luar, yang membuat pasangan yang pulih separuh mahal untuk diurai pada pukul dua pagi.