Cara Sederhana Membuat dan Mengelola Sertifikat CA Root Pribadi untuk OpenBSD

· 2 min read

Meskipun tujuan sertifikat yang diterbitkan dan digunakan oleh masing-masing pihak berbeda, alur langkah-langkah yang mengarah pada penerbitan sertifi

Sistem sertifikat mungkin tampak rumit dan sulit, tetapi kenyataannya memang demikian. Saat menulis artikel ini, saya melakukan banyak percobaan, tetapi tidak mudah untuk memahami keseluruhan cara membuat sertifikat SSL. Oleh karena itu, dalam artikel ini, kami akan menjelaskan secara singkat konfigurasi umum dan alur pemrosesan sistem yang mencakup otoritas sertifikat privat dua lapis (Root CA, Signing CA), server dan klien yang menggunakan sertifikat, lalu menjelaskan cara membuat CA. Kami akan menjelaskan langkah-langkah spesifik untuk melakukannya.

openbsd ca authority


Meskipun tujuan sertifikat yang diterbitkan dan digunakan oleh masing-masing pihak berbeda, alur langkah-langkah yang mengarah pada penerbitan sertifikat secara garis besar adalah sebagai berikut.

Pihak yang menerima sertifikat:
  • Buat kunci pribadi.
  • Buat Permintaan Penandatanganan Sertifikat (CSR) dari kunci pribadi. (Sertakan ekstensi X.509v3 jika perlu).
  • Kirim CSR ke CA.
Pihak yang menerbitkan sertifikat:
  • Tandatangani CSR (sertifikat telah selesai). Sertakan ekstensi X.509v3 dalam sertifikat yang sesuai dengan tujuan sertifikat. Lebih jauh, dalam kasus CA Penandatanganan, jika ekstensi yang disertakan dalam CSR tidak disertakan dalam ekstensi di atas, salin ekstensi tersebut ke sertifikat.
  • Kirim sertifikat ke peminta.
CSR dan sertifikat dipertukarkan antar subjek, dan seperti disebutkan di atas, masing-masing dapat menyertakan ekstensi X.509v3. Ada berbagai ekstensi, tetapi gambar tersebut menunjukkan contoh ekstensi yang menentukan tujuan sertifikat. Untuk ekstensi yang benar-benar digunakan, nama bagian dalam berkas konfigurasi OpenSSL ditunjukkan dalam gambar, jadi jika Anda ingin mengetahui lebih lanjut, silakan lihat bagian yang relevan dari berkas konfigurasi tersebut.

1. Buat otoritas sertifikat root (Root CA)

Pertama, pastikan OpenSSL terinstal di server OpenBSD Anda, periksa dengan menjalankan perintah openssl version untuk melihat versi OpenSSL.

Check oepnssl version
root@ns3:~# openssl version
OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)
Kita akan meletakkan semua berkas konfigurasi sertifikat OpenBSD di direktori OpenBSD_ca. Buat direktori dan berkas yang akan kita gunakan untuk mengonfigurasi sertifikat.

Check oepnssl version
ns3# mkdir -p /etc/ssl/OpenBSD_CA/root-ca
ns3# cd /etc/ssl/OpenBSD_CA/root-ca
ns3# mkdir -p certs crl db newcerts private
ns3# chmod 700 /etc/ssl/OpenBSD_CA/root-ca/private
Buat berkas serial, untuk menyimpan nomor serial tambahan berikutnya. Menggunakan nomor serial acak, bukan nomor serial tambahan, merupakan praktik keamanan yang direkomendasikan.

Create serial file
ns3# touch /etc/ssl/OpenBSD_CA/root-ca/db/index && touch /etc/ssl/OpenBSD_CA/root-ca/root-ca.cnf
ns3# openssl rand -hex 16 > /etc/ssl/OpenBSD_CA/root-ca/db/serial
ns3# echo "1001" > /etc/ssl/OpenBSD_CA/root-ca/db/crlnumber
Konfigurasi OpenSSL untuk otoritas sertifikat root ada di berkas root-ca/root-ca.cnf.

Script /etc/ssl/OpenBSD_CA/root-ca/root-ca.cnf
# OpenBSD root-ca.cnf --- unixwinbsd.site

