Cara Sederhana Membuat dan Mengelola Sertifikat CA Root Pribadi untuk OpenBSD
· 2 min read · Label UnixBSD
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.
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:
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.
Kita akan meletakkan semua berkas konfigurasi sertifikat OpenBSD di direktori OpenBSD_ca. Buat direktori dan berkas yang akan kita gunakan untuk mengonfigurasi sertifikat.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)
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.
Konfigurasi OpenSSL untuk otoritas sertifikat root ada di berkas root-ca/root-ca.cnf.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
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.
Untuk membuat daftar pencabutan sertifikat, Anda harus membuka direktori /etc/ssl/OpenBSD_CA/root-ca/db. Cari berkas indeks, lalu buka isi skrip.
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".
Sekarang coba lihat skrip /etc/ssl/OpenBSD CA/root-ca/db/index.
Beberapa berkas data diperlukan untuk melacak sertifikat yang diterbitkan, nomor seri, dan pencabutannya.
Konfigurasi untuk otoritas sertifikat penandatanganan (Signing CA) ada di berkas signing-ca.cnf.
Hapus teks deskriptif dalam sertifikat.
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.
Setelah itu, Anda melihat direktori /etc/ssl/OpenBSD_CA/root-ca/newcerts dengan perintah "ls".
Jalankan perintah untuk mencabut sertifikat yang dikeluarkan oleh Penandatangan CA.
Lihat lagi skrip /etc/ssl/OpenBSD CA/root-ca/db/index.
Pembuatan CA pribadi kini telah selesai. Anda kini siap untuk menandatangani sertifikat server atau klien.
Perintah terakhir adalah menggabungkan beberapa file sertifikat.
Jika Anda menjalankan server OpenBSD, dan memerlukan sertifikat SSL untuk koneksi yang aman? Anda dapat menggunakan contoh yang telah kami jelaskan dalam artikel ini.
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
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
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
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
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
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
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
Directory /etc/ssl/OpenBSD_CA/root-ca/newcerts
ns3# cd /etc/ssl/OpenBSD_CA/root-ca/newcerts
ns3# ls
B214F9454080AD17279DDC32952E5DC5.pem B214F9454080AD17279DDC32952E5DC6.pem
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
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
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.
Buat file kunci pribadi dan letakkan di direktori /etc/ssl/OpenBSD_CA/san/private.
Lanjutkan dengan perintah berikut.
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"
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
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
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
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar