GNU/Linux >> Belajar Linux >  >> Linux

Cara menggunakan OpenSSL dan Internet PKI di sistem Linux

Artikel ini adalah bagian dua dari tiga yang membahas konsep enkripsi dan infrastruktur kunci publik Internet (PKI). Artikel pertama dalam seri ini memperkenalkan enkripsi simetris dan kunci publik (asimetris) dalam kriptografi. Jika Anda tidak terbiasa dengan konsep dasar enkripsi kunci publik, Anda harus membaca bagian pertama sebelum melanjutkan dengan yang ini.

Di bagian ini, saya menunjukkan dasar-dasar Transport Layer Security dan Secure Socket Layer (TLS/SSL), cara kerja PKI Internet, dan OpenSSL, pisau Swiss Army untuk tugas TLS/SSL. Saya membahas cara menggunakan OpenSSL untuk membuat pasangan kunci dan membuat permintaan penandatanganan sertifikat (CSR) untuk dikirim ke otoritas sertifikat (CA) Anda untuk ditandatangani. Setelah itu, saya akan membahas beberapa kelemahan PKI Internet yang harus Anda ketahui.

[ Anda mungkin juga menikmati: Saran keamanan untuk sysadmin:IT Sendiri, IT Aman, Lindungi IT ]

Pengantar

Asumsikan bahwa Anda seorang sysadmin seperti saya dan salah satu tugas Anda adalah mengelola server web. Karena pengguna Anda peduli dengan keaslian, integritas, dan privasi, Anda ingin mengamankan aplikasi web Anda dengan semacam enkripsi.* Anda tidak tahu sebelumnya siapa yang menggunakan situs Anda, jadi enkripsi simetris tidak diperlukan karena masalah distribusi kunci. Saya menggunakan enkripsi kunci publik di bagian berikut.

TLS/SSL

Singkatan dari Transport Layer Security dan Lapisan Soket Aman adalah TLS dan SSL. Mereka digunakan secara bergantian sebagian besar waktu, dan tidak apa-apa. Meskipun versi protokol SSL lama tidak digunakan lagi, Anda biasanya akan menemukan TLSv1.2 dan TLSv1.3 di web akhir-akhir ini. TLS digunakan dalam koneksi HTTPS antara beberapa klien dan beberapa server web. Gambar berikut menunjukkan contoh sederhana jabat tangan HTTPS.

TLS 1.2 Handshake lengkap dengan data waktu (Sumber:Full_TLS_1.2_Handshake.svg)

Pertama, jabat tangan TCP yang terkenal terjadi antara klien dan server. Kemudian klien memulai jabat tangan HTTPS dengan mengirimkan ClientHello . Pada langkah ini, klien mengirimkan informasi tentang nama server yang diminta dan rangkaian sandi yang didukung. Server merespons dengan ServerHello , mengirimkan cipher suite yang dipilih, parameter koneksi, dan mengirimkan informasi untuk menghitung kunci simetris untuk koneksi yang sedang berlangsung. Last but not least, ia mengirimkan sertifikatnya untuk mengautentikasi dirinya sendiri ke klien.

Jika Anda ingin mendapatkan pemahaman menyeluruh tentang TLS dan SSL, saya merekomendasikan buku Bulletproof SSL dan TLS oleh Ivan Ristic.

Fokus pada sertifikat yang dikirimkan server ke klien. Ini berisi kunci publik server, yang digunakan klien untuk mengenkripsi data sebelum mengirimnya ke server. Otoritas Sertifikat (CA) tepercaya menandatangani kunci publik dalam sertifikat. Saat ini, setiap sistem operasi dan browser web dilengkapi dengan toko yang berisi kunci publik dari banyak CA tepercaya yang berbeda. Kunci publik ini kemudian digunakan untuk memverifikasi tanda tangan dalam sertifikat server seperti yang dibahas di sini. Dengan cara ini, klien dapat memeriksa keaslian server dan bahwa itu adalah host yang benar yang ingin disambungkan oleh klien.

Seperti yang Anda lihat, enkripsi kunci publik digunakan dalam skenario ini untuk dua tugas:

  1. Verifikasi keaslian server
  2. Gunakan kunci publik server untuk mengirimkan data terenkripsi ke server

Ketahuilah bahwa enkripsi kunci publik hanya digunakan untuk membuat koneksi HTTPS dan menghitung kunci sesi simetris yang digunakan untuk komunikasi lebih lanjut. Itu karena enkripsi simetris jauh lebih cepat daripada asimetris.

OpenSSL

Sekarang pertanyaannya adalah, bagaimana cara mendapatkan pasangan kunci untuk server web? Seperti yang dinyatakan sebelumnya, OpenSSL adalah pisau Swiss Army untuk tugas SSL dan TLS. Karena dokumentasinya masih menyisakan ruang untuk perbaikan, saya sarankan Anda membaca buku gratis OpenSSL Cookbook oleh Ivan Ristic untuk mendapatkan semua detailnya. Artikel saya berfokus pada pembuatan pasangan kunci dan Permintaan Penandatanganan Sertifikat (CSR) untuk satu nama domain dan CSR yang mencakup beberapa nama domain.

