GNU/Linux >> Belajar Linux >  >> Linux

Membuat sertifikat CA tersedia untuk alat baris perintah Linux

Semua browser web grafis yang terkenal dikirimkan dengan kumpulan sertifikat Certificate Authority (CA) yang dikenal dan tepercaya, sehingga saat Anda mengunjungi situs dengan sertifikat yang ditandatangani oleh salah satu sertifikat CA tersebut, browser juga memercayai situs tersebut. Jika tidak, browser akan melewati serangkaian peringatan dan opsi untuk menambahkan pengecualian setelah mendorong Anda untuk memverifikasi sertifikat. Ada juga opsi untuk mengimpor sertifikat CA tambahan, seperti yang didokumentasikan untuk Firefox.

Menggunakan sertifikat CA dengan utilitas baris perintah

Sertifikat CA juga dapat tersedia di baris perintah. Paket yang disertakan dengan banyak distribusi, termasuk Red Hat Enterprise Linux dan Fedora, disebut ca-certificates . Paket ini dideskripsikan sendiri sebagai berisi "kumpulan sertifikat CA yang dipilih oleh Mozilla Foundation untuk digunakan dengan PKI Internet". Paket ini mencakup sertifikat CA terkenal yang sama yang ditemukan di Firefox. Ini dapat digunakan oleh aplikasi CLI apa pun yang melihat langsung ke /etc/pki/ca-trust/extracted direktori, bersama dengan aplikasi CLI yang memuat salah satu modul kepercayaan PKCS#11.

Utilitas baris perintah seperti curl dan wget dapat menggunakan sertifikat CA ini untuk memvalidasi sertifikat server. Banyak alat yang disediakan dengan Red Hat Enterprise Linux juga menggunakan sertifikat ini, termasuk untuk interaksi dengan dukungan Red Hat (redhat-support-tool ), cluster Red Hat OpenShift (oc ), dan server Red Hat Satellite 6 (hammer ). Banyak interaksi lain dengan antarmuka API server juga menggunakan SSL/TLS dan harus memvalidasi sertifikat yang ditawarkan.

Dengan ca-certificates paket terinstal, saya dapat menggunakan curl untuk melihat atau mengunduh konten URL dari situs menggunakan sertifikat yang ditandatangani oleh CA terkenal tanpa kesalahan: 

$ curl https://access.redhat.com -o /tmp/sample

% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 103k 0 103k 0 0 339k 0 --:--:-- --:--:-- --:--:-- 337k

Jika saya mencoba mengakses situs internal yang memiliki sertifikat yang ditandatangani sendiri (atau sertifikat yang ditandatangani oleh CA yang tidak disertakan dengan ca-certificates package) Saya mendapatkan pesan yang menyatakan bahwa koneksi ditolak karena sertifikat tidak tepercaya:

$ curl https://somehost.internal-FQDN/

curl: (60) SSL certificate problem: self-signed certificate in certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.

Beberapa dokumentasi mendorong koneksi sederhana yang tidak aman untuk situs internal dan tepercaya ini. Curl dapat terhubung secara tidak aman dengan -k pilihan:

$ curl -k https://somehost.internal-FQDN/

Atau, jika saya telah memverifikasi dan mengunduh sertifikat CA internal saya, saya dapat memberi tahu curl untuk memverifikasi situs dengan sertifikat itu:

$ curl --cacert /path/to/cert-file https://somehost.internal-FQDN/

Program lain serupa. Dengan alat OpenShift dan Origin untuk mengelola aplikasi (oc ), koneksi ke kluster default yang diinstal mungkin tidak mengenali sertifikat CA yang dihasilkan dan ditandatangani sendiri yang digunakan kluster untuk menandatangani sertifikat internal lainnya. Masalah ini mencakup koneksi ke CodeReady Containers:

$ oc login -u developer -p developer https://api.crc.testing:6443

The server uses a certificate signed by an unknown authority.

You can bypass the certificate check, but any data you send to the server could be intercepted by others. Use insecure connections? (y/n):