HOME			= .
RANDFILE		= $ENV::HOME/.rnd
#oid_file		= $ENV::HOME/.oid
oid_section		= new_oids

[ new_oids ]
tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7

[ default ]
name		= root-ca

[ ca ]
default_ca	= CA_default	

[ CA_default ]
dir		= /etc/ssl/OpenBSD_CA/root-ca	
certs		= $dir/certs	
crl_dir		= $dir/crl	
database	= $dir/db/index	
unique_subject	= no		
new_certs_dir	= $dir/newcerts
revoked		= $dir/newcerts/$name.pem
certificate	= $dir/certs/$name.crt
serial		= $dir/db/serial
crlnumber	= $dir/db/crlnumber
crl		= $dir/crl/$name.crl	
private_key	= $dir/private/$name.key
RANDFILE	= $dir/private/.rnd
x509_extensions	= usr_cert		
name_opt 	= ca_default
cert_opt 	= ca_default
copy_extensions = none
crl_extensions	= crl_ext
default_days	= 3650	
default_crl_days = 365	
default_bits	= 2048
default_md	= sha256
preserve	= no	
policy		= policy_match

[ policy_match ]
countryName		= match
stateOrProvinceName	= match
organizationName	= match
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

[ policy_anything ]
countryName		= optional
stateOrProvinceName	= optional
localityName		= optional
organizationName	= optional
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

[ req ]
default_bits		= 2048
default_keyfile 	= privkey.pem
default_md		= sha256
distinguished_name	= req_distinguished_name
attributes		= req_attributes
x509_extensions	= v3_ca	# The extentions to add to the self signed cert
string_mask = utf8only
req_extensions = v3_req # The extensions to add to a certificate request

[ req_distinguished_name ]
countryName			= Country Name (2 letter code)
countryName_default		= US
countryName_min			= 2
countryName_max			= 2

stateOrProvinceName		= State or Province Name (full name)
stateOrProvinceName_default	= Texas

localityName			= Locality Name (eg, city)
localityName_default		= Austin

0.organizationName		= Organization Name (eg, company)
0.organizationName_default	= Internet Widgits Pty Ltd

# we can do this but it is not needed normally :-)
#1.organizationName		= Second Organization Name (eg, company)
#1.organizationName_default	= World Wide Web Pty Ltd

organizationalUnitName		= Organizational Unit Name (eg, section)
organizationalUnitName_default	= Networking

commonName			= Common Name (e.g. server FQDN or YOUR name)
commonName_max			= 64
commonName_default		= unixwinbsd.site

emailAddress			= Email Address
emailAddress_max		= 64
emailAddress_default		= unixwinbsd@gmail.com

[ req_attributes ]
challengePassword		= A challenge password
challengePassword_min		= 4
challengePassword_max		= 20
unstructuredName		= An optional company name

[ usr_cert ]

basicConstraints=CA:FALSE
nsComment			= "OpenBSD Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]

subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage = critical,cRLSign, keyCertSign
nsCertType = sslCA, emailCA

[ v3_sub_ca ]
authorityKeyIdentifier	= keyid:always,issuer
basicConstraints	= critical,CA:true,pathlen:0
extendedKeyUsage	= clientAuth,serverAuth
keyUsage		= critical,keyCertSign,cRLSign
subjectKeyIdentifier	= hash

[ name_constraints ]
permitted;DNS.0	= example.org
permitted;DNS.1	= example.com
excluded;IP.0	= 0.0.0.0/0.0.0.0
excluded;IP.1	= 0:0:0:0:0:0:0:0/0:0:0:0:0:0:0:0

[ crl_ext ]
authorityKeyIdentifier=keyid:always

[ proxy_cert_ext ]
basicConstraints=CA:FALSE
nsComment			= "OpenBSD OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo

[ tsa ]
default_tsa = tsa_config1	

