Sebelum Anda mengonversinya: kunci SSH versus sertifikat OpenVPN
Baris authorized_keys, sertifikat OpenSSH, dan sertifikat X.509 adalah objek yang berbeda. Periksa mana yang Anda pegang sebelum mengonversi apa pun.
Impor gagal dengan kesalahan sertifikat, jadi langkah yang jelas terlihat seperti konversi. Naluri itu membawa orang ke jalur di mana ekstensi berkas berubah dan penolakannya tetap persis sama. Baris ssh-ed25519 di authorized_keys dan sertifikat klien OpenVPN adalah objek kredensial yang terpisah, dengan penerbit berbeda, pengodean berbeda, dan jalur pencabutan berbeda. Menjalankan pemeriksaan ini secara berurutan memberi tahu Anda dalam satu menit apakah konversi bisa membantu sama sekali.
Objek mana yang sebenarnya Anda pegang?
Ada lima hal yang disebut orang sebagai kunci, dan hanya satu di antaranya yang diinginkan profil TLS. Kunci publik SSH adalah satu baris teks dengan prefiks tipe dan muatan base64. Sertifikat OpenSSH adalah kunci itu ditambah tanda tangan, principals, dan opsi, yang dihasilkan ssh-keygen yang bertindak sebagai CA kecilnya sendiri. Sertifikat X.509 adalah struktur yang sama sekali berbeda, membawa subjek, jendela validitas, ekstensi, dan tanda tangan dari otoritas sertifikasi. Kunci privat adalah separuh rahasianya, dan bundel yang diterbitkan biasanya berupa sertifikat ditambah rantainya ditambah kunci privat dalam satu berkas.
Uji pertama hanya perlu satu perintah. Arahkan openssl ke berkas itu dan minta ia mengurai struktur sertifikat:
openssl x509 -in client.crt -noout -subject -issuer
Jika itu gagal dengan kesalahan tidak dapat dimuat atau PEM, berkas itu bukan sertifikat X.509 apa pun nama yang Anda berikan. Mengganti nama tidak menulis ulang ASN.1 di dalamnya, dan membungkus baris kunci publik dalam teks tajuk PEM juga tidak.
Apakah profil itu meminta sertifikat sama sekali?
Sertifikat klien adalah salah satu metode autentikasi di antara beberapa, dan banyak profil TLS yang berfungsi tidak pernah memintanya. Server dapat mengautentikasi pengguna melalui plugin, nama pengguna dan kata sandi, atau backend token, sambil tetap menuntut klien memverifikasi identitas server. Jika profil tidak membawa direktif sertifikat klien, tidak ada sertifikat yang akan pernah diminta, dan tidak ada konversi yang akan membuat gateway memintanya.
Konfigurasi kunci statis yang lebih tua adalah kasus ketiga. Itu mendahului jabat tangan TLS dan mengharapkan berkas rahasia yang dibagikan sebelumnya, itulah sebabnya menempelkan kunci publik ke bidang itu juga tidak bisa berhasil. Bacalah apa yang sebenarnya diminta profil sebelum memutuskan bahwa kredensialnya salah.
Apa yang bisa dan tidak bisa dilakukan pengodean ulang
Kunci privat memang memiliki wadah alternatif yang sah. Kunci RSA atau EC yang sama dapat ditulis sebagai PEM tradisional, sebagai PKCS#8, atau di dalam bundel PKCS#12, dan alat akan dengan senang hati mengonversi di antaranya. Kunci publik punya cerita serupa: ssh-keygen dapat mengeluarkan bentuk RFC 4716 dari kunci SSH, dan OpenSSH juga memahami format sertifikatnya sendiri. Semua itu adalah representasi, dan representasi bukanlah kepercayaan.
Apa yang tidak bisa dilakukan konversi adalah membuat tanda tangan dari otoritas sertifikasi yang belum pernah melihat kunci Anda. Sertifikat adalah pernyataan penerbit bahwa kunci publik tertentu milik subjek tertentu untuk tujuan tertentu. Pengodean ulang mempertahankan bita kunci dan membiarkan pernyataannya absen, sehingga gateway tidak punya apa pun untuk divalidasi terhadap penyimpanan kepercayaannya.
Inilah langkah di mana sebagian besar upaya diam-diam gagal: berkas kini berakhiran .crt, klien membacanya tanpa keluhan, dan jabat tangan tetap gagal karena pihak lawan tidak dapat membangun rantai ke penerbit tepercaya.
Di mana otoritas sertifikasi masuk ke dalam gambaran
Pendaftaran sungguhan dimulai dengan pasangan kunci yang Anda kendalikan dan permintaan penandatanganan sertifikat yang membawa subjek yang diharapkan operator. Operator memverifikasi hak, menandatangani permintaan dengan kunci CA, dan mengembalikan sertifikat terbit beserta rantai perantara apa pun yang harus disajikan klien. Klien lalu membutuhkan sertifikat CA yang menandatanganinya, karena itulah yang memungkinkannya memastikan bahwa server yang diajak bicara termasuk dalam penyebaran yang sama.
Berkas terakhir itu mudah dilupakan dan mustahil digantikan. Kunci penandatanganan CA itu sendiri tidak pernah menjadi bagian dari konfigurasi klien, dan tidak ada konversi lokal yang menghasilkan rantai yang seharusnya Anda terima.
Apa biaya penggunaan ulang kunci SSH bagi Anda
Misalkan sebuah konversi memang menghasilkan sesuatu yang dapat diterima. Menggunakan ulang satu pasangan kunci untuk akses SSH dan autentikasi VPN tetap menggabungkan dua keputusan keamanan yang independen. Menghapus entri authorized_keys menghentikan login SSH, dan itu tidak melakukan apa pun terhadap sertifikat yang telah diterbitkan CA VPN untuk kunci publik yang sama. Sisi VPN dicabut melalui mekanismenya sendiri, yaitu daftar pencabutan sertifikat atau catatan pendaftaran operator.
Jadi daftar periksa berakhir dengan syarat berhenti, bukan trik. Jika openssl tidak mengurai berkas itu sebagai sertifikat, hentikan konversi dan jelaskan apa yang Anda punya: kunci SSH, sertifikat SSH, sertifikat X.509, kunci privat, atau bundel. Jika profil tidak meminta sertifikat klien, berhenti dan tanyakan metode autentikasi apa yang diharapkan server. Hanya ketika kedua jawaban mengarah ke X.509 pendaftaran menjadi langkah berikutnya, dan percakapan itu jauh lebih cepat dengan kata benda yang tepat di kalimat pertama.