CSR diperlukan untuk mengirim kunci publik dan informasi lain tentang domain Anda ke CA untuk ditandatangani. Kunci publik bertanda tangan yang akan Anda dapatkan kembali adalah sertifikat yang akan Anda instal di server web Anda bersama dengan kunci pribadi yang sesuai.

Membuat kunci pribadi dan CSR untuk satu domain

Selanjutnya, saya akan memberi Anda contoh membuat kunci pribadi (RSA 2048 bit) dan CSR dalam satu langkah. Anda akan memasukkan semua informasi yang diperlukan.

$ openssl req -newkey rsa:2048 -keyout example.com.key -out example.com.csrMembuat kunci pribadi RSA.............+++ ++................................................................ ........................................................ ...............+++++ menulis kunci pribadi baru ke 'example.com.key'Masukkan frasa sandi PEM:Memverifikasi - Masukkan frasa sandi PEM:-----Anda akan diminta untuk memasukkan informasi yang akan dimasukkan ke dalam permintaan sertifikat Anda. Apa yang akan Anda masukkan adalah apa yang disebut Distinguished Name atau DN. Ada beberapa bidang tetapi Anda dapat mengosongkannyaUntuk beberapa bidang akan ada nilai default,Jika Anda memasukkan '.', bidang akan dibiarkan kosong.-----Nama Negara (kode 2 huruf) [AU]:Destate atau Nama Provinsi (nama lengkap) [Some-State]:CONTOH- Nama Lokalitas NEGARA (misalnya, kota) []:Contoh KotaNama Organisasi (misalnya, perusahaan) [Internet Widgits Pty Ltd]:Contoh LtdNama Unit Organisasi (misalnya, bagian) []:ITNama Umum (misalnya, server FQDN atau nama ANDA) []:contoh.comEm ail Alamat []:[email protected] masukkan atribut 'ekstra' berikut untuk dikirim dengan permintaan sertifikat Anda Kata sandi tantangan []:Nama perusahaan opsional []: 