[ tsa_config1 ]
dir		= ./demoCA		
serial		= $dir/tsaserial	
crypto_device	= builtin		
signer_cert	= $dir/tsacert.pem 	
certs		= $dir/cacert.pem	
signer_key	= $dir/private/tsakey.pem
default_policy	= tsa_policy1		
other_policies	= tsa_policy2, tsa_policy3	
digests		= md5, sha1		
accuracy	= secs:1, millisecs:500, microsecs:100
clock_precision_digits  = 0	
ordering		= yes	
tsa_name		= yes	
ess_cert_id_chain	= no

a. Hasilkan CSR dan Kunci baru

Perintah berikut membuat kunci EC atau RSA baru yang dilindungi kata sandi dan juga permintaan penandatanganan sertifikat untuk root.

Generating Root CA's private key
ns3# cd /etc/ssl/OpenBSD_CA/root-ca
ns3# openssl ecparam -name secp384r1 -genkey | openssl ec -out /etc/ssl/OpenBSD_CA/root-ca/private/root-ca.key -aes256
Generate CSR from root-ca.key
ns3# openssl req -new \
        -config /etc/ssl/OpenBSD_CA/root-ca/root-ca.cnf \
        -key /etc/ssl/OpenBSD_CA/root-ca/private/root-ca.key \
        -out /etc/ssl/OpenBSD_CA/root-ca/root-ca.csr \
        -sha512

b. Menandatangani Sendiri Sertifikat Root

Jika semuanya tampak baik-baik saja, tandatangani sendiri permintaan Anda.

Self-signing certificate request (root-ca.csr >>out>> root-ca.crt)
ns3# openssl ca \
        -config /etc/ssl/OpenBSD_CA/root-ca/root-ca.cnf \
        -in /etc/ssl/OpenBSD_CA/root-ca/root-ca.csr \
        -out /etc/ssl/OpenBSD_CA/root-ca/certs/root-ca.crt \
        -md sha512 -selfsign -extensions v3_ca
Stripping text part of the certificate
ns3# openssl x509 -in /etc/ssl/OpenBSD_CA/root-ca/certs/root-ca.crt -out /etc/ssl/OpenBSD_CA/root-ca/certs/root-ca.notext

c. Membuat daftar pencabutan sertifikat

Root CA menerbitkan Daftar Pencabutan Sertifikat secara berkala atau saat sertifikat telah dicabut. Root CA diharapkan hanya menerbitkan pencabutan sertifikat yang ditandatangani sendiri atau sertifikat Intermediate CA. Belum ada pencabutan, tetapi klien dan server yang memverifikasi salah satu sertifikat kami akan meminta CRL terkini dari alamat web yang dipublikasikan dalam sertifikat.

Create root-ca.crl file
ns3# openssl ca -gencrl -config /etc/ssl/OpenBSD_CA/root-ca/root-ca.cnf -out /etc/ssl/OpenBSD_CA/root-ca/crl/root-ca.crl
Untuk membuat daftar pencabutan sertifikat, Anda harus membuka direktori /etc/ssl/OpenBSD_CA/root-ca/db. Cari berkas indeks, lalu buka isi skrip.

Script /etc/ssl/OpenBSD_CA/root-ca/db/index
ns3# cat /etc/ssl/OpenBSD_CA/root-ca/db/index
V       340530094721Z           E4929714F26C79914F27932A76173963        unknown /C=US/ST=Texas/O=Internet Widgits Pty Ltd/CN=unixwinbsd.site/emailAddress=unixwinbsd@gmail.com
Kemudian, buka direktori /etc/ssl/OpenBSD_CA/root-ca/newcerts. Di direktori tersebut terdapat file "E4929714F26C79914F27932A76173963.pem". Setelah itu, jalankan perintah revoke dengan file target "E4929714F26C79914F27932A76173963.pem".

Revoke certificate
ns3# openssl ca \
        -config /etc/ssl/OpenBSD_CA/root-ca/root-ca.cnf \
        -revoke /etc/ssl/OpenBSD_CA/root-ca/newcerts/9B9ECA2E94B2ADA9668785CD951C451E.pem \
        -crl_reason keyCompromise
Sekarang coba lihat skrip /etc/ssl/OpenBSD CA/root-ca/db/index.

