Pengantar
Certificate Authority (CA) adalah entitas yang bertanggung jawab untuk menerbitkan sertifikat digital untuk memverifikasi identitas di internet. Meskipun CA publik adalah pilihan populer untuk memverifikasi identitas situs web dan layanan lain yang disediakan untuk masyarakat umum, CA pribadi biasanya digunakan untuk grup tertutup dan layanan pribadi.
Membangun Otoritas Sertifikat pribadi akan memungkinkan Anda untuk mengonfigurasi, menguji, dan menjalankan program yang memerlukan koneksi terenkripsi antara klien dan server. Dengan CA pribadi, Anda dapat menerbitkan sertifikat untuk pengguna, server, atau program dan layanan individual dalam infrastruktur Anda.
Beberapa contoh program di Linux yang menggunakan CA privatnya sendiri adalah OpenVPN dan Puppet . Anda juga dapat mengonfigurasi server web untuk menggunakan sertifikat yang dikeluarkan oleh CA pribadi agar lingkungan pengembangan dan staging cocok dengan server produksi yang menggunakan TLS untuk mengenkripsi koneksi.
Dalam panduan ini, Anda akan menyiapkan Otoritas Sertifikat pribadi di server Ubuntu 22.04, lalu membuat dan menandatangani sertifikat pengujian menggunakan CA baru Anda. Anda juga akan mempelajari cara mengimpor sertifikat publik server CA ke penyimpanan sertifikat sistem operasi Anda sehingga Anda dapat memverifikasi rantai kepercayaan antara CA dan server atau pengguna jarak jauh. Terakhir, Anda akan mempelajari cara mencabut sertifikat dan mendistribusikan Daftar Pencabutan Sertifikat untuk memastikan hanya pengguna dan sistem yang berwenang yang dapat menggunakan layanan yang mengandalkan CA Anda.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan akses ke server Ubuntu 22.04 untuk meng-host server CA Anda. Anda perlu mengonfigurasi non-root pengguna dengan sudo
hak istimewa sebelum Anda memulai panduan ini. Anda dapat mengikuti panduan penyiapan server awal Ubuntu 22.04 kami untuk menyiapkan pengguna dengan izin yang sesuai. Tutorial tertaut juga akan menyiapkan firewall , yang diasumsikan ada di seluruh panduan ini.
Server ini akan disebut sebagai Server CA dalam tutorial ini.
Pastikan bahwa CA Server adalah sistem yang berdiri sendiri. Ini hanya akan digunakan untuk mengimpor, menandatangani, dan mencabut permintaan sertifikat. Seharusnya tidak menjalankan layanan lain, dan idealnya akan offline atau dimatikan sepenuhnya saat Anda tidak aktif bekerja dengan CA Anda.
Catatan: Bagian terakhir dari tutorial ini adalah opsional jika Anda ingin mempelajari tentang menandatangani dan mencabut sertifikat. Jika Anda memilih untuk menyelesaikan langkah-langkah latihan tersebut, Anda akan memerlukan server Ubuntu 22.04 kedua atau Anda juga dapat menggunakan komputer Linux lokal Anda sendiri yang menjalankan Ubuntu atau Debian, atau distribusi yang diturunkan dari keduanya.
Langkah 1 — Memasang Easy-RSA
Tugas pertama dalam tutorial ini adalah menginstal easy-rsa
set skrip di CA Server Anda. easy-rsa
adalah alat manajemen Otoritas Sertifikat yang akan Anda gunakan untuk menghasilkan kunci pribadi, dan sertifikat root publik, yang kemudian akan Anda gunakan untuk menandatangani permintaan dari klien dan server yang akan mengandalkan CA Anda.
Masuk ke Server CA Anda sebagai pengguna sudo non-root yang Anda buat selama langkah penyiapan awal dan jalankan yang berikut:
- sudo apt update
- sudo apt install easy-rsa
Anda akan diminta untuk mengunduh paket dan menginstalnya. Tekan y
untuk mengonfirmasi bahwa Anda ingin menginstal paket.
Pada titik ini Anda memiliki semua yang Anda perlukan dan siap untuk menggunakan Easy-RSA. Pada langkah berikutnya Anda akan membuat Infrastruktur Kunci Publik, lalu mulai membangun Otoritas Sertifikat Anda.
Langkah 2 — Menyiapkan Direktori Infrastruktur Kunci Publik
Sekarang Anda telah menginstal easy-rsa
, sekarang saatnya untuk membuat kerangka Infrastruktur Kunci Publik (PKI) di Server CA. Pastikan Anda masih masuk sebagai pengguna non-root dan buat easy-rsa
direktori. Pastikan Anda tidak menggunakan sudo untuk menjalankan salah satu dari perintah berikut, karena pengguna biasa Anda harus mengelola dan berinteraksi dengan CA tanpa hak istimewa yang lebih tinggi.
- mkdir ~/easy-rsa
Ini akan membuat direktori baru bernama easy-rsa
di folder rumah Anda. Kami akan menggunakan direktori ini untuk membuat tautan simbolis yang menunjuk ke easy-rsa
paket file yang telah kita instal pada langkah sebelumnya. File-file ini terletak di /usr/share/easy-rsa
folder di Server CA.
Buat symlink dengan ln
perintah:
- ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Catatan: Sementara panduan lain mungkin menginstruksikan Anda untuk menyalin easy-rsa
paket file ke direktori PKI Anda, tutorial ini mengadopsi pendekatan symlink. Akibatnya, setiap pembaruan pada easy-rsa
paket akan secara otomatis tercermin dalam skrip PKI Anda.
Untuk membatasi akses ke direktori PKI baru Anda, pastikan bahwa hanya pemilik yang dapat mengaksesnya menggunakan chmod
perintah:
- chmod 700 /home/sammy/easy-rsa
Terakhir, inisialisasi PKI di dalam easy-rsa
direktori:
- cd ~/easy-rsa
- ./easyrsa init-pki
Outputinit-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /home/sammy/easy-rsa/pki
Setelah menyelesaikan bagian ini, Anda memiliki direktori yang berisi semua file yang diperlukan untuk membuat Otoritas Sertifikat. Di bagian berikutnya Anda akan membuat kunci pribadi dan sertifikat publik untuk CA Anda.
Langkah 3 — Membuat Otoritas Sertifikat
Sebelum Anda dapat membuat kunci dan sertifikat pribadi CA, Anda perlu membuat dan mengisi file bernama vars
dengan beberapa nilai default. Pertama Anda akan cd
ke dalam easy-rsa
direktori, maka Anda akan membuat dan mengedit vars
file dengan nano
atau editor teks pilihan Anda:
- cd ~/easy-rsa
- nano vars
Setelah file dibuka, tempel di baris berikut dan edit setiap nilai yang disorot untuk mencerminkan info organisasi Anda sendiri. Bagian penting di sini adalah untuk memastikan bahwa Anda tidak mengosongkan nilai apa pun:
~/easy-rsa/varsset_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "NewYork"
set_var EASYRSA_REQ_CITY "New York City"
set_var EASYRSA_REQ_ORG "DigitalOcean"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "Community"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Setelah selesai, simpan dan tutup file. Jika Anda menggunakan nano
, Anda dapat melakukannya dengan menekan CTRL+X
, lalu Y
dan ENTER
untuk mengkonfirmasi. Anda sekarang siap untuk membangun CA Anda.
Untuk membuat pasangan kunci publik dan pribadi root untuk Otoritas Sertifikat Anda, jalankan ./easy-rsa
perintah lagi, kali ini dengan build-ca
pilihan:
- ./easyrsa build-ca
Pada output, Anda akan melihat beberapa baris tentang versi OpenSSL dan Anda akan diminta untuk memasukkan frasa sandi untuk pasangan kunci Anda. Pastikan untuk memilih frasa sandi yang kuat, dan catat di tempat yang aman. Anda harus memasukkan frasa sandi kapan pun Anda perlu berinteraksi dengan CA Anda, misalnya untuk menandatangani atau mencabut sertifikat.
Anda juga akan diminta untuk mengkonfirmasi Common Name (CN) untuk CA Anda. CN adalah nama yang digunakan untuk merujuk ke mesin ini dalam konteks Otoritas Sertifikat. Anda dapat memasukkan string karakter apa pun untuk Nama Umum CA tetapi demi kesederhanaan, tekan ENTER untuk menerima nama default.
Output. . .
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
. . .
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/sammy/easy-rsa/pki/ca.crt
Catatan: Jika Anda tidak ingin dimintai sandi setiap kali berinteraksi dengan CA, Anda dapat menjalankan build-ca
perintah dengan nopass
pilihan, seperti ini:
- ./easyrsa build-ca nopass
Anda sekarang memiliki dua file penting — ~/easy-rsa/pki/ca.crt
dan ~/easy-rsa/pki/private/ca.key
— yang membentuk komponen publik dan pribadi dari Otoritas Sertifikat.
-
ca.crt
adalah file sertifikat publik CA. Pengguna, server, dan klien akan menggunakan sertifikat ini untuk memverifikasi bahwa mereka adalah bagian dari web kepercayaan yang sama. Setiap pengguna dan server yang menggunakan CA Anda harus memiliki salinan file ini. Semua pihak akan mengandalkan sertifikat publik untuk memastikan bahwa seseorang tidak meniru sistem dan melakukan serangan Man-in-the-middle. -
ca.key
adalah kunci pribadi yang digunakan CA untuk menandatangani sertifikat untuk server dan klien. Jika penyerang mendapatkan akses ke CA Anda dan, pada gilirannya,ca.key
. Anda file, Anda harus menghancurkan CA Anda. Inilah sebabnya mengapaca.key
Anda file harus hanya berada di mesin CA Anda dan, idealnya, mesin CA Anda harus tetap offline saat tidak menandatangani permintaan sertifikat sebagai tindakan keamanan ekstra.
Dengan itu, CA Anda sudah siap dan siap digunakan untuk menandatangani permintaan sertifikat, dan untuk mencabut sertifikat.
Langkah 4 — Mendistribusikan Sertifikat Publik Otoritas Sertifikat Anda
Sekarang CA Anda dikonfigurasi dan siap untuk bertindak sebagai akar kepercayaan untuk sistem apa pun yang ingin Anda konfigurasikan untuk menggunakannya. Anda dapat menambahkan sertifikat CA ke server OpenVPN, server web, server email, dan sebagainya. Setiap pengguna atau server yang perlu memverifikasi identitas pengguna atau server lain di jaringan Anda harus memiliki salinan ca.crt
file yang diimpor ke penyimpanan sertifikat sistem operasi mereka.
Untuk mengimpor sertifikat publik CA ke sistem Linux kedua seperti server lain atau komputer lokal, pertama-tama dapatkan salinan ca.crt
file dari server CA Anda. Anda dapat menggunakan cat
perintah untuk mengeluarkannya di terminal, lalu salin dan tempel ke file di komputer kedua yang mengimpor sertifikat. Anda juga dapat menggunakan alat seperti scp
, rsync
untuk mentransfer file antar sistem. Namun kami akan menggunakan salin dan tempel dengan nano
dalam langkah ini karena akan bekerja pada semua sistem.
Sebagai pengguna non-root Anda di CA Server, jalankan perintah berikut:
- cat ~/easy-rsa/pki/ca.crt
Akan ada output di terminal Anda yang mirip dengan berikut ini:
Output-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL
BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw
. . .
. . .
-----END CERTIFICATE-----
Salin semuanya, termasuk -----BEGIN CERTIFICATE------code> dan
-----AKHIR SERTIFIKAT------code> garis dan tanda hubung.
Pada sistem Linux kedua Anda gunakan nano
atau editor teks pilihan Anda untuk membuka file bernama /tmp/ca.crt
:
- nano /tmp/ca.crt
Tempel konten yang baru saja Anda salin dari CA Server ke editor. Setelah selesai, simpan dan tutup file. Jika Anda menggunakan nano
, Anda dapat melakukannya dengan menekan CTRL+X
, lalu Y
dan ENTER
untuk mengonfirmasi.
Sekarang Anda memiliki salinan ca.crt
file di sistem Linux kedua Anda, sekarang saatnya untuk mengimpor sertifikat ke penyimpanan sertifikat sistem operasinya.
Pada sistem berbasis Ubuntu dan Debian, jalankan perintah berikut sebagai pengguna non-root untuk mengimpor sertifikat:
Distribusi turunan Ubuntu dan Debian- sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
- sudo update-ca-certificates
Untuk mengimpor sertifikat CA Server pada sistem berbasis CentOS, Fedora, atau RedHat, salin dan tempel konten file ke sistem seperti pada contoh sebelumnya dalam file bernama /tmp/ca.crt
. Selanjutnya, Anda akan menyalin sertifikat ke /etc/pki/ca-trust/source/anchors/
, lalu jalankan update-ca-trust
perintah.
- sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
- sudo update-ca-trust
Sekarang sistem Linux kedua Anda akan mempercayai sertifikat apa pun yang telah ditandatangani oleh server CA.
Catatan: Jika Anda menggunakan CA dengan server web dan menggunakan Firefox sebagai browser, Anda perlu mengimpor ca.crt
publik sertifikat ke Firefox secara langsung. Firefox tidak menggunakan penyimpanan sertifikat sistem operasi lokal. Untuk detail tentang cara menambahkan sertifikat CA Anda ke Firefox, silakan lihat artikel dukungan ini dari Mozilla tentang Menyiapkan Otoritas Sertifikat (CA) di Firefox.
Jika Anda menggunakan CA untuk berintegrasi dengan lingkungan Windows atau komputer desktop, silakan lihat dokumentasi tentang cara menggunakan certutil.exe
untuk memasang sertifikat CA.
Jika Anda menggunakan tutorial ini sebagai prasyarat untuk tutorial lain, atau terbiasa dengan cara menandatangani dan mencabut sertifikat, Anda dapat berhenti di sini. Jika Anda ingin mempelajari lebih lanjut tentang cara menandatangani dan mencabut sertifikat, maka bagian opsional berikut akan menjelaskan setiap proses secara mendetail.
(Opsional) — Membuat Permintaan Penandatanganan Sertifikat dan Mencabut Sertifikat
Bagian berikut dari tutorial adalah opsional. Jika Anda telah menyelesaikan semua langkah sebelumnya, maka Anda memiliki Otoritas Sertifikat yang sepenuhnya dikonfigurasi dan berfungsi yang dapat Anda gunakan sebagai prasyarat untuk tutorial lainnya. Anda dapat mengimpor ca.crt
CA Anda file dan verifikasi sertifikat di jaringan Anda yang telah ditandatangani oleh CA Anda.
Jika Anda ingin berlatih dan mempelajari lebih lanjut tentang cara menandatangani permintaan sertifikat, dan cara mencabut sertifikat, maka bagian opsional ini akan menjelaskan cara kerja kedua proses tersebut.
(Opsional) — Membuat dan Menandatangani Permintaan Sertifikat Praktik
Sekarang setelah CA siap digunakan, Anda dapat berlatih membuat kunci pribadi dan permintaan sertifikat untuk memahami proses penandatanganan dan distribusi.
Permintaan Penandatanganan Sertifikat (CSR) terdiri dari tiga bagian:kunci publik, informasi pengidentifikasi tentang sistem yang meminta, dan tanda tangan dari permintaan itu sendiri, yang dibuat menggunakan kunci pribadi pihak yang meminta. Kunci pribadi akan dirahasiakan, dan akan digunakan untuk mengenkripsi informasi yang kemudian dapat didekripsi oleh siapa saja yang memiliki sertifikat publik yang ditandatangani.
Langkah-langkah berikut akan dijalankan pada sistem Ubuntu atau Debian kedua Anda, atau distribusi yang berasal dari salah satu dari itu. Ini bisa berupa server jarak jauh lain, atau mesin Linux lokal seperti laptop atau komputer desktop. Sejak easy-rsa
tidak tersedia secara default di semua sistem, kami akan menggunakan openssl
alat untuk membuat kunci pribadi dan sertifikat praktik.
openssl
biasanya diinstal secara default di sebagian besar distribusi Linux, tetapi untuk memastikan, jalankan yang berikut ini di sistem Anda:
- sudo apt update
- sudo apt install openssl
Ketika Anda diminta untuk menginstal openssl
masukkan y
untuk melanjutkan dengan langkah-langkah instalasi. Sekarang Anda siap membuat praktik CSR dengan openssl
.
Langkah pertama yang harus Anda selesaikan untuk membuat CSR adalah membuat kunci pribadi. Untuk membuat kunci pribadi menggunakan openssl
, buat practice-csr
direktori dan kemudian menghasilkan kunci di dalamnya. Kami akan membuat permintaan ini untuk server fiksi yang disebut sammy-server
, bukan membuat sertifikat yang digunakan untuk mengidentifikasi pengguna atau CA lain.
- mkdir ~/practice-csr
- cd ~/practice-csr
- openssl genrsa -out sammy-server.key
Sekarang setelah Anda memiliki kunci pribadi, Anda dapat membuat CSR yang sesuai, sekali lagi menggunakan openssl
kegunaan. Anda akan diminta untuk mengisi sejumlah bidang seperti Negara, Negara Bagian, dan Kota. Anda dapat memasukkan .
jika Anda ingin mengosongkan bidang, tetapi perlu diketahui bahwa jika ini adalah CSR nyata, sebaiknya gunakan nilai yang benar untuk lokasi dan organisasi Anda:
- openssl req -new -key sammy-server.key -out sammy-server.req
Output. . .
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:New York
Locality Name (eg, city) [Default City]:New York City
Organization Name (eg, company) [Default Company Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:Community
Common Name (eg, your name or your server's hostname) []:sammy-server
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Jika Anda ingin menambahkan nilai tersebut secara otomatis sebagai bagian dari openssl
permintaan alih-alih melalui prompt interaktif, Anda dapat meneruskan -subj
argumen ke OpenSSL. Pastikan untuk mengedit nilai yang disorot agar sesuai dengan lokasi latihan, organisasi, dan nama server Anda:
- openssl req -new -key sammy-server.key -out server.req -subj \
- /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server
Untuk memverifikasi konten CSR, Anda dapat membaca di file permintaan dengan openssl
dan periksa kolom di dalamnya:
- openssl req -in sammy-server.req -noout -subject
Outputsubject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server
Setelah Anda puas dengan subjek permintaan sertifikat latihan Anda, salin sammy-server.req
file ke server CA Anda menggunakan scp
:
- scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req
Pada langkah ini Anda membuat Permintaan Penandatanganan Sertifikat untuk server fiktif yang disebut sammy-server
. Dalam skenario dunia nyata, permintaan bisa dari sesuatu seperti server web pementasan atau pengembangan yang memerlukan sertifikat TLS untuk pengujian; atau bisa juga berasal dari server OpenVPN yang meminta sertifikat agar pengguna dapat terhubung ke VPN. Pada langkah berikutnya, kami akan melanjutkan untuk menandatangani permintaan penandatanganan sertifikat menggunakan kunci pribadi CA Server.
(Opsional) — Menandatangani CSR
Pada langkah sebelumnya, Anda membuat permintaan dan kunci sertifikat latihan untuk server fiktif. Anda menyalinnya ke /tmp
direktori di server CA Anda, meniru proses yang akan Anda gunakan jika Anda memiliki klien atau server nyata yang mengirimi Anda permintaan CSR yang perlu ditandatangani.
Melanjutkan skenario fiktif, sekarang CA Server perlu mengimpor sertifikat latihan dan menandatanganinya. Setelah permintaan sertifikat divalidasi oleh CA dan diteruskan kembali ke server, klien yang mempercayai Otoritas Sertifikat juga akan dapat mempercayai sertifikat yang baru diterbitkan.
Karena kami akan beroperasi di dalam PKI CA di mana easy-rsa
utilitas tersedia, langkah-langkah penandatanganan akan menggunakan easy-rsa
utilitas untuk membuat segalanya lebih mudah, dibandingkan dengan menggunakan openssl
langsung seperti yang kita lakukan pada contoh sebelumnya.
Langkah pertama untuk menandatangani CSR fiktif adalah mengimpor permintaan sertifikat menggunakan easy-rsa
naskah:
- cd ~/easy-rsa
- ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output. . .
The request has been successfully imported with a short name of: sammy-server
You may now use this name to perform signing operations on this request.
Sekarang Anda dapat menandatangani permintaan dengan menjalankan easyrsa
skrip dengan sign-req
pilihan, diikuti dengan jenis permintaan dan Nama Umum yang disertakan dalam CSR. Jenis permintaan dapat berupa salah satu dari klien
, server
, atau ca
. Karena kita berlatih dengan sertifikat untuk server fiktif, pastikan untuk menggunakan server
jenis permintaan:
- ./easyrsa sign-req server sammy-server
Di output, Anda akan diminta untuk memverifikasi bahwa permintaan tersebut berasal dari sumber tepercaya. Ketik ya
lalu tekan ENTER
untuk mengonfirmasi ini:
OutputYou are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 825 days:
subject=
countryName = US
stateOrProvinceName = New York
localityName = New York City
organizationName = DigitalOcean
organizationalUnitName = Community
commonName = sammy-server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
. . .
Jika Anda mengenkripsi kunci CA, Anda akan dimintai sandi pada saat ini.
Anda akan menerima output seperti berikut:
OutputCheck that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :ASN.1 12:'New York'
localityName :ASN.1 12:'New York City'
organizationName :ASN.1 12:'DigitalOcean'
organizationalUnitName:ASN.1 12:'Community'
commonName :ASN.1 12:'sammy-server'
Certificate is to be certified until Jul 21 13:59:08 2024 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt
Setelah langkah-langkah tersebut selesai, Anda telah menandatangani sammy-server.req
CSR menggunakan kunci pribadi CA Server di /home/sammy/easy-rsa/pki/private/ca.key
. sammy-server.crt
yang dihasilkan file berisi kunci enkripsi publik server latihan, serta tanda tangan baru dari CA Server. Maksud dari tanda tangan adalah untuk memberi tahu siapa pun yang memercayai CA bahwa mereka juga dapat memercayai sammy-server
sertifikat.
Jika permintaan ini untuk server nyata seperti server web atau server VPN, langkah terakhir di CA Server adalah mendistribusikan sammy-server.crt
yang baru dan ca.crt
file dari CA Server ke server jauh yang membuat permintaan CSR:
- scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
- scp pki/ca.crt sammy@your_server_ip:/tmp
Pada titik ini, Anda akan dapat menggunakan sertifikat yang diterbitkan dengan sesuatu seperti server web, VPN, alat manajemen konfigurasi, sistem basis data, atau untuk tujuan otentikasi klien.
(Opsional) — Mencabut Sertifikat
Terkadang, Anda mungkin perlu mencabut sertifikat untuk mencegah pengguna atau server menggunakannya. Mungkin laptop seseorang dicuri, server web disusupi, atau karyawan atau kontraktor telah meninggalkan organisasi Anda.
Untuk mencabut sertifikat, proses umumnya mengikuti langkah-langkah berikut:
- Cabut sertifikat dengan
./easyrsa cabut client_name
perintah. - Buat CRL baru dengan
./easyrsa gen-crl
perintah. - Transfer
crl.pem
yang telah diperbarui file ke server atau server yang mengandalkan CA Anda, dan pada sistem tersebut salin ke direktori atau direktori yang diperlukan untuk program yang merujuknya. - Mulai ulang semua layanan yang menggunakan CA dan file CRL Anda.
Anda dapat menggunakan proses ini untuk mencabut sertifikat yang telah Anda keluarkan kapan saja. Kami akan membahas setiap langkah secara mendetail di bagian berikut, dimulai dengan revoke
perintah.
Mencabut Sertifikat
Untuk mencabut sertifikat, navigasikan ke easy-rsa
direktori di server CA Anda:
- cd ~/easy-rsa
Selanjutnya, jalankan easyrsa
skrip dengan revoke
pilihan, diikuti dengan nama klien yang ingin Anda cabut. Mengikuti contoh latihan di atas, Nama Umum sertifikat adalah sammy-server
:
- ./easyrsa revoke sammy-server
Ini akan meminta Anda untuk mengonfirmasi pencabutan dengan memasukkan yes
:
OutputPlease confirm you wish to revoke the certificate with the following subject:
subject=
commonName = sammy-server
Type the word 'yes' to continue, or any other input to abort.
Continue with revocation: yes
. . .
Revoking Certificate 8348B3F146A765581946040D5C4D590A
. . .
Perhatikan nilai yang disorot pada Mencabut Sertifikat
garis. Nilai ini adalah nomor seri unik dari sertifikat yang sedang dicabut. Jika Anda ingin memeriksa daftar pencabutan di langkah terakhir bagian ini untuk memverifikasi bahwa sertifikat ada di dalamnya, Anda memerlukan nilai ini.
Setelah mengonfirmasi tindakan, CA akan mencabut sertifikat. Namun, sistem jarak jauh yang mengandalkan CA tidak memiliki cara untuk memeriksa apakah ada sertifikat yang telah dicabut. Pengguna dan server masih dapat menggunakan sertifikat hingga Daftar Pencabutan Sertifikat (CRL) CA didistribusikan ke semua sistem yang mengandalkan CA.
Pada langkah berikutnya Anda akan membuat CRL atau memperbarui crl.pem
yang sudah ada berkas.
Membuat Daftar Pencabutan Sertifikat
Sekarang setelah Anda mencabut sertifikat, penting untuk memperbarui daftar sertifikat yang dicabut di server CA Anda. Setelah Anda memiliki daftar pencabutan yang diperbarui, Anda akan dapat memberi tahu pengguna dan sistem mana yang memiliki sertifikat yang valid di CA Anda.
Untuk menghasilkan CRL, jalankan easy-rsa
perintah dengan gen-crl
pilihan saat masih di dalam ~/easy-rsa
direktori:
- ./easyrsa gen-crl
Jika Anda telah menggunakan frasa sandi saat membuat ca.key
file, Anda akan diminta untuk memasukkannya. gen-crl
perintah akan menghasilkan file bernama crl.pem
, yang berisi daftar terbaru dari sertifikat yang dicabut untuk CA tersebut.
Selanjutnya Anda harus mentransfer crl.pem
yang diperbarui file ke semua server dan klien yang mengandalkan CA ini setiap kali Anda menjalankan gen-crl
memerintah. Jika tidak, klien dan sistem akan tetap dapat mengakses layanan dan sistem yang menggunakan CA Anda, karena layanan tersebut perlu mengetahui tentang status pencabutan sertifikat.
Mentransfer Daftar Pencabutan Sertifikat
Sekarang setelah Anda membuat CRL di server CA Anda, Anda perlu mentransfernya ke sistem jarak jauh yang mengandalkan CA Anda. Untuk mentransfer file ini ke server Anda, Anda dapat menggunakan scp
perintah.
Catatan: Tutorial ini menjelaskan cara membuat dan mendistribusikan CRL secara manual. Meskipun ada metode yang lebih kuat dan otomatis untuk mendistribusikan dan memeriksa daftar pencabutan seperti OCSP-Stapling, mengonfigurasi metode tersebut berada di luar cakupan artikel ini.
Pastikan Anda masuk ke server CA Anda sebagai pengguna non-root dan menjalankan perintah berikut, menggantikan IP server atau nama DNS Anda sendiri sebagai pengganti your_server_ip
:
- scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp
Sekarang setelah file berada di sistem jarak jauh, langkah terakhir adalah memperbarui layanan apa pun dengan salinan baru daftar pencabutan.
Memperbarui Layanan yang Mendukung CRL
Cantumkan langkah-langkah yang perlu Anda gunakan untuk memperbarui layanan yang menggunakan crl.pem
file berada di luar cakupan tutorial ini. Secara umum Anda perlu menyalin crl.pem
file ke lokasi yang diharapkan layanan dan kemudian restart menggunakan systemctl
.
Setelah Anda memperbarui layanan dengan crl.pem
baru file, layanan Anda akan dapat menolak koneksi dari klien atau server yang menggunakan sertifikat yang dicabut.
Memeriksa dan Memverifikasi Konten CRL
Jika Anda ingin memeriksa file CRL, misalnya untuk mengonfirmasi daftar sertifikat yang dicabut, gunakan openssl
berikut perintah dari dalam easy-rsa
your Anda direktori di server CA Anda:
- cd ~/easy-rsa
- openssl crl -in pki/crl.pem -noout -text
Anda juga dapat menjalankan perintah ini di server atau sistem apa pun yang memiliki openssl
alat diinstal dengan salinan crl.pem
mengajukan. Misalnya, jika Anda mentransfer crl.pem
file ke sistem kedua Anda dan ingin memverifikasi bahwa sammy-server
sertifikat dicabut, Anda dapat menggunakan openssl
perintah seperti berikut, mengganti nomor seri yang Anda catat sebelumnya ketika Anda mencabut sertifikat di tempat yang disorot di sini:
- openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output Serial Number: 8348B3F146A765581946040D5C4D590A
Revocation Date: Apr 18 14:00:37 2022 GMT
Perhatikan bagaimana grep
perintah digunakan untuk memeriksa nomor seri unik yang Anda catat di langkah pencabutan. Sekarang Anda dapat memverifikasi konten Daftar Pencabutan Sertifikat di sistem apa pun yang bergantung padanya untuk membatasi akses ke pengguna dan layanan.
Kesimpulan
Dalam tutorial ini Anda membuat Otoritas Sertifikat pribadi menggunakan paket Easy-RSA pada server Ubuntu 22.04 yang berdiri sendiri. You explored how the trust model works between parties that rely on the CA. You also created and signed a Certificate Signing Request (CSR) for a practice server and then learned how to revoke a certificate. Finally, you learned how to generate and distribute a Certificate Revocation List (CRL) for any system that relies on your CA to ensure that users or servers that should not access services are prevented from doing so.
Now you can issue certificates for users and use them with services like OpenVPN. You can also use your CA to configure development and staging web servers with certificates to secure your non-production environments. Using a CA with TLS certificates during development can help ensure that your code and environments match your production environment as closely as possible.
If you would like to learn more about how to use OpenSSL, our OpenSSL Essentials:Working with SSL Certificates, Private Keys and CSRs tutorial has lots of additional information to help you become more familiar with OpenSSL fundamentals.