Anda akan menemukan kedua file di direktori kerja Anda saat ini. Frasa sandi yang Anda masukkan selama proses pembuatan melindungi file kunci pribadi Anda. Jika Anda membukanya di semacam penampil teks, Anda hanya akan mengenali bahwa ini adalah kunci pribadi dan CSR tetapi tidak akan menemukan informasi teks biasa lebih lanjut:

  $ cat example.com. {Kunci, csr} ----- BEGIN dienkripsi PRIVATE KEY ----- MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIaoQRP0LFgu4CAggAMAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECFWvUl1tJyJNBIIEyCFv43Q7xe + FAm5EtIJO2FtwbjXV9hQpl4Zb4JlG7vQvt7aH1 / hQcPFYnjJJnlu8gP84tne1riSc2YWxsZQ3sZLtIOrVIqEOsCumJpoqS8AsAw / fuFIwRpXZenX2 / snGwQSVN545BDGVlzGnUph8lnrG9Kho5loiqYTAQWYUCwgLwe8fWOdXXWY6 + UdKjJHaUYxHdkuMBvnQFJ + Iln4b4onLrGcFKJgNkJ / AShkW / m31ZvRXNX2QiKgl6u3zDTsE3l6rfVaPEJyxg43guPil9nNrGS5rPt6XWEvtWSTfSFEVrMTBSTr1BrUipfnN3gFfCmtNqoSNdkjkpI9vsRekjzGZnVp763WGXmxx59 / sXwgLnA7Br5K + 7B1ECA9Z8iRzfB4OmSrR8HVbuYGRlq5jq / GgBTddFQRYUna0bufGRRBntIjOesYGbvWrg4dTnF8jncqvM + eXJtCvVa0RrpTtuZbdRf3 / 5scjlFpvWQs705tbi777AIw9MySVpsgFY8eD8shKYNpQoRx5kiILlkbabNK1EPOdnCBSCfHoK2ssZFKegc0xG8HLM4iwVS / fg3O02HS2jP74wPJ91sN81IvJ + W1OJ8MizkLJDc4bAER / yo9O7hMJ1ITxlUXWcr0Zwxi1cQzmLLocFh46uKQ8N9iAEnl1m2Ax98hbxtrHVVjGBBbrcIrrp / KfMAUcM6goUjz2PG9 + XI5 / 6bkA0g4qSNVotdPaYTnco0eRClzxvollE8CBeVECql7 + KN3VA0VM2Rtpb98QQZ + asKkYfYf8byQLiCPED4NPkLeYKKL9CrMz + p7Zt3j / q5n0CLEbf / ZX8S6677m6 + Hie9ArEPU1fwpxonH9b4zvZnrsa9FfKW7zIWXq / tt885EjqzxvVUQKcCn2A3lXoXC3FoLaAjmWKjue9vZAdn29C0E4 + Ruk4oGfr / FipI4lZKH + sT1u86Gotjg2W3ZIe8I + Na7v / SJnAO86L7cuG6PFHyt8tBYF7l3WV465GP5PW3bJc0TQnNRUoisMzEH0CRlwYqCHjYIOeZWFCJeyR52Y8qI2yG / hgKMJQ4e / 0vFy + y7lOdU6TSKZ96E3XEVjLPsHKCW0SaEX1gLQdtoTQciwAnzrl9uu / xbyoW7CLTg7Hny8LgJZr + YQaILd1wljEX3KflicEN7stTCj0eF8AH2LgPMhvJ9Zy6OGdVw / oU9rJXhQD3Z6WpQkCrrfE4 / LymuXGdmGIbGlCpuHB8Vlij4om2YnOZebPiDiOLZ9cawanmZkm3YedPbYJbv1NW9koToLKbuW81ZDyzcpFjOaYBtut6RdvNYfZ1OmJPd8jyKuGKRYnqDbeQ / Snk74BNkBiV + 02ozGFaGd1s45A94fFAtzFObY0HZ4JucjspJK6Y2yphPKhPHQiW7vm1mlvRgY3WN6DINq4 + 3Irdwpxky7hxPToh2aUjzlTLdruqR1dk + JSV1 + SFypoBhPBlbx / zglh0ncttbeM5 / Khgu + UXP + ePf7g64lnPFjVIoVBega4CAMHQqffA5c2z3f9qKThIH1IgS5e7GORGHL57MVtvBjUtUyc8eFx4EzgmWVV7D / JzxVDpUBWeAn1yNeOoxjuf2tkZgb / + GNitlbRN / s0Yo8lnbEuplF9UQ ==----- END dienkripsi PRIVATE KEY ---------- BEGIN CERTIFICATE REQUEST ----- MIIC4TCCAckCAQAwgZsxCzAJBgNVBAYTAkRFMRYwFAYDVQQIDA1FWEFNUExFLVNUQVRFMRUwEwYDVQQHDAxFeGFtcGxlIENpdHkxFDA SBgNVBAoMC0V4YW1wbGUgTHRkMQswCQYDVQQLDAJJVDEUMBIGA1UEAwwLZXhhbXBsZS5jb20xJDAiBgkqhkiG9w0BCQEWFXdlYm1hc3RlckBleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMAc6BwShsBWi1DcsHnF88m99fDiDESpD9zq4VCq + wpcc6RjPmAf7uG8ha + CSiyvr9fDgJfzMDpDUG5W2R + WLQhe + 9IS8VFHqpT7ePwHlFt7h + 0Rx3keus9ErY085jFHvGziuhuh4fGE0Ez69LT0ZujeeNad2GEuGQSRTWuloNVTyFy0hIb2f6fAsGBGbW9uSjW8L4hIPpmUgL5LDZ9Ev6p9 / MrNITeUwkIi + FaM3NYrf9Xx2MI2 / frl7ZTl2uGyW8uh24sd6vMoaw1arI + RI / mcxyvADP5qAtnDRhXCPgZBPI0sFpX4MAVj99 + VvxahSubB3yxca8DDFn8cbBfZMBUCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQADSBAnoTFFUphk7EnMRM34oFg4tzoGkV46eLLnUlu0cLmggzuw + BBg0 / Zx3vVjqu7wudr9bg + u0vNHc0UjuAmU5NVhwb4WHBZHw5Lba6WNKVLzYoC4ZzeU1MyWTYh7O76mZzmXVpppotcK5uU5ojDhiiaxkQuqWlsk3txdf / QJ / 1F / pFnHRydT0hMfJQBYo7FLIa + ZuHEysjoUmoo0arLJyuymlWYWFMzV / ds0r4ci9AtUfUUbt3JgcVhZ + h0KQNf26D96c9C + 5v5PnV2pVs4tIzY08HQKEmbWqKyTWToxwID6Qi / dNqhDwt7BUN4g4tNW1wIRPW76nHKGsgTRJFRq ----- AKHIR PERMINTAAN SERTIFIKAT------code> 

Yah, itu tidak terlalu berguna untuk pikiran manusia, jadi di bagian berikutnya, Anda akan menemukan perintah untuk meninjau parameter kunci pribadi Anda dan CSR dalam bentuk yang lebih mudah dibaca manusia.

Meninjau kunci pribadi

Perhatian :Jangan pernah membagikan kunci pribadi Anda kepada siapa pun. Mereka adalah milikmu dan hanya milikmu. Jaga agar mereka tetap rahasia, aman, dan sehat. Ikuti kebijakan organisasi Anda untuk menangani kunci pribadi, CSR, dan sertifikat. Keamanan organisasi Anda (dan pekerjaan Anda) mungkin bergantung padanya.

Contoh berikut menunjukkan kepada Anda bagaimana tampilan kunci pribadi. Dalam operasi normal, biasanya tidak perlu mencetak kunci pribadi seperti itu.