Script /etc/ssl/OpenBSD_CA/root-ca/db/index
ns3# cat /etc/ssl/OpenBSD_CA/root-ca/db/index
R	340530094721Z	240601102047Z,keyCompromise	E4929714F26C79914F27932A76173963	unknown	/C=US/ST=Texas/O=Internet Widgits Pty Ltd/CN=unixwinbsd.site/emailAddress=unixwinbsd@gmail.com

2. Buat otoritas sertifikat penandatanganan (Signing CA)

Otoritas sertifikat menggunakan struktur direktori tertentu untuk mengamankan kunci, sertifikat yang ditandatangani, permintaan penandatanganan, dan daftar pencabutan. Untuk melakukan Penyiapan Penandatanganan CA, jalankan perintah di bawah ini yang menghasilkan kunci privat Penandatanganan CA.

Create directory
ns3# mkdir -p /etc/ssl/OpenBSD_CA/signing-ca
ns3# cd /etc/ssl/OpenBSD_CA/signing-ca
ns3# mkdir -p certs crl db newcerts private
ns3# chmod 700 /etc/ssl/OpenBSD_CA/signing-ca/private
Beberapa berkas data diperlukan untuk melacak sertifikat yang diterbitkan, nomor seri, dan pencabutannya.

Create file (index, crlnumber, serial)
ns3# touch /etc/ssl/OpenBSD_CA/signing-ca/db/index && touch /etc/ssl/OpenBSD_CA/signing-ca/signing-ca.cnf
ns3# openssl rand -hex 16 > /etc/ssl/OpenBSD_CA/signing-ca/db/serial
ns3# echo "1001" > /etc/ssl/OpenBSD_CA/signing-ca/db/crlnumber
Konfigurasi untuk otoritas sertifikat penandatanganan (Signing CA) ada di berkas signing-ca.cnf.

Script /etc/ssl/OpenBSD_CA/signing-ca/signing-ca.cnf
# OpenBSD signing-ca.cnf --- unixwinbsd.site
HOME			= .
RANDFILE		= $ENV::HOME/.rnd
oid_section		= new_oids

[ new_oids ]
tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7

[ default ]
name		= signing-ca

[ ca ]
default_ca	= CA_default

[ CA_default ]
dir		= /etc/ssl/OpenBSD_CA/signing-ca		
certs		= $dir/certs	
crl_dir		= $dir/crl	
database	= $dir/db/index	
unique_subject	= no		
new_certs_dir	= $dir/newcerts	
certificate	= $dir/certs/$name.crt
serial		= $dir/db/serial
crlnumber	= $dir/db/crlnumber	
crl		= $dir/crl/$name.crl	
private_key	= $dir/private/$name.key
RANDFILE	= $dir/private/.rand	
x509_extensions	= usr_cert		
name_opt 	= ca_default		
cert_opt 	= ca_default		
copy_extensions = copy
crl_extensions	= crl_ext
default_days	= 365			
default_crl_days = 30			
default_bits	= 2048
default_md	= sha256		
preserve	= no			
policy		= policy_match

[ policy_match ]
countryName		= match
stateOrProvinceName	= match
organizationName	= match
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

[ policy_anything ]
countryName		= optional
stateOrProvinceName	= optional
localityName		= optional
organizationName	= optional
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

[ req ]
default_bits		= 2048
default_keyfile 	= privkey.pem
default_md		= sha256
distinguished_name	= req_distinguished_name
attributes		= req_attributes
x509_extensions	= v3_ca
string_mask = utf8only
req_extensions = v3_req

[ req_distinguished_name ]
countryName			= Country Name (2 letter code)
countryName_default		= US
countryName_min			= 2
countryName_max			= 2

stateOrProvinceName		= State or Province Name (full name)
stateOrProvinceName_default	= Texas

localityName			= Locality Name (eg, city)
localityName_default		= Austin

0.organizationName		= Organization Name (eg, company)
0.organizationName_default	= Internet Widgits Pty Ltd

# we can do this but it is not needed normally :-)
#1.organizationName		= Second Organization Name (eg, company)
#1.organizationName_default	= World Wide Web Pty Ltd

organizationalUnitName		= Organizational Unit Name (eg, section)
organizationalUnitName_default	= Education

