Sertifikat OpenBSD CloudFlare CFSSL - Membuat Sertifikat PKI TLS Pribadi CA Untuk Klien Server DNS

· 2 min read

Kehadiran CFSSL sangat membantu meningkatkan sistem keamanan jaringan internet Anda, karena sertifikat SSL dirancang untuk mengurangi beberapa masalah

Tool CloudFlare PKI/TLS CFSSL ditulis dalam bahasa Golang dan merupakan salah satu program open source yang dirilis oleh Cloudflare. CFSSL merupakan tool command line dan server HTTP API untuk menandatangani, memvalidasi, dan menggabungkan sertifikat TLS. Cloudflare sengaja merilis aplikasi CFSSL untuk memudahkan pembuatan sertifikat PKI/TLS. Performa CFSSL sungguh mengagumkan, karena mampu mencapai keseimbangan antara performa, keamanan, dan interoperabilitas.

CFSSL Public Key Infrastructure tidak hanya menjadi tool untuk agregasi sertifikat, tetapi juga dapat digunakan sebagai otoritas sertifikat. Hal ini dimungkinkan karena mencakup fungsi dasar pembuatan sertifikat, termasuk pembuatan kunci privat, pembuatan permintaan penandatanganan sertifikat. Aplikasi CFSSL sangat cocok untuk server DNS yang menjalankan protokol TLS.

Kehadiran CFSSL sangat membantu meningkatkan sistem keamanan jaringan internet Anda, karena sertifikat SSL dirancang untuk mengurangi beberapa masalah keamanan pada jaringan internet. Sertifikat SSL menghubungkan nama domain ke nama server dan nama bisnis ke lokasi, sehingga membentuk dasar kepercayaan di Internet dengan menjamin identitas situs web. Dengan kata lain, sertifikat tersebut berisi nama server, otoritas sertifikasi (CA) tepercaya yang memverifikasi keaslian sertifikat, dan kunci enkripsi publik server.

Dalam artikel ini, kita akan mempelajari cara membuat Cloudflare CFSSL di OpenBSD. Isi artikel tersebut meliputi proses instalasi Go, CFSSL dan proses konfigurasi serta pembuatan sertifikat.


1. Install Go Lang

Karena CFSSL ditulis dalam bahasa go, maka syarat utama yang harus dipenuhi OepnBSD Anda adalah go terinstal di OpenBSD. Tidak ada salahnya jika kita mengulas sedikit proses instalasi Go. Untuk menginstal go di OpenBSD tidaklah terlalu sulit. Repositori go disediakan dalam paket PKG. Anda dapat langsung menjalankan instalasi tanpa harus mengunduh dari repositori lain.

Install GO Golang
ns3# pkg_add go
Karena ada banyak versi GO yang telah dirilis, dan bahkan dapat dikatakan bahwa tidak ada sistem operasi yang sama yang menjalankan versi GO tersebut. Anda dapat memeriksa versi GO sebelum menjalankannya.

Check GO version
ns3# go version
go version go1.22.1 openbsd/amd64
GO Golang juga memiliki banyak PATH yang dapat Anda atur sendiri. Untuk detail lebih lanjut tentang proses pembuatan variabel lingkungan PATH, Anda dapat membaca artikel kami sebelumnya, yaitu "Install Go Lang di OpenBSD dengan PATH Environment".


2. Instal Clodflare CFSSL

Setelah Anda berhasil menginstal Golang, lanjutkan dengan menginstal CFSSL. Proses instalasi CFSSL tidak jauh berbeda dengan GO, tidak terlalu sulit. Hanya dengan satu perintah saja Anda dapat menginstal CFSSL di OpenBSD. Berikut ini adalah perintah untuk menginstal CFSSL.

Install GO Golang
ns3# pkg_add cfssl
Anda dapat melihat versi CFSSL yang terinstal dengan perintah berikut.

Check CFSSL version
ns3# cfssl version
Version: 1.6.4
Runtime: go1.22.1
Sekarang setelah Anda menyiapkan aplikasi CFSSL, kita perlu memahami cara kerjanya dan proses pembuatan sertifikat dengan CFSSL.