$ openssl pkey -text -noout -in example.com.keyMasukkan frasa sandi untuk example.com.key:RSA Private-Key:(2048 bit, 2 bilangan prima)modulus:    00:c0:1c:e8 :1c:12:86:c0:56:8b:50:dc:b0:79:c5:    f3:c9:bd:f5:f0:e2:0c:44:a9:0f:dc:ea:e1:50 :aa:    fb:0a:5c:73:a4:63:3e:60:1f:ee:e1:bc:85:af:82:    4a:2c:af:af:d7:c3:80:97:f3 :30:3a:43:50:6e:56:    d9:1f:96:2d:08:5e:fb:d2:12:f1:51:47:aa:94:fb:    78:fc:07:94 :5b:7b:87:ed:11:c7:79:1e:ba:cf:44:    ad:8d:3c:e6:31:47:bc:6c:e2:ba:1b:a1:e1:f1 :84:    d0:4c:fa:f4:b4:f4:66:e8:de:78:d6:9d:d8:61:2e:    19:04:91:4d:6b:a5:a0:d5:53 :c8:5c:b4:84:86:f6:    7f:a7:c0:b0:60:46:6d:6f:6e:4a:35:bc:2f:88:48:    3e:99:94:80 :be:4b:0d:9f:44:bf:aa:7d:fc:ca:cd:    21:37:94:c2:42:22:f8:56:8c:dc:d6:2b:7f:d5 :f1:    d8:c2:36:fd:fa:e5:ed:94:e5:da:e1:b2:5b:cb:a1:    db:8b:1d:ea:f3:28:6b:0d:5a :ac:8f:91:23:f9:9c:    c7:2b:c0:0c:fe:6a:02:d9:c3:46:15:c2:3e:06:41:    3c:8d:2c:16 :95:f8:30:05:63:f7:df:95:bf:16:a1:    4a:e6:c1:df:2c:5c:6b:c0:c3:16:7f:1c:6c:17 :d9:    30:15publicExponent:6 5537 (0x10001)privateExponent:    3d:34:f8:7e:79:28:95:7e:fd:43:f6:0c:03:c0:1d:    bb:d8:d9:d2:b5:32:53:6d:c9:b0:08:e5:60:5e:19:    3d:63:d7:34:38:aa:56:d5:d5:b5:f5:ea:61:d0:90:    f1:4b:c8:2a:66:0f:42:5a:28:b3:67:5e:e8:c8:a2:    c4:7d:84:3b:76:87:a4:96:84:6b:f0:f9:58:1e:06:    9d:c5:8c:6e:d9:1c:a5:5b:54:c2:32:18:32:91:1e:    fa:30:bc:e6:56:84:a1:ec:5a:7f:13:44:79:3e:67:    5f:1f:55:77:91:a6:77:ea:e9:74:f7:35:49:40:f6:    97:8d:f3:ac:a8:48:65:ae:8e:84:34:16:d8:e8:7d:    71:b2:30:29:df:fd:db:ff:8a:0f:68:af:d5:76:48:    15:ec:78:14:51:1b:13:de:45:d0:73:7d:cd:32:9a:    0c:08:3f:1e:2a:67:c4:db:51:b8:74:e2:1f:ba:a7:    86:6c:9f:7f:9d:49:75:5a:54:47:3d:01:e6:64:83:    7d:6b:d9:52:0a:d8:f3:a7:1a:28:61:f2:01:9b:32:    e2:cf:99:2b:3a:35:f1:21:88:f8:37:c7:80:80:69:    2e:2b:05:9b:00:c8:49:a9:08:a9:bf:d3:74:e0:0c:    18:13:35:74:e9:03:d6:6b:6b:09:bd:b3:9c:b9:04:    c1prime1:    00:e0:d6:d1:18:cd:60:b2:18:29:93:3f:7a:79:e3:    9b:59:f6:f6:52:74:3d:65:df:92:8f:2c:dc:fb:06:    ca:c1:e6:85:d7:2e:a8:1 c:04:1d:07:e1:be:0a:64:    e4:75:5f:44:71:6b:a7:16:94:46:81:e0:65:b3:09:    3a:55:0e:a8:f0:d9:ee:9f:4e:b4:46:c9:9a:32:b7:    f4:63:9f:b7:e2:54:8c:6f:8f:52:a1:98:07:34:04:    da:56:38:02:f0:4b:54:48:c1:20:29:23:08:19:93:    69:4e:7a:a5:ab:e4:8a:c3:f5:85:37:82:fa:73:ca:    51:fa:f6:9d:4b:d9:ae:b7:ebprime2:    00:da:bc:fa:d3:56:b9:6d:82:73:95:9f:b7:42:42:    4a:eb:5a:98:5c:9c:4d:f7:60:1b:46:1b:6b:87:a5:    b3:8b:ce:a4:fe:2b:ee:65:89:5c:85:22:e0:71:62:    cf:2a:36:ac:aa:1d:d3:66:29:c4:dc:dc:5a:d8:6d:    ce:52:9a:ea:b4:12:c6:24:79:d2:50:08:27:e1:a5:    3d:50:01:5a:fe:1e:86:c5:e1:d7:34:24:d3:00:84:    fa:45:ab:20:69:17:9d:c7:16:8a:04:85:e3:4b:df:    08:5d:71:63:74:d4:78:fd:ea:c5:9c:61:68:55:bc:    f9:3b:0d:96:80:a1:45:b7:ffexponent1:    19:ce:4e:1d:8c:a5:06:8b:e3:69:b5:25:77:8b:fa:    2e:af:3b:c2:66:f9:0d:12:46:1e:0c:c6:28:41:b5:    4f:e0:07:88:95:20:52:66:de:76:23:20:ce:cc:99:    b4:27:05:12:07:8b:1b:fa:54:c5:5f:5e:0c:d8:88:    4b:6e:ed:51:07:92:6d:d2:78:ba:8f:35:15:91:2b:    89:ab:b1:4d:56 :ea:ef:7b:01:be:ee:56:15:50:61:    46:f8:12:ce:45:b7:1c:ca:9d:c8:5a:ee:f9:10:84 :    4b:af:a4:08:40:a8:f4:a8:df:6b:69:ab:19:53:25:    69:aa:98:8f:36:22:e9:95exponent2:    68:45 :57:e8:30:da:39:da:ca:d0:93:8f:5f:75:8c:    93:3e:df:8c:9e:32:08:6f:76:f0:e7:97 :4d:d5:6e:    8e:81:d6:63:17:7c:10:48:f7:a2:bb:aa:74:42:9e:    f0:c7:99:6d:8a:c4:40 :5a:3e:ee:ed:d8:1c:7d:d3:    b1:cb:09:81:07:c6:0e:93:47:ef:40:c4:0a:2b:a3:    db:a4 :99:c4:b3:b6:99:53:fc:2b:6e:36:6b:73:f8:    7e:07:82:6e:b6:84:4e:e8:6e:a8:93:4e :73:d7:80:    fc:52:56:0f:d6:4d:4a:f5:84:77:f4:73:31:13:e1:    57:06:36:2d:61:33:83 :efisien:    00:99:64:d8:95:ad:72:3b:f0:a9:4d:d5:94:72:e3:    5e:bd:17:42:1a:65:c9:1b:bb :eb:e8:09:1a:f8:c6:    93:ee:9d:1d:39:b0:4f:35:70:a6:c3:0c:1f:45:fa:    4b:e3:07:d3 :00:6d:20:c7:d9:07:7f:2f:11:25:81:    45:52:21:be:c6:39:a4:42:3d:a8:29:22:a4:80 :69:    0f:b6:aa:39:c5:9d:35:81:8b:36:20:f4:93:0c:2c:    4e:25:95:e9:02:5e:ed:97:6d :84:70:97:11:78:26:    4f:f6:76:7b:f2:b9:3c:08:59:6c:44:50:16:f0:41:    51:16:0 a:b4:74:92:f3:3c:2c 