commonName			= Common Name (e.g. server FQDN or YOUR name)
commonName_max			= 64
commonName_default		= unixwinbsd.site

emailAddress			= Email Address
emailAddress_max		= 64
emailAddress_default		= unixwinbsd@gmail.com

[ req_attributes ]
challengePassword		= A challenge password
challengePassword_min		= 4
challengePassword_max		= 20
unstructuredName		= An optional company name

[ usr_cert ]
basicConstraints=CA:FALSE
nsComment			= "OpenBSD Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage = critical,cRLSign, keyCertSign
nsCertType = sslCA, emailCA

[ v3_sub_ca ]
authorityKeyIdentifier	= keyid:always,issuer
basicConstraints	= critical,CA:true,pathlen:0
extendedKeyUsage	= clientAuth,serverAuth
keyUsage		= critical,keyCertSign,cRLSign
subjectKeyIdentifier	= hash

[ name_constraints ]
permitted;DNS.0	= example.org
permitted;DNS.1	= example.com
excluded;IP.0	= 0.0.0.0/0.0.0.0
excluded;IP.1	= 0:0:0:0:0:0:0:0/0:0:0:0:0:0:0:0

[ server_ext ]
authorityKeyIdentifier	= keyid:always
basicConstraints	= critical,CA:false
extendedKeyUsage	= clientAuth,serverAuth
keyUsage		= critical,digitalSignature,keyEncipherment
nsCertType		= server
subjectKeyIdentifier	= hash

[ client_ext ]
authorityKeyIdentifier	= keyid:always
basicConstraints	= critical,CA:false
extendedKeyUsage	= clientAuth
keyUsage		= critical,digitalSignature,keyEncipherment,nonRepudiation
nsCertType		= client
subjectKeyIdentifier	= hash

[ crl_ext ]
authorityKeyIdentifier=keyid:always

[ proxy_cert_ext ]
basicConstraints=CA:FALSE
nsComment			= "OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo

[ tsa ]
default_tsa = tsa_config1

[ tsa_config1 ]
dir		= ./demoCA	
serial		= $dir/tsaserial
crypto_device	= builtin	
signer_cert	= $dir/tsacert.pem
certs		= $dir/cacert.pem
signer_key	= $dir/private/tsakey.pem 
default_policy	= tsa_policy1		
other_policies	= tsa_policy2, tsa_policy3	
digests		= md5, sha1		
accuracy	= secs:1, millisecs:500, microsecs:100	
clock_precision_digits  = 0	
ordering		= yes	
tsa_name		= yes	
ess_cert_id_chain	= no

a. Hasilkan kunci pribadi dan CSR

Sekali lagi, Anda dapat memilih antara kunci EC dan kunci RSA. Kunci pribadi RSA dari sertifikat penandatanganan perantara harus memiliki kekuatan 3072 bit.

Generating Signing CA's private key
ns3# openssl ecparam -name secp384r1 -genkey | openssl ec -out /etc/ssl/OpenBSD_CA/signing-ca/private/signing-ca.key -aes256
Creating Signing CA's certificate signing request (csr file)
ns3# openssl req -new \
        -config /etc/ssl/OpenBSD_CA/signing-ca/signing-ca.cnf \
        -key /etc/ssl/OpenBSD_CA/signing-ca/private/signing-ca.key \
        -out /etc/ssl/OpenBSD_CA/signing-ca/signing-ca.csr \
        -sha512

b. Menandatangani sertifikat CA dengan CA Root

Sertifikat CA Penandatanganan adalah signing-ca.crt. Jalankan perintah di bawah ini untuk membuat file signing-ca.crt.

Generating Signing CA's private key
ns3# openssl ca \
        -config /etc/ssl/OpenBSD_CA/root-ca/root-ca.cnf \
        -in /etc/ssl/OpenBSD_CA/signing-ca/signing-ca.csr \
        -out /etc/ssl/OpenBSD_CA/signing-ca/certs/signing-ca.crt \
        -md sha512 -extensions v3_sub_ca
Hapus teks deskriptif dalam sertifikat.

Delete descriptive text
ns3# openssl x509 \
        -in /etc/ssl/OpenBSD_CA/signing-ca/certs/signing-ca.crt \
        -out /etc/ssl/OpenBSD_CA/signing-ca/certs/signing-ca.crt.notext