3. Konfigurasi Clodflare CFSSL

Secara default CFSSL menyediakan dua berkas konfigurasi dasar, yaitu:
  • CSR_configuration dan
  • signing_configuration.
Berkas konfigurasi CSR berisi konfigurasi untuk pembuatan pasangan kunci yang akan Anda buat. Menandatangani konfigurasi sesuai dengan namanya, menyiapkan aturan konfigurasi, dan sebagainya. Kami akan menunjukkan cara menginisialisasi Root CA untuk lingkungan server OpenBSD Anda. Pertama-tama, kita harus menyimpan opsi cfssl default untuk penggantian dan penggunaan di masa mendatang.

a. Buat ROOT CA

Langkah pertama untuk membuat sertifikat CA ROOT, kita buat direktori untuk menyimpan sertifikat tersebut, setelah itu kita lakukan konfigurasi untuk membuat kunci bagi CA itu sendiri.

Create directory and key ROOT CA
ns3# mkdir -p /etc/ssl/cfssl
ns3# cd /etc/ssl/cfssl
ns3# cfssl print-defaults config > ca-config.json 
ns3# cfssl print-defaults csr > ca-csr.json
Perintah cfssl di atas akan menghasilkan dua file format json:
  • ca-config.json
  • ca-csr.json
Buka kedua berkas tersebut dan ketik skrip seperti pada contoh di bawah ini.

Script ca-config.json
{
    "signing": {
        "default": {
            "expiry": "8760h"
        },
        
        "profiles": {        	
            "intermediate_ca": {
        "usages": [
            "signing",
            "digital signature",
            "key encipherment",
            "cert sign",
            "crl sign",
            "server auth",
            "client auth",
            "www auth"
        ],
        "expiry": "8760h",
        "ca_constraint": {
            "is_ca": true,
            "max_path_len": 0, 
            "max_path_len_zero": true
        }
      },
      
          "peer": {
        "usages": [
            "signing",
            "digital signature",
            "key encipherment", 
            "client auth",
            "server auth",
            "www auth"
        ],
        "expiry": "8760h"
      },
            	
            "www": {
                "expiry": "8760h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "www auth"
                ]
            },
            
 "server": {
        "usages": [
          "signing",
          "digital signing",
          "key encipherment",
          "server auth"
        ],
        "expiry": "8760h"
      },
      
      "client": {
        "usages": [
          "signing",
          "digital signature",
          "key encipherment", 
          "client auth"
        ],
        "expiry": "8760h"
      }
            
        }
    }
}
Script ca-csr.json
{
    "CN": "Servers Intermediate CA",
    "hosts": [
        "kursor.my.id",
        "www.kursor.my.id"
    ],
    "key": {
        "algo": "ecdsa",
        "size": 256
    },
    "names": [
        {
            "C": "US",
            "ST": "CA",
            "L": "San Francisco",
            "O": "OpenBSD Education",
            "OU": "Tutor"
        }        
    ],
     "ca": {
    "expiry": "8760h"
 }
}
Ganti domain "kursor.my.id" dengan domain server OpenBSD Anda. Setelah itu, kita akan membuat sertifikat untuk membuat CA dengan opsi yang telah kita tentukan.

Generate CA
ns3# cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
Perintah di atas akan menghasilkan tiga file baru yang terdiri dari:
  • ca-key.pem (private key).
  • ca.csr (certificate signing request).
  • ca.pem (root CA public key)

b. Buat Intermediate CA

Sekarang kita lanjut ke langkah berikutnya, setelah kita memiliki root CA yang merupakan berkas terpenting. Root CA akan memungkinkan kita untuk membuat sertifikat perantara. Sertifikat perantara dapat digunakan seperti CA untuk membuat sertifikat perantara lainnya atau untuk langsung menandatangani sertifikat dan kunci. Dalam kasus ini, kunci Root CA disimpan di mesin offline, dan hanya digunakan saat Anda perlu menandatangani sertifikat CA perantara. Untuk membuat CA perantara, kita memerlukan berkas konfigurasi berikut.

