Berbagai perintah linux untuk manajemen sertifikat SSL/TLS

Penjelasan mengenai teori dasar mengenai sertifikat digital diberikan di artikel ini. Di artikel ini akan dibahas berbagai perintah linux yang sering dipakai dalam manajemen sertifikat SSL/TLS yang biasanya banyak digunakan.

Openssl adalah perintah di linux yang digunakan untuk mengelelo sertifikat digital. Perintah ini merupakan perangkat Open Souce, yang digunakan untuk implementasi protokol SSL dan TLS yang digunakan untuk keamanan komunikasi di jaringan komputer. Perintah ini yang menjadi dasar dari berbagai perintah di bawah ini.

Pembuatan kunci privat (private keys)

$ openssl genpkey -algorithm RSA -out kunci_privat.pem

Hasil dari perintah di atas adalah kunci privat bernaman private_key.pem dan algorithm dari kunci privat ini adalah RSA. Ada berbagai macam algoritma yang dapat digunakan di openssl dan RSA merupakan algoritma kunci publik (public keys algorithm).

Pembuatan CSR ( Certificate Signing Request)

Kunci yang digunakan untuk CSR di atas adalah private_key.pem yang sebelumnya dihasilkan dan csr.pem adalah hasil CSR yang diinginkan. Perintah pembuatan CSR tidak memberikan berbagai opsi. Berikan argumen yang diperlukan untuk menghasilkan CSR yang diinginkan.

$ openssl req -new -key kunci_privat.pem-out csr.pem

Pembuatan Seritifikat Self Signed

Setelah menghasilkan CSR di atas, langkah berikutnya adalah menciptakan sertifikat itu sendiri, dan di kasus perintah di bawah menghasilkan sertifikat self signed dan valid hingga 365 hari. Untuk saya sendiri, jika menggunakan Sertifikat Self Signed validitas yang akan saya berikan adalah 3650 hari, tapi itu hanya preferensi saya.

$ openssl req -new -x509 -key kunci_privat.pem -out self_signed_certificate.pem -days 365

Ada satu perintah yang sering saya pribadi gunakan adalah saat saya perlu memastikan apakah kunci pribadi yang saya miliki adalah pasangan dari sertifikat yang saya miliki. Berikut adalah perintahnya:

$ diff <(openssl x509 -in tls.cer -modulus -noout) <(openssl rsa -in tls.key -modulus  -noout)
$

Peritnah di atas untuk memeriksa apakah tls.key merupakan kunci dari sertifikat tls.cer. Saat perintah di atas kembali ke prompt, menandakan bahwa tls.cer dan tls.key adalah 1 pasangan. Jika perintah di atas menghasilkan hasil tertentu menandakan bahwa tls.cer dan tls.key bukan pasangan dan berarti mereka tidak dapat digunakan bersama-sama.

Di beberapa kasus dibutuhkan untuk mengubah format dari berbagai sertifikat, saya sendiri belum pernah mengalaminya. Untuk hal itu berikut adalah perintahnnya:

$ openssl x509 -outform der -in certificate.pem -out certificate.der

Perintah di atas untuk mengkonversi dari format .pem menjadi format .der

Selanjutnya adalah perintah-perintah untuk mendapatkan detil dari sebuah sertifikat:

$  openssl x509 -in certificate.pem -text -noout

Hasil perintah di atas memperlihatkan berbagai informasi seperti versi dari X509, nomor seri (serial number), algoritma signature, issuer (organisasi yang mengeluarkan sertifikat), validitas (tanggal sebelum dan tanggal sesudah), Subject Alternative Name (SAN) dll.

Saat sertifikat ini telah diimplementasikan di sebuah sistem ada berbagai cara untuk memastikan bahwa sertifikat berhasi diinstalasi.

  • Dengan menggunakan web browser dan buka halaman https://<situs yang sertifikatnya baru diinstalasi>. Saat kita membuka halaman situs itu dan tidak ada pesan “Warning, this site is not secure” pertanda instalasi yang dilakukan berhasil
  • Dengan perintah curl dengan situs tujuan blog ini.
$ curl -vvv https://pasirdatar.tech | head -15

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host pasirdatar.tech:443 was resolved.

* IPv6: (none)

* IPv4: 50.6.160.33

*   Trying 50.6.160.33:443...

* Connected to pasirdatar.tech (50.6.160.33) port 443

* ALPN: curl offers h2,http/1.1

* (304) (OUT), TLS handshake, Client hello (1):

} [320 bytes data]

*  CAfile: /etc/ssl/cert.pem

*  CApath: none

* (304) (IN), TLS handshake, Server hello (2):

{ [122 bytes data]

* (304) (IN), TLS handshake, Unknown (8):

{ [19 bytes data]

* (304) (IN), TLS handshake, Certificate (11):

{ [2888 bytes data]

* (304) (IN), TLS handshake, CERT verify (15):

{ [264 bytes data]

* (304) (IN), TLS handshake, Finished (20):

{ [52 bytes data]

* (304) (OUT), TLS handshake, Finished (20):

} [52 bytes data]

* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384 / [blank] / UNDEF

* ALPN: server accepted h2

* Server certificate:

*  subject: CN=bll.jre.temporary.site

*  start date: Sep 14 13:31:03 2024 GMT

*  expire date: Dec 13 13:31:02 2024 GMT

*  subjectAltName: host "pasirdatar.tech" matched cert's "pasirdatar.tech"

*  issuer: C=US; O=Let's Encrypt; CN=R10

*  SSL certificate verify ok.

* using HTTP/2

* [HTTP/2] [1] OPENED stream for https://pasirdatar.tech/

* [HTTP/2] [1] [:method: GET]

* [HTTP/2] [1] [:scheme: https]

* [HTTP/2] [1] [:authority: pasirdatar.tech]

* [HTTP/2] [1] [:path: /]

* [HTTP/2] [1] [user-agent: curl/8.7.1]

* [HTTP/2] [1] [accept: */*]

> GET / HTTP/2

> Host: pasirdatar.tech

> User-Agent: curl/8.7.1

> Accept: */*

> 

* Request completely sent off

< HTTP/2 200 

Hasil seperti di atas menandakan bahwa instalasi dari sertifikat berhasil dilakukan. Dari hasil perintah di atas dapat dilihat bahwa CN dari sertifikat ini adalah subjectAlternateName.

  • menggunakan perintah openssl
$ openssl s_client -connect pasirdatar.tech:443 | head -15

depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority

verify return:1

depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA

verify return:1

depth=0 CN = *.hostgator.com

verify return:1

CONNECTED(00000005)

write W BLOCK

---

Certificate chain

 0 s:/CN=*.hostgator.com

   i:/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA

 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA

   i:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority

 2 s:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority

   i:/C=GB/ST=Greater Manchester/L=Salford/O=Comodo CA Limited/CN=AAA Certificate Services

---

Server certificate

-----BEGIN CERTIFICATE-----

MIIGNzCCBR+gAwIBAgIQFHICDClH4pLscMTK+5gskDANBgkqhkiG9w0BAQsFADCB

jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G

Di perintah terakhir ini terlihat informasi sertifikat dari server, di sini tidak seluruh hasil dari perintah openssl itu diberikan karena cukup panjang.

Related Posts

Verified by MonsterInsights