Create crl file
ns3# openssl ca \
        -gencrl \
        -config /etc/ssl/OpenBSD_CA/signing-ca/signing-ca.cnf \
        -out /etc/ssl/OpenBSD_CA/signing-ca/crl/signing-ca.crl

c. Mencabut sertifikat dari Otoritas Sertifikat (CA) pribadi di FreeBSD

Pada bagian penerbitan sertifikat, kami menjelaskan prosedur penerbitan sertifikat menggunakan Otoritas Sertifikat (CA) privat di OpenBSD. Saat berkomunikasi antara server dan klien, penggunaan sertifikat memungkinkan kami memverifikasi bahwa pihak lain (nama domain) memang pihak yang dimaksud.

Namun, bagaimana jika kunci privat yang digunakan untuk membuat sertifikat hilang atau bocor? Orang jahat dapat menggunakan kunci privat yang bocor untuk memalsukan sertifikat dan memalsukan identitas seseorang. Dalam kasus tersebut, sertifikat tidak dapat lagi digunakan untuk menjamin bahwa pihak lain adalah pihak yang benar. Dalam kasus seperti itu, sertifikat harus segera dicabut.

Dalam artikel ini, selain menerbitkan sertifikat, kami akan menjelaskan peran lain dari CA: pemrosesan pencabutan sertifikat dan pembuatan daftar pencabutan. Berikut ini adalah contoh pencabutan sertifikat yang diterbitkan oleh CA Penandatangan.

View script /etc/ssl/OpenBSD_CA/root-ca/db/index
R	340531023831Z	240602024009Z,keyCompromise	B214F9454080AD17279DDC32952E5DC5	unknown	/C=US/ST=Texas/O=Internet Widgits Pty Ltd/OU=Networking/CN=unixwinbsd.site/emailAddress=unixwinbsd@gmail.com
V	340531024205Z		B214F9454080AD17279DDC32952E5DC6	unknown	/C=US/ST=Texas/O=Internet Widgits Pty Ltd/OU=Education/CN=unixwinbsd.site/emailAddress=unixwinbsd@gmail.com
Setelah itu, Anda melihat direktori /etc/ssl/OpenBSD_CA/root-ca/newcerts dengan perintah "ls".

Directory /etc/ssl/OpenBSD_CA/root-ca/newcerts
ns3# cd /etc/ssl/OpenBSD_CA/root-ca/newcerts
ns3# ls
B214F9454080AD17279DDC32952E5DC5.pem  B214F9454080AD17279DDC32952E5DC6.pem
Jalankan perintah untuk mencabut sertifikat yang dikeluarkan oleh Penandatangan CA.

Directory /etc/ssl/OpenBSD_CA/root-ca/newcerts
ns3# openssl ca \
        -config /etc/ssl/OpenBSD_CA/root-ca/root-ca.cnf \
        -revoke /etc/ssl/OpenBSD_CA/root-ca/newcerts/B214F9454080AD17279DDC32952E5DC6.pem \
        -crl_reason superseded
Lihat lagi skrip /etc/ssl/OpenBSD CA/root-ca/db/index.

View script /etc/ssl/OpenBSD_CA/root-ca/db/index
R	340531023831Z	240602024009Z,keyCompromise	B214F9454080AD17279DDC32952E5DC5	unknown	/C=US/ST=Texas/O=Internet Widgits Pty Ltd/OU=Networking/CN=unixwinbsd.site/emailAddress=unixwinbsd@gmail.com
R	340531024205Z	240602025145Z,superseded	B214F9454080AD17279DDC32952E5DC6	unknown	/C=US/ST=Texas/O=Internet Widgits Pty Ltd/OU=Education/CN=unixwinbsd.site/emailAddress=unixwinbsd@gmail.com
Pembuatan CA pribadi kini telah selesai. Anda kini siap untuk menandatangani sertifikat server atau klien.

3. Membuat sertifikat server/klien

Langkah selanjutnya, kita akan membuat sertifikat untuk server dan klien. Sertifikat server dan klien akan digunakan langsung oleh pengguna yang menjalankan aplikasi seperti NGINX atau Apache24.