Create directory /etc/ssl/cfssl/intermediate and intermediate.json file
ns3# mkdir -p /etc/ssl/cfssl/intermediate
ns3# cd /etc/ssl/cfssl/intermediate       
ns3# touch intermediate.json
Buka file intermediate.json dan masukkan skrip seperti contoh di bawah ini.

Script /etc/ssl/cfssl/intermediate/intermediate.json
{
  "CN": "Servers Intermediate CA",
  "key": {
    "algo": "ecdsa",
    "size": 256
  },
  "names": [
    {
	"C": "US",
        "ST": "CA",
        "L": "San Francisco",
        "O": "OpenBSD Education",
        "OU": "Tutor"
    }
  ],
  "ca": {
    "expiry": "8760h"
  }
}
Setelah Anda menyertakan skrip dalam berkas itu, Anda dapat melanjutkan dengan membuat kunci publik dan kunci privat perantara beserta permintaan penandatanganan perantara.

Generating intermediate public and private keys
ns3# cfssl gencert -initca intermediate.json | cfssljson -bare intermediate_ca
ns3# cfssl sign -ca /etc/ssl/cfssl/ca.pem -ca-key /etc/ssl/cfssl/ca-key.pem -config /etc/ssl/cfssl/ca-config.json -profile intermediate_ca intermediate_ca.csr | cfssljson -bare intermediate_ca

c. Membuat sertifikat akhir

Setiap server web atau server DNS memiliki sertifikat uniknya sendiri. Misalkan Anda ingin mendapatkan sertifikat untuk server DNS dengan nama domain seperti kursor.my.id. Hal pertama yang harus Anda lakukan adalah membuat Permintaan Penandatanganan Sertifikat (CSR) untuk server DNS Anda. Untuk membuat sertifikat, Anda harus membuat file baru seperti pada contoh di bawah ini.

Create certificate DNS Server
ns3# mkdir -p /etc/ssl/cfssl/CADNSServer
ns3# cd /etc/ssl/cfssl/CADNSServer
ns3# touch kursor.my.id.json
Lalu Anda masukkan skrip di bawah ini ke dalam file cursor.my.id.json.

Script /etc/ssl/cfssl/CADNSServer/kursor.my.id.json
{
  "CN": "server.computingexample.com",
  "key": {
    "algo": "ecdsa",
    "size": 256
  },
  "names": [
  {
            "C": "US",
            "ST": "CA",
            "L": "San Francisco",
            "O": "OpenBSD Education",
            "OU": "Tutor"
  }
  ],
  "hosts": [
    "ns3.kursor.my.id",
    "localhost"
  ]
}
Untuk membuat sertifikat server DNS dengan konfigurasi dalam file json di atas, lakukan saja.

Generate certificate DNS Server
ns3# cfssl gencert -ca /etc/ssl/cfssl/intermediate/intermediate_ca.pem -ca-key /etc/ssl/cfssl/intermediate/intermediate_ca-key.pem -config /etc/ssl/cfssl/ca-config.json -profile=server kursor.my.id.json | cfssljson -bare DNSServer1

4. Buat Bundling Certificates

Beberapa aplikasi berbasis server Apache, Java, dan DNS seperti Unbound mengharuskan sertifikat Root & Intermediate digabungkan dalam satu berkas. Cloudflare CFSSL dapat membuat sertifikat gabungan yang diperlukan oleh server dan klien.

Anda dapat menggunakan perintah cfssl-mkbundle untuk membuat bundel root dan intermediate yang digunakan dalam memverifikasi sertifikat. Ini pada dasarnya menghubungkan sertifikat akhir dengan kunci publik CA intermediate dan CA Root. Ikuti panduan di bawah ini untuk membuat sertifikat bundel.

