Certificate Authority (CA) adalah entitas yang bertanggung jawab untuk menerbitkan sertifikat digital untuk membuat komunikasi menjadi aman. Bertindak sebagai pihak ketiga yang terpercaya bagi pemilik sertifikat dan pihak yang mengandalkan sertifikat.
Entitas Otoritas Sertifikat dapat berupa publik atau swasta. CA publik biasanya digunakan untuk memverifikasi identitas situs web dan CA pribadi digunakan untuk membuat sertifikat untuk VPN Klien-ke-Situs, pengguna, server internal, atau program dan layanan individual dalam infrastruktur Anda seperti server web lokal.
Dalam tutorial ini, kita belajar cara membuat otoritas sertifikat pribadi (CA) di Ubuntu 20.04 . Di sini kami menggunakan easy-rsa Utilitas CLI untuk membangun dan mengelola Server CA.
Prasyarat
- Sebuah node dengan Ubuntu 20.04 untuk meng-host CA Server
- Pengguna dengan hak istimewa sudo
Langkah 1:Perbarui sistem Anda
Pertama, perbarui sistem Ubuntu Anda, jalankan perintah berikut:
apt update
Anda dapat melewati langkah ini jika Anda menginstal easy-rsa dari repo resmi.
Langkah 2:Instal Easy-RSA di server CA
Easy-RSA adalah alat baris perintah yang secara signifikan memfasilitasi pembentukan otoritas sertifikat (CA) dan pengelolaan sertifikat. Ini menghasilkan kunci pribadi dan sertifikat root publik.
Easy-RSA tersedia di repositori apt default. Untuk menginstal versi terbaru dari repositori resmi GitHub easy-rsa.
Unduh alat manajemen Easy-RSA PKI dari Github:
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Di sini telah mengunduh versi 3.0.8 . Sekarang mari kita pindahkan file ke /opt
map
sudo mv EasyRSA-3.0.8.tgz /opt
Sekarang ubah direktori ke /opt:
cd /opt
Jalankan perintah berikut untuk membuka kompres file .tgz:
sudo tar xvf EasyRSA-3.0.8.tgz
Ganti nama direktori menggunakan perintah mv:
sudo mv EasyRSA-3.0.8 easy-rsa
Sekarang jadikan pengguna non-root sebagai pemilik direktori:
sudo chown -R franck:franck easy-rsa/
Batasi akses ke direktori PKI, hanya untuk pemiliknya:
sudo chmod 700 easy-rsa
Langkah 3:Siapkan Server CA
Di sini kita akan menyiapkan direktori infrastruktur kunci publik dan membuat sertifikat publik/pribadi untuk server CA.
Sekarang ubah direktori menjadi easy-rsa yang telah dibuat sebelumnya:
cd easy-rsa
Kami akan membuat vars
file yang akan digunakan untuk menyimpan informasi organisasi
$ cp vars.example vars
Sekarang tambahkan informasi organisasi di akhir file
$ vim vars
set_var EASYRSA_REQ_COUNTRY "CM"
set_var EASYRSA_REQ_PROVINCE "Centre"
set_var EASYRSA_REQ_CITY "Yaounde"
set_var EASYRSA_REQ_ORG "LINUXSHARE"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "Com"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Sekarang kita akan menginisialisasi direktori Infrastruktur Kunci Publik:
$ ./easyrsa init-pki
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /opt/easy-rsa/pki
Untuk menghasilkan publik root dan pasangan kunci pribadi untuk server CA, ketik:
$ ./easyrsa build-ca
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:
read EC key
writing EC key
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
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:
/opt/easy-rsa/pki/ca.crt
Anda akan diminta memasukkan frasa sandi untuk pasangan kunci kapan pun Anda perlu menandatangani atau mencabut sertifikat. Anda juga akan ditanya Common Name (CN) untuk CA Anda, Anda dapat menggunakan yang default jika Anda mau.
Operasi akan membuat dua file utama:
- Sertifikat publik file
ca.crt
file yang akan digunakan server dan klien untuk memverifikasi bahwa mereka berada di batas kepercayaan yang sama - Kunci pribadi file
ca.key
dipki/private
direktori yang digunakan CA untuk menandatangani sertifikat server dan klien
Langkah 4:Impor sertifikat publik CA
Sekarang kami mendapatkan sertifikat publik yang dihasilkan, kami perlu mengimpornya ke server lain.
Masuk ke server tempat Anda ingin mengimpor sertifikat, lalu lakukan salinan jarak jauh ca.crt
file dari server CA.
scp [email protected]:/opt/easy-rsa/pki/ca.crt
The authenticity of host 'X.Y.Z.T (X.Y.Z.T)' can't be established.
ECDSA key fingerprint is SHA256:ffUgP5/d0Z3miOKqxBVoF9JbFvIZFs/gxr7ESBZ0kmQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '139.177.204.145' (ECDSA) to the list of known hosts.
[email protected]'s password:
ca.crt
100% 749 2.4KB/s 00:00
Pindahkan file sertifikat ke /usr/local/share/ca-certificates/
direktori:
sudo mv ca.crt /usr/local/share/ca-certificates/
Sekarang impor sertifikat CA Server menggunakan perintah berikut:
sudo update-ca-certificates
Updating certificates in /etc/ssl/certs…
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d…
done.
Dengan itu, server Anda sekarang akan mempercayai sertifikat yang telah ditandatangani oleh server CA Anda.
Langkah 5:Buat permintaan sertifikat server dan kunci pribadi
Kami dapat membuat beberapa Permintaan Penandatanganan Sertifikat (CSR) di server yang berbeda agar CA kami menandatangani permintaan tersebut.
Kami akan menggunakan OpenSSL untuk membuat file CSR. Jika OpenSSL tidak diinstal, gunakan perintah berikut untuk menginstalnya:
sudo apt install openssl
Buat direktori bernama server1-csr untuk menyimpan CSR dan kunci pribadi
mkdir server1-csr
Ubah ke direktori server1-csr
cd server1-csr
Sekarang buat kunci pribadi menggunakan OpenSSL:
openssl genrsa -out server1.key
Generating RSA private key, 2048 bit long modulus (2 primes)
..........+++++
..................................................+++++
e is 65537 (0x010001)
Anda dapat membuat CSR yang sesuai menggunakan kunci yang dibuat:
$ openssl req -new -key server1.key -out server1.req
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CM
State or Province Name (full name) [Some-State]:CE
Locality Name (eg, city) []:Yaounde
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LinuxShare
Organizational Unit Name (eg, section) []:Tech-B
Common Name (e.g. server FQDN or YOUR name) []:server1
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Sekarang Anda perlu menyalin file CSR ke server CA:
$ scp server1.req scp [email protected]:/tmp/server1.req
Langkah 6:Tandatangani CSR Server di server CA
CSR yang dihasilkan harus ditandatangani oleh server CA. Untuk itu pindah dulu ke direktori easy-rsa untuk mengimpor permintaan tanda sertifikat dari server.
./easyrsa import-req /opt/sign-cert/server1.req server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
The request has been successfully imported with a short name of: server1
You may now use this name to perform signing operations on this request.
Sekarang tandatangani CSR menggunakan perintah berikut:
./easyrsa sign-req server server1
Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
You 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 = CM
stateOrProvinceName = CE
localityName = Yaounde
organizationName = LinuxShare
organizationalUnitName = Tech-B
commonName = server1
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/easy-rsa/pki/easy-rsa-161486.BI2HwH/tmp.lIqZoF
Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'CM'
stateOrProvinceName :ASN.1 12:'CE'
localityName :ASN.1 12:'Yaounde'
organizationName :ASN.1 12:'LinuxShare'
organizationalUnitName:ASN.1 12:'Tech-B'
commonName :ASN.1 12:'server1'
Certificate is to be certified until Jan 5 16:57:26 2024 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /opt/easy-rsa/pki/issued/server1.crt
Dari output Anda dapat melihat sertifikat yang dikeluarkan di bawah direktori /opt/easy-rsa/pki/issued/. Anda juga dapat memverifikasi sertifikat dengan mencantumkannya:
$ ls -l /opt/easy-rsa/pki/issued
Keluaran:
total 4
-rw------- 1 franck franck 3996 Oct 2 16:57 server1.crt
Dengan semua langkah tersebut, Anda dapat mengelola sendiri sertifikat untuk server internal Anda. Dengan server CA, Anda dapat menandatangani sertifikat untuk server web atau terowongan VPN misalnya dengan OpenVPN.
Catatan:Untuk alasan keamanan, disarankan untuk tidak menjalankan layanan lain di Server CA. Seharusnya hanya digunakan untuk mengimpor, menandatangani, dan mencabut permintaan sertifikat sebagai server yang berdiri sendiri.
Kesimpulan
Dalam tutorial ini, kita belajar cara membuat otoritas sertifikat pribadi (CA) di Ubuntu 20.04. Terima kasih telah membaca, berikan tanggapan dan saran Anda di bagian komentar.