Create directory and file
ns3# mkdir -p /etc/ssl/OpenBSD_CA/san
ns3# cd /etc/ssl/OpenBSD_CA/san && mkdir -p certs private
ns3# touch /etc/ssl/OpenBSD_CA/san/openbsd-san.cnf
Buat skrip file konfigurasi utama untuk pembuatan sertifikat server dan klien.

Script /etc/ssl/OpenBSD_CA/san/openbsd-san.cnf
# OpenBSD openbsd-san.cnf --- unixwinbsd.site
HOME			= .
RANDFILE		= $ENV::HOME/.rnd
oid_section		= new_oids

[ new_oids ]
tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7

[ ca ]
default_ca	= CA_default

[ CA_default ]
dir		= ./demoCA	
certs		= $dir/certs	
crl_dir		= $dir/crl	
database	= $dir/index.txt
new_certs_dir	= $dir/newcerts	
certificate	= $dir/cacert.pem 
serial		= $dir/serial 	
crlnumber	= $dir/crlnumber
crl		= $dir/crl.pem 	
private_key	= $dir/private/cakey.pem
RANDFILE	= $dir/private/.rand	
x509_extensions	= usr_cert		
name_opt 	= ca_default		
cert_opt 	= ca_default		
default_days	= 365			
default_crl_days= 30		
default_md	= default		
preserve	= no			
policy		= policy_match

[ policy_match ]
countryName		= match
stateOrProvinceName	= match
organizationName	= match
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

[ policy_anything ]
countryName		= optional
stateOrProvinceName	= optional
localityName		= optional
organizationName	= optional
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

[ req ]
default_bits		= 2048
default_keyfile 	= privkey.pem
distinguished_name	= req_distinguished_name
attributes		= req_attributes
x509_extensions	= v3_ca
string_mask = utf8only

[ req_distinguished_name ]
countryName			= Country Name (2 letter code)
countryName_default		= AU
countryName_min			= 2
countryName_max			= 2

stateOrProvinceName		= State or Province Name (full name)
stateOrProvinceName_default	= Mid North Coast

localityName			= Locality Name (eg, city)
localityName_default		= Coffs Harbour

0.organizationName		= Organization Name (eg, company)
0.organizationName_default	= Internet Certificate Service, Pty Ltd.

# we can do this but it is not needed normally :-)
#1.organizationName		= Second Organization Name (eg, company)
#1.organizationName_default	= World Wide Web Pty Ltd

organizationalUnitName		= Organizational Unit Name (eg, section)
organizationalUnitName_default	= IT Networking

commonName			= Common Name (e.g. server FQDN or YOUR name)
commonName_max			= 64
commonName_default		= kursor.my.id

emailAddress			= Email Address
emailAddress_max		= 64
emailAddress_default		= cursor.com

[ req_attributes ]
challengePassword		= A challenge password
challengePassword_min		= 4
challengePassword_max		= 20
unstructuredName		= An optional company name

[ usr_cert ]
basicConstraints=CA:FALSE
nsComment			= "OpenBSD SAN Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName	= $ENV::OPENSSL_SAN