Generate certificate Bundle DNS Server
ns3# cd /etc/ssl/cfssl                                                  
ns3# cfssl-mkbundle -f /etc/ssl/cfssl/CADNSServer/DNSserverbundle.crt CADNSServer
Perintah di atas digunakan untuk membuat sertifikat bundel, dengan menggabungkan sertifikat yang ada /etc/ssl/cfssl dengan /etc/ssl/cfssl/CADNSServer. Dan hasil penggabungan akan disimpan di /etc/ssl/cfssl/CADNNSServer.

Anda juga dapat menggunakan perintah di atas untuk menggabungkan sertifikat di /etc/ssl/cfssl dengan /etc/ssl/cfssl/intermediate.

Generate certificate Bundle Intermediate
ns3# cd /etc/ssl/cfssl
ns3# cfssl-mkbundle -f /etc/ssl/cfssl/intermediate/Intermediatebundle.crt intermediate

5. Cara Menggunakan Sertifikat CFSSL di Unbound

Setelah Anda berhasil membuat sertifikat ROOT CA, buatlah sertifikat untuk server DNS. Sekarang kita akan menerapkan sertifikat tersebut ke server DNS. Dalam contoh ini kita akan menerapkan server DNS Unbound. Di direktori utama Unbound, Anda membuka berkas unbound.conf. Cari skrip TLS dan ganti dengan skrip di bawah ini.

Script unbound.conf
tls-port: 853
tls-cert-bundle: "/etc/ssl/cfssl/CADNSServer/DNSserverbundle.crt"
tls-service-key: "/etc/ssl/cfssl/CADNSServer/DNSServer1-key.pem"
tls-service-pem: "/etc/ssl/cfssl/CADNSServer/DNSServer1.pem"
Mulai ulang server Unbound Anda, dan jalankan perintah di bawah ini, untuk memeriksa apakah server Unbound dapat membuka port 853 TLS.

Test Unbound
ns3# dig -p 853 yahoo.com @192.168.5.3

6. Cara Menggunakan Sertifikat CFSSL di Server Web NGINX

Anda juga dapat menggunakan sertifikat CFSSL di server web NGINX. Di berkas host virtual Anda, masukkan skrip seperti contoh di bawah ini. (kami membuat port HTTPS di host virtual Nginx).

Script /etc/nginx/vhostsSSL.conf
server {
        listen       443;
        listen       [::]:443;
        server_name  datainchi.com;
        root         /var/www/htdocs/nginxssl;
ssl on;
ssl_certificate /etc/ssl/cfssl/intermediate/Intermediatebundle.crt;
ssl_certificate_key /etc/ssl/cfssl/intermediate/intermediate_ca-key.pem;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root  /var/www/htdocs/nginxssl;
        }
    }
Contoh di atas adalah contoh sederhana skrip HTTPS Nginx. Anda dapat menyesuaikannya sesuai dengan sistem OpenBSD Anda. Setelah Anda memasukkan sertifikat CFSSL ke dalam konfigurasi Nginx, langkah berikutnya adalah memulai ulang server Nginx untuk menerapkan port HTTPS pada server Nginx.

Restart Nginx
ns3# rcctl restart nginx
Setelah itu, buka Google Chrome dan ketik "https://192.168.5.3". Lihat hasilnya, port HTTPS Nginx 443 langsung terbuka.

TLS adalah fondasi kriptografi modern. Jika dikonfigurasi dengan benar, TLS menyediakan enkripsi yang kuat dan aman yang memverifikasi semua pihak yang terlibat dalam proses tersebut. CFSSL adalah alat yang sederhana, cepat, dan mudah digunakan untuk menjalankan SSL CA. CFSSL adalah sertifikat yang ditandatangani sendiri dan membantu mengamankan jaringan internet dengan membangun infrastruktur pertukaran kunci untuk koneksi terenkripsi.
Subscribe on LinkedIn Sertifikat OpenBSD CloudFlare CFSSL - Membuat Sertifikat PKI TLS Pribadi CA Untuk Klien Server DNS

Enclosures Link: Sertifikat OpenBSD CloudFlare CFSSL - Membuat Sertifikat PKI TLS Pribadi CA Untuk Klien Server DNS

Silahkan Berkomentar, Kakak...! Bunda...!

Posting Komentar