Di mana n, e, d, p dan q RSA berada dalam fail kunci VPN
n, e, d, p dan q berada dalam satu struktur, bukan dalam nama fail. Baca kunci RSA VPN dengan OpenSSL dan pasangkannya dengan sijilnya tanpa mencetak rahsia.
Huru-huruf dalam penjelasan RSA menamakan medan di dalam satu objek, bukan fail yang dikeluarkan oleh alat PKI. Fail kunci peribadi menyimpan struktur yang medan awalnya bersifat awam dan medan kemudiannya tidak boleh meninggalkan mesin yang menamatkan terowong. Antara kedua-dua fakta itu terletak sebahagian besar soalan praktikal tentang fail mana menjawab soalan mana. Panduan ini membaca strukturnya dahulu, kemudian arahan yang memeriksanya tanpa menumpahkannya.
Pastikan kunci itu RSA sebelum mencari nombor perdana
Sijil membuktikan bahawa sesuatu kunci wujud dan telah ditandatangani; ia tidak membuktikan bahawa kuncinya RSA. Sistem boleh dibina atas lengkung eliptik atau Ed25519, dan susun atur direktori yang sama melayani semuanya. Semak algoritma sebelum mula mencari faktor perdana yang tidak pernah ada.
Ketiga-tiga arahan baca sahaja ini menjawab soalan itu dan merekodkan versi alat.
openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text
Versi penting kerana nama pilihan telah berpindah antara keluaran utama. Dalam output sijil, cari baris algoritma kunci awam dan saiz kunci; dalam output kunci, kunci RSA mencetak modulus dan eksponen awam. Kunci lengkung eliptik mencetak lengkung bernama sebagai gantinya, dan tiada carian akan menghasilkan n atau q daripadanya.
Baca struktur, bukan base64
PEM ialah base64 yang dibalut baris tajuk, dan menyahkodnya menghasilkan DER, iaitu struktur bersiri dan bukan satu integer raksasa. Kunci peribadi RSA bergerak dalam dua bekas biasa, PKCS#1 dan PKCS#8, dan kedua-duanya diselesaikan kepada set nombor yang sama.
Dalam kes dua nombor perdana, struktur peribadi membawa sembilan medan: versi, modulus n, eksponen awam e, eksponen peribadi d, nombor perdana p dan q, dua eksponen CRT dan satu pekali CRT. RFC 8017 bahagian A.1 mentakrifkan komponen itu dan susun atur ASN.1, dan ia juga membenarkan lebih daripada dua nombor perdana, sebab itu penghurai umum boleh mencetak entri perdana tambahan. Perhatikan urutannya, kerana ia menjelaskan kesilapan yang kerap: separuh awam disimpan di dalam fail peribadi, jadi kehadiran medan awam tidak menjadikan fail itu selamat untuk dikongsi. Semua yang selepasnya ialah bahan yang mesti kekal pada hos.
Pengekodan menambah lapisan yang mudah dikelirukan dengan kandungan. openssl asn1parse melukis struktur sebagai pokok supaya urutan medan kelihatan, dan ia tidak menyahsulit apa-apa dan tidak memberitahu sama ada kunci itu boleh digunakan.
Pasangkan sijil dengan kunci tanpa mencetak kunci itu
Soalan berikutnya biasanya sama ada sijil dan kunci itu sepadan. Membandingkan modulus menjawabnya, tetapi ia juga menyalin bahan yang hampir dengan peribadi ke dalam transkrip terminal yang mungkin berakhir dalam tiket. Membandingkan separuh awam menjawab soalan yang sama tanpa apa-apa yang sensitif di skrin.
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
Fail yang sama bermakna sijil membawa separuh awam kunci itu, dan perbezaan bermakna anda memegang pasangan yang salah. Ketidakpadanan itulah punca paling biasa terowong yang berunding dengan gembira lalu menolak pengesahan. Selepas itu buang dua fail sementara; ia tidak menyimpan apa-apa rahsia, tetapi direktori kerja yang bersih lebih mudah difikirkan di tengah-tengah insiden.
Ketahui apa yang bukan fail jiran
Sijil bukan kunci awam yang disulitkan yang dibuka pihak lain dengan sijil CA; ia ikatan bertandatangan antara kunci awam dan data identiti. Kunci tandatangan peribadi CA kekal berasingan daripada sijilnya sendiri dan daripada setiap kunci klien. Permintaan juga bukan sijil: ia membawa maklumat yang diminta dan kunci awam dengan tandatangan atas permintaan itu, yang menjadikannya input pendaftaran dan 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 daripada entri itu cukup kerap dikelirukan dengan parameter RSA sehingga perlu dinamakan dua kali. Fail parameter Diffie-Hellman mengandungi parameter kumpulan untuk penubuhan kunci dan tiada nombor perdana RSA, walaupun ia juga dicetak sebagai nombor perdana besar. Senarai pembatalan menerbitkan status sijil dan bukan tempat eksponen peribadi boleh bersembunyi.
Oleh itu setiap baris inventori harus merekodkan empat perkara: jenis objek, pemilik, tujuan dan sama ada bahan peribadi disertakan. Lajur terakhir menentukan ke mana fail boleh disalin, dan itulah yang orang terlepas pandang.
Rekodkan pasangan itu, kemudian sahkan jabat tangan
Sebelum mengubah apa-apa, simpan output pengesahan dengan tarikh dan versi OpenSSL. Putaran kemudian boleh dibandingkan dengan bukti dan bukan dengan ingatan.
openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates
Selepas perbandingan kunci awam, lalui laluan yang menggunakan pasangan itu: angkat terowong, sahkan sijil dibentangkan dan diterima, dan periksa identiti mana yang direkodkan oleh get laluan. Jika kunci dan sijil sepadan tetapi pengesahan masih gagal, kesalahannya ada pada kepercayaan, pemetaan identiti atau dasar akses, bukan pada pasangan.
Untuk pengunduran, simpan kunci dan sijil sebelumnya dalam direktori bertarikh dan pulihkan kedua-duanya bersama, jangan sekali-kali salah satu. Kunci tanpa sijilnya dan sijil tanpa kuncinya gagal dengan cara yang sama dari luar, yang menjadikan pasangan yang pulih separuh mahal untuk diurai pada pukul dua pagi.