[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = CA:true

[ crl_ext ]
authorityKeyIdentifier=keyid:always

[ proxy_cert_ext ]
basicConstraints=CA:FALSE
nsComment			= "OpenBSD Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo

[ tsa ]
default_tsa = tsa_config1

[ tsa_config1 ]
dir		= ./demoCA	
serial		= $dir/tsaserial
crypto_device	= builtin	
signer_cert	= $dir/tsacert.pem
certs		= $dir/cacert.pem
signer_key	= $dir/private/tsakey.pem
default_policy	= tsa_policy1
other_policies	= tsa_policy2, tsa_policy3	
digests		= md5, sha1	
accuracy	= secs:1, millisecs:500, microsecs:100
clock_precision_digits  = 0	
ordering		= yes	
tsa_name		= yes	
ess_cert_id_chain	= no
The first command you have to run is "exports". Notice the example below.

Run export
ns3# cd /etc/ssl/OpenBSD_CA/san
ns3# export OPENSSL_SAN="IP:192.168.5.3"
Buat file kunci pribadi dan letakkan di direktori /etc/ssl/OpenBSD_CA/san/private.

Create file
ns3# openssl genrsa \
        -out /etc/ssl/OpenBSD_CA/san/private/example_nopass.key 2048
ns3# openssl rsa \
        -in /etc/ssl/OpenBSD_CA/san/private/example_nopass.key \
        -out /etc/ssl/OpenBSD_CA/san/private/example.key -aes256
ns3# openssl rsa \
         -in /etc/ssl/OpenBSD_CA/san/private/example.key \
         -pubout \
         -out /etc/ssl/OpenBSD_CA/san/certs/example.pub \
         -outform PEM
Lanjutkan dengan perintah berikut.

Create csr file
ns3# openssl req -new \
            -config /etc/ssl/OpenBSD_CA/san/openbsd-san.cnf \
            -key /etc/ssl/OpenBSD_CA/san/private/example.key \
            -out /etc/ssl/OpenBSD_CA/san/certs/example.csr \
            -sha512 -reqexts v3_req

a. Server certificate

Pada bagian pertama kita akan membuat sertifikat untuk server. Ikuti setiap perintah di bawah ini.

Create crt file
ns3# cd /etc/ssl/OpenBSD_CA/signing-ca
ns3# export OPENSSL_SAN="IP:192.168.5.3"
ns3# openssl ca \
        -config /etc/ssl/OpenBSD_CA/signing-ca/signing-ca.cnf \
        -policy policy_anything \
        -in /etc/ssl/OpenBSD_CA/san/certs/example.csr \
        -out /etc/ssl/OpenBSD_CA/san/certs/example.crt \
        -md sha512 -extensions server_ext
Delete descriptive text
ns3# openssl x509 \
        -in /etc/ssl/OpenBSD_CA/san/certs/example.crt \
        -out /etc/ssl/OpenBSD_CA/san/certs/example.crt.notext
Perintah terakhir adalah menggabungkan beberapa file sertifikat.

Combine certificate
ns3# cat /etc/ssl/OpenBSD_CA/san/certs/example.crt.notext \
/etc/ssl/OpenBSD_CA/signing-ca/certs/signing-ca.crt.notext > /etc/ssl/OpenBSD_CA/signing-ca/certs/signing-ca.crt.full

b. Sertificate klien

Proses pembuatan sertifikat untuk klien hampir sama dengan pembuatan sertifikat server, hanya ada sedikit perbedaan. Berikut ini adalah perintah yang harus Anda jalankan untuk membuat sertifikat klien.

Create client crt file
ns3# cd /etc/ssl/OpenBSD_CA/signing-ca
ns3# export OPENSSL_SAN="IP:192.168.5.3"
ns3# openssl ca \
        -config /etc/ssl/OpenBSD_CA/signing-ca/signing-ca.cnf \
        -policy policy_anything \
        -in /etc/ssl/OpenBSD_CA/san/certs/example.csr \
        -out /etc/ssl/OpenBSD_CA/san/certs/client.crt \
        -md sha512 -extensions client_ext
Delete descriptive text
ns3# openssl x509 \
        -in /etc/ssl/OpenBSD_CA/san/certs/client.crt \
        -out /etc/ssl/OpenBSD_CA/san/certs/client.crt.notext
Combine certificate
ns3# cat /etc/ssl/OpenBSD_CA/san/certs/client.crt.notext \
/etc/ssl/OpenBSD_CA/signing-ca/certs/signing-ca.crt.notext > /etc/ssl/OpenBSD_CA/signing-ca/certs/client.crt.full
Jika Anda menjalankan server OpenBSD, dan memerlukan sertifikat SSL untuk koneksi yang aman? Anda dapat menggunakan contoh yang telah kami jelaskan dalam artikel ini.
Subscribe on LinkedIn Cara Sederhana Membuat dan Mengelola Sertifikat CA Root Pribadi untuk OpenBSD

Enclosures Link: Cara Sederhana Membuat dan Mengelola Sertifikat CA Root Pribadi untuk OpenBSD

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

Posting Komentar