Jika Anda memiliki salinan sertifikat, tentukan sertifikat klien dengan --client-certificate="" opsi, atau sertifikat CA dengan --certificate-authority="" pilihan, saat menggunakan oc perintah.

Server Red Hat Satellite dan alat CLI hammer bekerja sama, tetapi sertifikat CA dapat ditentukan di baris perintah atau di ~/.hammer/cli_config.yml mengajukan. hammer perintah juga memiliki opsi untuk mengimpor sertifikat CA Satelit langsung ke .hammer . pengguna direktori konfigurasi:

$ hammer --fetch-ca-cert https://satellite.example.com

CA certificate for https://satellite.example.com was stored to 

..output omitted...

Perintah ini hanya membuat sertifikat tersedia untuk satu pengguna dan harus diulang untuk setiap pengguna di sistem. Untuk membuat sertifikat tersedia untuk semua pengguna di sistem, output dari perintah hammer bahkan menyarankan menggunakan ca-certificates .

Memperbarui ca-certificates untuk memvalidasi situs dengan sertifikat CA internal

Daripada secara manual menentukan sertifikat CA dengan setiap perintah, kita dapat menambahkan sertifikat CA internal kita ke kepercayaan CA yang disediakan oleh ca-certificates kemasan. Paket ini menyediakan struktur direktori di /etc/pki/ untuk mengelola sertifikat dan perintah update-ca-trust untuk mengelola "konfigurasi konsolidasi dan dinamis dari sertifikat CA dan kepercayaan terkait:"

$ ls /etc/pki/ca-trust/ 
ca-legacy.conf extracted README source

$ ls /etc/pki/ca-trust/source 
anchors blacklist ca-bundle.legacy.crt README 

Untuk menambahkan sertifikat, unduh, letakkan di /etc/pki/ca-trust/source/anchors direktori, lalu jalankan perintah update-ca-trust . Anda harus melakukan root untuk dua tugas ini:

$ sudo curl http://satellite.example.com/pub/katello-server-ca.crt -o /etc/pki/ca-trust/source/anchors/satellite-ca.crt
$ sudo update-ca-trust

Setelah perintah pembaruan dikeluarkan, sertifikat akan tersedia melalui /etc/pki/ca-trust/extracted pohon:

$ ls /etc/pki/ca-trust/extracted 
edk2 java openssl pem README

Aplikasi yang melihat ke direktori ini untuk memverifikasi sertifikat dapat menggunakan salah satu format yang disediakan. Perintah update menangani salinan, konversi, dan konsolidasi untuk berbagai format. Halaman manual untuk update-ca-trust memiliki informasi lebih lanjut tentang struktur direktori, format, dan cara sertifikat diakses, tetapi cara cepat untuk membuat daftar semua subjek sertifikat dalam bundel adalah dengan awk berikut dan openssl perintah:

$ awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Sekarang setelah saya menambahkan sertifikat CA untuk Server Satelit saya, saya dapat menggunakan curl tanpa opsi sertifikat tambahan untuk mengakses API:

$ curl --request GET --user admin https://satellite.example.com/katello/api/organizations 

Enter host password for user 'admin': 

{ "total": 1, "subtotal": 1,

...output omitted...

Hal yang sama berlaku untuk oc perintah, hammer perintah, dan banyak aplikasi baris perintah lainnya. Utilitas ini dapat menggunakan sertifikat yang dikelola oleh ca-trust untuk memvalidasi koneksi Anda.

[Ingin mempelajari lebih lanjut tentang keamanan? Lihat daftar periksa keamanan dan kepatuhan TI.]


Linux
  1. Sejarah baris perintah di Linux

  2. Microsoft Teams Sekarang Tersedia di Linux

  3. Editor teks baris perintah di Linux

  1. Kesalahan peramban sertifikat SSL

  2. Tersedia alternatif X11 yang ringan?

  3. Alat overclocking di Linux

  1. 5 alat sysadmin Linux favorit saya

  2. Membuat Partisi Recovery di Embedded Linux?

  3. Tidak mempercayai CA perantara di Linux?