Meninjau CSR

Contoh berikut menunjukkan cara meninjau CSR Anda sebelum mengirimkannya ke CA untuk ditandatangani.

$ openssl req -text -noout -in example.com.csrCertificate Request:    Data:        Versi:1 (0x0)        Subject:C =DE, ST =CONTOH-NEGARA, L =Contoh Kota, O =Contoh Ltd, OU =IT, CN =example.com, emailAddress [email protected]        Info Kunci Publik Subjek:            Algoritma Kunci Publik:rsaEncryption              Kunci Publik RSA::1           12:86:c0:56:8b:50:dc:b0:79:c5:                    f3:c9:bd:f5:f0:e2:0c:44:a9:0f:dc:ea:e1:50:aa:fb:0a:5c:73:a4:63:3e:60:1f:ee:e1:bc:85:af:82:                    4a:2c:af:af:d7:c3:80:97:f3:30:3a:43:50:6e:56:                    d9:1f:96:2d:08:5e:fb:d2:12:f1:51:47:aa:94:fb:                    78:fc:07:94:5b 7b:87:ed:11:c7:79:1e:ba:cf:44:                    ad:8d:3c:e6:31:47:bc:6c:e2:ba:1b:a1:e1:f1:84:d0:4c:fa:f4:b4:f4:66:e8:de:78:d6:9d:d8:61:2e:                    19:04:91:4d:6b:a5:a0:d5:53:c8:5c:b4:84:86:f6:                 7f:a7:c0:b0:60:46:6d:6f:6e:4a:35:bc:2f:88:48:                    3e:99:94:80:be:4b:0d:9f:44:bf:aa:7d:fc:ca:cd:                    21:37:94:c2:42:22:f8:56:8c:dc:d6:2b:7f:d5:f1:                 : d8:c e5:ed:94:e5:da:e1:b2:5b:cb:a1:                    db:8b:1d:ea:f3:28:6b:0d:5a:ac:8f:91:23:f9:9c:c7:2b:c0:0c:fe:6a:02:d9:c3:46:15:c2:3e:06:41:                    3c:8d:2c:16:95:f8:30:05:63:f7:biaya :            a0:00    Algoritme Tanda Tangan:sha256WithRSAEncryption         03:48:10:27:a1:31:45:52:98:64:ec:49:cc:44:cd:f8:a0:58:         38:b 06:91:5e:3a:78:b2:e7:52:5b:b4:70:b9:a0:83:3b:         b0:f8:10:60:d3:f6:71:de:f5:63:aa:ee:f0:b9:da:fd:6e:0f:         ae:d2:f3:47:73:45:23:b8:09:94:e4:d5:61:c1:be:16:1c:16:         47:c3:92:db:6b:a5:8d:29:52:f3:62:80:b8:67:37:94:d4:cc:         96:4d:88:7b:3b:be:a6:67 :39:97:56:9a:69:a2:d7:0a:e6:e5:         39:a2:30:e1:8a:26:b1:91:0b:aa:5a:5b:24:de:dc :5d:7f:fa:         89:ff:51:7f:a4:59:c7:47:27:53:d2:13:1f:25:00:58:a3:b1:         4b:21:af:99 :b8:71:32:b2:3a:14:9a:8a:34:6a:b2:c9:ca:ec:         a6:95:66:16:14:cc:d5:fd:db:34:af :87:22:f4:0b:54:7d:45:         1b:b7:72:60:71:58:59:fa:1d:0a:40:d7:f6:e8:3f:7a:73:d0 :         be:e6:fe:4f:9d:5d:a9:56:ce:2d:23:36:34:f0:74:0a:12:66:         d6:a8:ac:93:59:3a:31 :c0:80:fa:42:2f:dd:36:a8:43:c2:de:         c1:50:de:20:e2:d3:56:d7:02:11:3d:6e:fa:9c :72:86:b2:04:         d1:24:54:6a 

