Admin Linux - Buat Sertifikat SSL
TLS dan Latar Belakang SSL
TLS adalah standar baru untuk keamanan lapisan soket, melanjutkan SSL. TLS menawarkan standar enkripsi yang lebih baik dengan fitur keamanan dan pembungkus protokol lainnya yang meningkatkan SSL. Seringkali, istilah TLS dan SSL digunakan secara bergantian. Namun, sebagai Administrator CentOS profesional, penting untuk mencatat perbedaan dan riwayat yang memisahkan masing-masing.
SSL naik ke versi 3.0. SSL dikembangkan dan dipromosikan sebagai standar industri di bawah Netscape. Setelah Netscape dibeli oleh AOL (ISP yang populer di tahun 90-an atau dikenal sebagai America Online), AOL tidak pernah benar-benar mempromosikan perubahan yang diperlukan untuk peningkatan keamanan pada SSL.
Pada versi 3.1, teknologi SSL dipindahkan ke standar sistem terbuka dan diubah menjadi TLS . Karena hak cipta di SSL masih dimiliki oleh AOL, istilah baru diciptakan:TLS - Transport Layer Security. Jadi penting untuk diketahui bahwa TLS pada kenyataannya berbeda dari SSL . Terutama, karena teknologi SSL yang lebih lama telah mengetahui masalah keamanan dan beberapa dianggap usang saat ini.
Note- Tutorial ini akan menggunakan istilah TLS saat berbicara tentang teknologi 3.1 dan yang lebih tinggi. Kemudian SSL saat berkomentar khusus untuk teknologi SSL 3.0 dan yang lebih rendah.
Versi SSL vs TLS
Tabel berikut menunjukkan bagaimana hubungan versi TLS dan SSL satu sama lain. Saya telah mendengar beberapa orang berbicara tentang SSL versi 3.2. Namun, mereka mungkin mendapat terminologi dari membaca blog. Sebagai administrator profesional, kami selalu ingin menggunakan terminologi standar. Karenanya, saat berbicara SSL harus menjadi referensi ke teknologi masa lalu. Hal-hal sederhana dapat membuat pencari kerja CentOS terlihat seperti CS Major yang berpengalaman.
TLS | SSL |
---|---|
- | 3.0 |
1.0 | 3.1 |
1.1 | 3.2 |
1.2 | 3.3 |
TLS melakukan dua fungsi utama yang penting bagi pengguna Internet saat ini: Satu, memverifikasi siapa pihak, yang dikenal sebagaiauthentication. Dua, ia menawarkanend-to-end encryption di lapisan transport untuk protokol tingkat atas yang tidak memiliki fitur asli ini (ftp, http, protokol email, dan lainnya).
Yang pertama, memverifikasi siapa pihak tersebut dan penting bagi keamanan sebagai enkripsi ujung-ke-ujung. Jika konsumen memiliki koneksi terenkripsi ke situs web yang tidak berwenang untuk mengambil pembayaran, data keuangan masih berisiko. Inilah yang gagal dimiliki setiap situs phishing:a properly signed TLS certificate verifying website operators are who they claim to be from a trusted CA.
Hanya ada dua metode untuk menghindari tidak memiliki sertifikat yang ditandatangani dengan benar: menipu pengguna agar mengizinkan kepercayaan browser web untuk sertifikat yang ditandatangani sendiri atau berharap pengguna tidak paham teknologi dan tidak akan tahu pentingnya Sertifikat tepercaya Otoritas (atau CA).
Dalam tutorial ini, kita akan menggunakan apa yang dikenal sebagai sertifikat yang ditandatangani sendiri. Artinya, tanpa secara eksplisit memberikan sertifikat ini status tepercaya di setiap browser web yang mengunjungi situs web, kesalahan akan ditampilkan sehingga membuat pengguna enggan mengunjungi situs tersebut. Kemudian, ini akan membuat pengguna melompat melalui beberapa tindakan sebelum mengakses situs dengan sertifikat yang ditandatangani sendiri. Ingat, demi keamanan, ini adalah hal yang baik.
Instal dan Konfigurasi openssl
openssl adalah standar untuk implementasi open-source TLS. openssl digunakan pada sistem seperti Linux, distribusi BSD, OS X, dan bahkan mendukung Windows.
openssl penting, karena menyediakan keamanan lapisan transport dan mengabstraksi pemrograman rinci dari Authentication dan enkripsi ujung-ke-ujung untuk pengembang. Inilah sebabnya mengapa openssl digunakan dengan hampir setiap aplikasi open-source menggunakan TLS. Itu juga diinstal secara default pada setiap versi Linux modern.
Secara default, openssl harus diinstal pada CentOS setidaknya dari versi 5 dan seterusnya. Sekadar memastikan, ayo coba instal openssl melalui YUM. Jalankan saja instal, karena YUM cukup cerdas untuk memberi tahu kami jika paket sudah diinstal. Jika kami menjalankan CentOS versi lama karena alasan kompatibilitas, melakukan instalasi yum -y akan memastikan openssl diperbarui terhadap kerentanan yang semi-terbaru.
Saat menjalankan penginstal, ditemukan sebenarnya ada pembaruan untuk openssl .
[root@centos]# yum -y install openssl
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 for
package: 1:openssl-1.0.1e-60.el7_3.1.x86_64
--> Running transaction check
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================
===============================================================================
Package Arch
Version Repository Size
===============================================================================
===============================================================================
Updating:
openssl x86_64
1:1.0.1e-60.el7_3.1 updates 713 k
Updating for dependencies:
Buat Sertifikat yang ditandatangani sendiri untuk OpenLDAP
Ini adalah metode untuk membuat tanda tangan sendiri untuk instalasi OpenLDAP kita sebelumnya .
Untuk membuat Sertifikat OpenLDAP yang ditandatangani sendiri.
openssl req -new -x509 -nodes -out /etc/openldap/certs/myldaplocal.pem -keyout
/etc/openldap/certs/myldaplocal.pem -days 365
[root@centos]# openssl req -new -x509 -nodes -out /etc/openldap/certs/vmnet.pem
-keyout /etc/openldap/certs/vmnet.pem -days 365
Generating a 2048 bit RSA private key
.............................................+++
................................................+++
writing new private key to '/etc/openldap/certs/vmnet.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Califonia
Locality Name (eg, city) [Default City]:LA
Organization Name (eg, company) [Default Company Ltd]:vmnet
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos
Email Address []:[email protected]
[root@centos]#
Sekarang sertifikat OpenLDAP kami harus ditempatkan di / etc / openldap / certs /
[root@centos]# ls /etc/openldap/certs/*.pem
/etc/openldap/certs/vmnetcert.pem /etc/openldap/certs/vmnetkey.pem
[root@centos]#
Seperti yang Anda lihat, kami memiliki sertifikat dan kunci yang diinstal di direktori / etc / openldap / certs / . Terakhir, kita perlu mengubah hak akses untuk masing-masing, karena mereka saat ini dimiliki oleh pengguna root.
[root@centos]# chown -R ldap:ldap /etc/openldap/certs/*.pem
[root@centos]# ls -ld /etc/openldap/certs/*.pem
-rw-r--r--. 1 ldap ldap 1395 Feb 20 10:00 /etc/openldap/certs/vmnetcert.pem
-rw-r--r--. 1 ldap ldap 1704 Feb 20 10:00 /etc/openldap/certs/vmnetkey.pem
[root@centos]#
Buat Sertifikat yang Ditandatangani Sendiri untuk Server Web Apache
Dalam tutorial ini, kami akan menganggap Apache sudah diinstal. Kami menginstal Apache di tutorial lain (mengkonfigurasi CentOS Firewall) dan akan masuk ke instalasi lanjutan Apache untuk tutorial selanjutnya. Jadi, jika Anda belum menginstal Apache, silakan ikuti.
Setelah Apache HTTPd dapat diinstal menggunakan langkah-langkah berikut -
Step 1 - Instal mod_ssl untuk server httpd Apache.
Pertama kita perlu mengkonfigurasi Apache dengan mod_ssl. Menggunakan pengelola paket YUM ini cukup sederhana -
[root@centos]# yum -y install mod_ssl
Kemudian muat ulang daemon Apache Anda untuk memastikan Apache menggunakan konfigurasi baru.
[root@centos]# systemctl reload httpd
Pada titik ini, Apache dikonfigurasi untuk mendukung koneksi TLS di host lokal.
Step 2 - Buat sertifikat ssl yang ditandatangani sendiri.
Pertama, mari konfigurasikan direktori kunci TLS pribadi kita.
[root@centos]# mkdir /etc/ssl/private
[root@centos]# chmod 700 /etc/ssl/private/
Note- Pastikan hanya root yang memiliki akses baca / tulis ke direktori ini. Dengan akses baca / tulis dunia, kunci pribadi Anda dapat digunakan untuk mendekripsi lalu lintas yang diendus.
Menghasilkan sertifikat dan file kunci.
[root@centos]# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
/etc/ssl/private/self-gen-apache.key -out /etc/ssl/certs/self-sign-apache.crt
Generating a 2048 bit RSA private key
..........+++
....+++
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:xx
Locality Name (eg, city) [Default City]:xxxx
Organization Name (eg, company) [Default Company Ltd]:VMNET
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos.vmnet.local
Email Address []:
[root@centos]#
Note - Anda dapat menggunakan Alamat IP publik server jika Anda tidak memiliki nama domain terdaftar.
Mari kita lihat sertifikat kami -
[root@centos]# openssl x509 -in self-sign-apache.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 17620849408802622302 (0xf489d52d94550b5e)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
Validity
Not Before: Feb 24 07:07:55 2017 GMT
Not After : Feb 24 07:07:55 2018 GMT
Subject: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c1:74:3e:fc:03:ca:06:95:8d:3a:0b:7e:1a:56:
f3:8d:de:c4:7e:ee:f9:fa:79:82:bf:db:a9:6d:2a:
57:e5:4c:31:83:cf:92:c4:e7:16:57:59:02:9e:38:
47:00:cd:b8:31:b8:34:55:1c:a3:5d:cd:b4:8c:b0:
66:0c:0c:81:8b:7e:65:26:50:9d:b7:ab:78:95:a5:
31:5e:87:81:cd:43:fc:4d:00:47:5e:06:d0:cb:71:
9b:2a:ab:f0:90:ce:81:45:0d:ae:a8:84:80:c5:0e:
79:8a:c1:9b:f4:38:5d:9e:94:4e:3a:3f:bd:cc:89:
e5:96:4a:44:f5:3d:13:20:3d:6a:c6:4d:91:be:aa:
ef:2e:d5:81:ea:82:c6:09:4f:40:74:c1:b1:37:6c:
ff:50:08:dc:c8:f0:67:75:12:ab:cd:8d:3e:7b:59:
e0:83:64:5d:0c:ab:93:e2:1c:78:f0:f4:80:9e:42:
7d:49:57:71:a2:96:c6:b8:44:16:93:6c:62:87:0f:
5c:fe:df:29:89:03:6e:e5:6d:db:0a:65:b2:5e:1d:
c8:07:3d:8a:f0:6c:7f:f3:b9:32:b4:97:f6:71:81:
6b:97:e3:08:bd:d6:f8:19:40:f1:15:7e:f2:fd:a5:
12:24:08:39:fa:b6:cc:69:4e:53:1d:7e:9a:be:4b:
Berikut adalah penjelasan untuk setiap opsi yang kami gunakan dengan perintah openssl -
Perintah | Tindakan |
---|---|
req -X509 | Gunakan standar PKI manajemen CSR X.509 untuk manajemen kunci. |
-node | Jangan amankan sertifikat kami dengan frasa sandi. Apache harus dapat menggunakan sertifikat tanpa gangguan frasa sandi. |
-hari 2555 | Memberitahukan keabsahan sertifikat sampai 7 tahun atau 2555 hari. Jangka waktu dapat diatur sesuai kebutuhan. |
-newkey rsa: 2048 | Ditentukan untuk menghasilkan kunci dan sertifikat menggunakan RSA dengan panjang 2048 bit. |
Selanjutnya, kami ingin membuat grup Diffie-Heliman untuk menegosiasikan PFS dengan klien.
[centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Ini akan memakan waktu dari 5 hingga 15 menit.
Perfect Forward Secrecy- Digunakan untuk mengamankan data sesi jika kunci pribadi telah disusupi. Ini akan menghasilkan kunci yang digunakan antara klien dan server yang unik untuk setiap sesi.
Sekarang, tambahkan konfigurasi Kerahasiaan Teruskan Sempurna ke sertifikat kami.
[root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt
Konfigurasikan Apache untuk Menggunakan File Kunci dan Sertifikat
Kami akan membuat perubahan pada /etc/httpd/conf.d/ssl.conf -
Kami akan membuat perubahan berikut ke ssl.conf . Namun, sebelum kita melakukannya, kita harus membuat cadangan file asli. Saat membuat perubahan ke server produksi di editor teks lanjutan seperti vi atau emcas , praktik terbaiknya adalah selalu mencadangkan file konfigurasi sebelum mengedit.
[root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/
Sekarang mari kita lanjutkan pengeditan kita setelah menyalin salinan ssl.conf yang diketahui berfungsi ke root folder rumah kita.
- Locate
- Edit DocumentRoot dan ServerName sebagai berikut.
\\# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName centos.vmnet.local:443
DocumentRootini adalah jalur ke direktori apache default Anda. Dalam folder ini harus menjadi halaman default yang akan menampilkan permintaan HTTP yang menanyakan halaman default dari server web atau situs Anda.
ServerNameadalah nama server yang dapat berupa alamat ip atau nama host server. Untuk TLS, praktik terbaiknya adalah membuat sertifikat dengan nama host. Dari tutorial OpenLdap kami, kami membuat nama host centos di domain perusahaan lokal: vmnet.local
Sekarang kami ingin mengomentari baris berikut.
SSLProtocol
# SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect. Disable SSLv2 access by default:
~~~~> #SSLProtocol all -SSLv2
# SSL Cipher Suite:
# List the ciphers that the client is permitted to negotiate.
# See the mod_ssl documentation for a complete list.
~~~~> #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
Kemudian beri tahu Apache di mana menemukan sertifikat dan pasangan kunci pribadi / publik kami.
Tentukan jalur ke file sertifikat yang ditandatangani sendiri
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
~~~~> SSLCertificateFile /etc/ssl/certs/self-sign-apache.crt
specify path to our private key file
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
~~~~> SSLCertificateKeyFile /etc/ssl/private/self-gen-apache.key
Terakhir, kami perlu mengizinkan koneksi masuk ke https melalui port 443.