Membuat CSR termasuk beberapa nama domain

Ada situasi di mana aplikasi Anda dapat dijangkau dengan nama domain yang berbeda seperti:

  • contoh.com
  • www.contoh.com
  • aplikasi.contoh.com

Untuk membuat CSR yang berisi ketiga nama domain, Anda dapat menggunakan file konfigurasi. Misalnya, gunakan editor teks favorit Anda untuk membuat file dengan konten berikut:

[ req ]default_bits =2048default_keyfile =test_privatekey.pemdistinguished_name =req_distinguished_nameencrypt_key =noprompt =nostring_mask =nombstrreq_extensions =v3_req[ v3_req ]basicserver,subicConstraints,kunci,,,,,,,,,,,,,,,,,,,,,,, , DNS:www.example.com, DNS:app.example.com[ req_distinguished_name ]countryName =DEstateOrProvinceName =CONTOH-STATElocalityName =Contoh City0.organizationName =Contoh Ltd.organizationalUnitName =ITcommonName =example.com

Bagian pertama [ req ] menentukan bahwa kunci RSA pribadi dengan 2048 bit akan dibuat dan disimpan sebagai test_privatekey.pem . Juga, bagian tersebut berisi informasi tentang menemukan bit yang Anda masukkan secara interaktif di bagian awal artikel ini (di bagian [ req_distinguished_name ] . Di [ v3_req ] , Anda akan menemukan beberapa batasan pada keyUsage tetapi yang lebih penting, untuk artikel ini, parameter subjectAltName di mana nama umum dan semua nama tambahan ditentukan. Simpan sebagai openssl.cnf dan jalankan dengan perintah berikut untuk membuat kunci pribadi dan CSR:

$ openssl req -batch -new -config openssl.cnf -out example.com.csrMembuat kunci pribadi RSA............................ ........................................................ +++++...................................+++++menulis kunci pribadi baru ke 'test_privatekey.pem'-----$ lsexample.com.csr  openssl.cnf  test_privatekey.pem 

Perhatikan dalam contoh ini, frasa sandi tidak melindungi kunci pribadi. Ini berguna ketika Anda ingin server web dapat membacanya. Tapi awasi dan jaga agar tetap aman.

CSR disimpan di example.com.csr dan Anda dapat memeriksa konten seperti sebelumnya:

$ openssl req -text -noout -in example.com.csrCertificate Request:    Data:        Versi:1 (0x0)        Subject:C =DE, ST =CONTOH-NEGARA, L =Contoh Kota, O =Contoh Ltd., OU =IT, CN =example.com        Info Kunci Publik Subjek:            Algoritma Kunci Publik:rsaEncryption                Kunci Publik RSA:(2048 bit)       :     :13:fe:c0:ff:57:6a:                    31:0f:68:80:17:eb:f4:0f:b5:3f:56:dd:34:c8:4d:                  :f0:5f3f :fa:0a:f8:94:4d:3b:92:59:05:c2:c3:                    8f:54:40:5d:db:d7:d8:f8:e5:a7:f4:a4:d5:77 :18:                    cc:dc:21:37:f1:72:23:28:16:f2:fe:03:67:a1:e3:                    22:3d:85:80:0b:dd:e2:44:95 :97:5f:12:3d:ab:f2:                    8c:0d:71:c3:8a:76:4f:d1:5b:89:5b:14:c4:e3:33:                    2e:5f :46:e0:4b:7b:f0:cf:ba:a5:ab:35:7f:                    57:70:b0:97:0d:47:d8:3e:0c:ef:15:45:2d:c2 :df:                    d7:3b:91:6f:1b:2e:96:e3:a5:3f:32:3 2:ad:67:57:                    5b:72:09:35:a8:bc:e6:78:07:c5:65:ea:f7:29:3d:                    77:2e:3c:946b:e8:49:2b:28:de:9c:11:92:bf:05:                    b8:ab:05:d1:51:78:82:13:58:f4:79:4f:ad:f4:ec:                    42:8d:74:12:22:48:c0:6f:87:95:45:2d:8e:6d:2f:                    78:ab:d9:41:c5:56:bb:ed:b9:5d:23:d9:6e:f9:80:                    88:3d:2b:f2:f9:a3:45:98:15:99:19:c0:65:22:df:                    8a:71:9e:71f 42:8d:6f:CE:9A:81:18:A4:22:B3:85 Eksponen:65537 (0x10001) Atribut:Ekstensi yang diminta:X509V3 Data:CA:False X509V3 Penggunaan Kunci:Digital Signature, Kunci Penipuan, Data, Data:False X509V3 Key Usage:Digital Signature, Kunci Enkipherment, Data, Data:False X509V3 Key Usage:Digital Signature, Key Encipherment, Data, DATA Encipherment            X509v3 Extended Key Usage:                TLS Web Server Authentication, TLS Web Client Authentication           X509v3 Subject Alternative Name:             .com DNS:  . 56DenganRSAEncryption         96:4b:00:08:e3:44:20:fe:b4:45:01:ac:e6:28:27:f9:22:e4:         da:ea:99:45:d3:dd:44 :04:b6:c8:29:2f:a9:5d:f2:bb:92:6e:         86:a4:c6:22:fb:1b:c0:89:29:bc:00:b4:69:bc :cf:29:01:e7:         b3:d2:b6:f5:cc:95:b1:d1:a2:f6:8d:b4:40:a4:94:4f:7f:1d:         cc:aa:d4 :9c:7e:6d:53:2d:eb:2a:7a:2f:0e:b8:c0:4d:13:71:         19:dd:30:2c:d6:ed:03:a9:70:ff :90:71:82:6a:4e:64:93:1e:         60:c4:f3:cc:16:07:81:47:63:e9:4a:f5:79:99:b8:5e:e0 :e1:         bb:68:8b:45:08:91:4a:d6:dc:70:e6:b4:75:11:77:a6:3d:54:         64:55:50:9f:27:1d :fe:d2:96:19:7b:d2:10:a5:4b:ef:33:6e:         9d:31:5b:a3:4e:89:11:b6:09:c6:07:d6:c9 :8e:e7:88:c9:be:         9a:78:3e:2c:82:76:08:20:e0:1a:e8:9e:fd:7a:b0:3c:6b:5c:         60:a1 :77:98:7c:dd:98:93:c6:d8:d3:f4:de:9a:8f:5a:f3:10:         d1:df:18:a7:7d:bc:2c:50:4e :b9:bf:90:62:57:46:2f:39:b9:         82:1d:5a:1c:bc:92:9f:5b:7e:e0:ac:7d:29:63:fb:04 :e9:71:         68:53:33:90 

Anda harus mengenali bagian Nama Alternatif Subjek x509v3 berisi semua nama domain yang Anda butuhkan.

Baik Anda hanya memerlukan satu nama domain atau lebih dalam sertifikat Anda, kini Anda tahu cara menghasilkan CSR yang diperlukan. Untuk pemahaman yang mendalam, saya sarankan Anda merujuk ke buku yang saya rekomendasikan di atas.

Internet PKI

Sekarang setelah Anda memiliki CSR yang siap untuk ditandatangani oleh CA tepercaya, saatnya untuk memeriksa PKI Internet. Berikut ikhtisar dasar. Untuk mengetahui detailnya, lihat RFC 5280.

Di PKI Internet ada peran berikut:

Pelanggan - Seseorang yang ingin memberikan layanan aman TLS/SSL. Jadi mungkin Anda dan saya.

Otoritas Sertifikasi (CA) - Memverifikasi identitas pelanggan atau domain mereka dan menerbitkan sertifikat yang dapat diinstal pada server web. Ini juga memberikan informasi tentang sertifikat yang telah dicabut.

Pihak Mengandalkan - Ini bisa berupa browser web atau klien jenis lain yang mencoba memvalidasi sertifikat yang dikirim oleh server web Anda. Jangkar kepercayaan yang disebut digunakan untuk memverifikasi sertifikat. Penanda kepercayaan adalah sertifikat yang sepenuhnya tepercaya dan disimpan di toko CA tepercaya browser.

Biasanya, alur kerja berikut diselesaikan sebelum browser web memverifikasi sertifikat dari server web Anda.

  1. Buat kunci pribadi dengan OpenSSL
  2. Buat CSR dengan OpenSSL
  3. Kirim CSR ke CA untuk ditandatangani
  4. Menerima sertifikat yang ditandatangani dari CA
  5. Instal kunci pribadi dan sertifikat di server web Anda
  6. Pengguna/pelanggan Anda dapat mulai menggunakan situs/aplikasi Anda

Ingat apa yang sudah Anda ketahui tentang enkripsi kunci publik. Anda dapat menggunakan kunci pribadi untuk menandatangani pesan dan menggunakan kunci publik yang sesuai untuk memverifikasi tanda tangan. Hal yang sangat mirip terjadi ketika CA menandatangani kunci publik Anda dan menerbitkan sertifikat Anda.

Sertifikat itu sendiri adalah struktur data yang mencakup beberapa informasi tentang Anda atau organisasi Anda. Ini berisi nama domain, kunci publik Anda, nama CA yang mengeluarkan sertifikat, dan tanda tangan CA. Sebagai contoh, saya akan menunjukkan kepada Anda sertifikat yang saat ini digunakan di blog pribadi saya dan menjelaskan bagian terpentingnya (disingkat untuk ikhtisar yang lebih baik).

$ echo "" |openssl s_client -hubungkan www.my-it-brain.de:443 | openssl x509 -text -nooutdepth=2 O =Digital Signature Trust Co., CN =DST Root CA X3verify return:1depth=1 C =US, O =Let's Encrypt, CN =R3verify return:1depth=0 CN =www.my- it-brain.deverify return:1DONECertificate:    Data:        Versi:3 (0x2)        Nomor Seri:            04:50:26:2d:14:91:0f:23:32:af:19:d8:38:a6:00:cf:b4:d6        Algoritme Tanda Tangan:sha256WithRSAEncryption        Penerbit:C =US, O =Let's Encrypt, CN =R3        Validitas            Tidak Sebelum:          22 Februari                                                            . . . . . CN =www.my-it-wain.de Subjek Info Kunci Publik:Algoritma Kunci Publik:RSAEncryption RSA Public-Key:(2048 Bit) Modulus:[...] Eksponen:65537 (0x10001) X509V3 Ekstensi:[... ] 

Bagian setelah "Sertifikat: " berisi informasi seperti nomor seri, algoritme tanda tangan yang digunakan untuk menandatangani kunci publik, nama penerbit, jangka waktu validitas sertifikat, nama domain, dan kunci publik. Namun, lihat baris pertama sebagai mereka menunjukkan jalur penandatanganan:

depth=2 O =Digital Signature Trust Co., CN =DST Root CA X3verify return:1depth=1 C =US, O =Let's Encrypt, CN =R3verify return:1depth=0 CN =www.my -it-brain.deverify return:1DONE 

Apa yang Anda lihat adalah rantai kepercayaan. Anda dapat melihat bahwa sertifikat ini (kunci publik yang terkait dengan www.my-it-brain.de FQDN ) ditandatangani oleh Let's Encrypt R3 (R3 adalah nama sertifikat) yang selanjutnya ditandatangani oleh Digital Signature Trust Co. DST Root CA X3 (di sini DST Root CA X3 adalah nama sertifikat).

Tapi bagaimana browser Anda tahu apakah akan mempercayai salah satu dari sertifikat ini? Sertifikat DST Root CA X3 disimpan di jangkar kepercayaan browser Anda. Lihat gambar berikut, yang menunjukkan jangkar kepercayaan browser saya:

Entri ini memberitahu browser Anda untuk mempercayai semua sertifikat yang ditandatangani oleh DST Root CA X3. Rantai kepercayaan dibangun untuk sertifikat daun saya untuk www.my-it-brain.de . Gambar berikut mengilustrasikan cara kerja rantai kepercayaan.

Sumber Gambar: Yuhkih, CC BY-SA 4.0.

Perhatikan bahwa antara sertifikat entitas akhir dan jangkar kepercayaan di toko browser Anda mungkin ada lebih dari satu sertifikat perantara. Sangat penting bahwa browser Anda dapat memverifikasi setiap sertifikat di sepanjang rantai untuk memverifikasi sertifikat daun Anda. Hal ini penting untuk diperhatikan karena jika browser Anda melewatkan salah satu sertifikat perantara, verifikasi sertifikat Anda akan gagal.

Biasanya, Anda akan mendapatkan sertifikat rantai lengkap dari CA Anda, termasuk sertifikat Anda dan semua perantara yang terlibat, hingga beberapa sertifikat root yang berada di jangkar kepercayaan browser Anda. Ini dianggap sebagai praktik terbaik untuk mengonfigurasi server web Anda untuk memberikan rangkaian lengkap guna memastikan pengguna Anda memiliki pengalaman yang menyenangkan mengunjungi situs Anda.

[ Memikirkan keamanan? Lihat panduan gratis ini untuk meningkatkan keamanan cloud hybrid dan melindungi bisnis Anda. ] 

Menutup

Dalam artikel pertama seri ini, Anda mempelajari dasar-dasar konsep enkripsi. Dalam artikel ini, Anda menerima ikhtisar tingkat tinggi tentang TLS/SSL dan alat OpenSSL, mempelajari cara membuat kunci pribadi dan CSR, yang dapat Anda kirim ke CA untuk ditandatangani. Selain itu, PKI Internet diperkenalkan dengan rantai kepercayaan, yang menunjukkan cara kerja proses verifikasi.

Dalam artikel berikutnya dari seri ini, saya akan melihat beberapa masalah PKI Internet dan apa yang dapat Anda lakukan untuk mengatasinya.

*Tentu saja, ada alasan lain:Situs web Anda akan menerima peringkat yang lebih rendah dalam hasil pencarian jika tidak menggunakan enkripsi TLS/SSL.


Linux
  1. Cara menggunakan perintah grep Linux

  2. Cara menggunakan perintah history di Linux

  3. Cara Membuat Alias ​​​​dan Menggunakan Perintah Alias ​​​​di Linux

  1. Cara Menginstal dan Menggunakan Perintah Ping di Linux

  2. Cara menggunakan Perintah ssh-keygen di Linux

  3. Cara Menginstal dan Menggunakan Glance untuk Memantau Sistem Linux

  1. Cara Menggunakan Perintah sejarah Linux

  2. Cara Menggunakan Perintah Linux xargs

  3. Bagaimana cara mengurangi kerentanan Spectre dan Meltdown pada sistem Linux?