Linux Yöneticisi - SSL Sertifikaları Oluşturun
TLS ve SSL Arka Planı
TLS, SSL ile devam eden soket katmanı güvenliği için yeni standarttır. TLS, SSL'yi ilerleten diğer güvenlik ve protokol sarıcı özellikleriyle birlikte daha iyi şifreleme standartları sunar. Genellikle, TLS ve SSL terimleri birbirinin yerine kullanılır. Bununla birlikte, profesyonel bir CentOS Yöneticisi olarak, her birini ayıran farklılıklara ve geçmişe dikkat etmek önemlidir.
SSL , 3.0 sürümüne kadar çıkar. SSL, Netscape altında bir endüstri standardı olarak geliştirilmiş ve tanıtılmıştır. Netscape, AOL (90'larda Amerika Online olarak bilinen bir ISP) tarafından satın alındıktan sonra, AOL, SSL'ye yönelik güvenlik iyileştirmeleri için gereken değişikliği hiçbir zaman gerçekten desteklemedi.
3.1 sürümünde, SSL teknolojisi açık sistem standartlarına taşındı ve TLS olarak değiştirildi . SSL üzerindeki telif hakları hala AOL'ye ait olduğundan, yeni bir terim icat edildi:TLS - Transport Layer Security. Bu nedenle, TLS'nin aslında SSL'den farklı olduğunu kabul etmek önemlidir . Özellikle, eski SSL teknolojilerinin bilinen güvenlik sorunları olduğu ve günümüzde bazılarının eski olduğu düşünüldüğünden.
Note- Bu eğitici, 3.1 ve üstü teknolojilerden bahsederken TLS terimini kullanacaktır . Sonra SSL SSL teknolojilerine 3.0 ve daha düşük özgü yorum yaparken.
SSL ve TLS Sürüm Oluşturma
Aşağıdaki tablo, TLS ve SSL sürüm oluşturmanın birbiriyle nasıl ilişkili olacağını gösterir. Birkaç kişinin SSL 3.2 sürümü hakkında konuştuğunu duydum . Ancak, muhtemelen terminolojiyi bir blog okuyarak almışlardır. Profesyonel bir yönetici olarak her zaman standart terminolojiyi kullanmak istiyoruz. Bu nedenle, SSL konuşurken geçmiş teknolojilere bir referans olmalıdır. Basit şeyler, bir CentOS iş arayanın tecrübeli bir CS Major gibi görünmesini sağlayabilir.
TLS | SSL |
---|---|
- | 3.0 |
1.0 | 3.1 |
1.1 | 3.2 |
1.2 | 3.3 |
TLS , günümüz İnternet kullanıcıları için önemli olan iki ana işlevi yerine getirir: Birincisi, bir tarafın kim olduğunu doğrular.authentication. İki, sunuyorend-to-end encryption bu yerel özelliği (ftp, http, e-posta protokolleri ve daha fazlası) içermeyen üst düzey protokoller için taşıma katmanında.
Birincisi, bir tarafın kim olduğunu doğrular ve uçtan uca şifreleme olarak güvenlik açısından önemlidir. Bir tüketicinin ödeme almaya yetkili olmayan bir web sitesine şifreli bir bağlantısı varsa, finansal veriler yine de risk altındadır. Bu, her kimlik avı sitesinin sahip olamayacağı şeydir:a properly signed TLS certificate verifying website operators are who they claim to be from a trusted CA.
Düzgün imzalanmış bir sertifikaya sahip olmamanın yalnızca iki yöntemi vardır: kullanıcıyı kendi kendine imzalanan bir sertifika için bir web tarayıcısına güvenmesi için kandırmak veya kullanıcının teknoloji konusunda bilgili olmadığını ve güvenilir bir Sertifikanın önemini bilmeyeceğini ummak Yetkili (veya bir CA).
Bu eğiticide, kendinden imzalı sertifika olarak bilinen şeyi kullanacağız . Bu, web sitesini ziyaret eden her web tarayıcısında bu sertifikaya açıkça güvenilen statüsü verilmeden, kullanıcıları siteyi ziyaret etmekten caydıran bir hata görüntüleneceği anlamına gelir. Daha sonra, kendi kendine imzalanan bir sertifikaya sahip bir siteye erişmeden önce kullanıcının birkaç eylemde atlamasını sağlar. Güvenlik uğruna bunun iyi bir şey olduğunu unutmayın.
Kur ve Yapılandır openssl
openssl , TLS'nin açık kaynaklı uygulamaları için standarttır. openssl , Linux, BSD dağıtımları, OS X gibi sistemlerde kullanılır ve hatta Windows'u destekler.
openssl, taşıma katmanı güvenliği sağladığından ve bir geliştirici için Kimlik Doğrulamanın ayrıntılı programlamasını ve uçtan uca şifrelemeyi özetlediğinden önemlidir . Bu nedenle openssl, TLS kullanan hemen hemen her açık kaynaklı uygulamada kullanılır. Ayrıca, Linux'un her modern sürümüne varsayılan olarak yüklenir.
Varsayılan olarak, openssl en az sürüm 5'ten itibaren CentOS'a yüklenmelidir. Sadece en kurmaya çalışmanız izin temin etmek openssl YUM üzeri. YUM, bir paketin zaten kurulu olup olmadığını bize bildirecek kadar akıllı olduğundan, yüklemeyi çalıştırın. Uyumluluk nedenleriyle eski bir CentOS sürümünü çalıştırıyorsak, yum -y yüklemesi yapmak , openssl'nin yarı son zamanlarda kalp sızıntısı olan güvenlik açığına karşı güncellenmesini sağlayacaktır.
Yükleyiciyi çalıştırırken, aslında openssl için bir güncelleme olduğu bulundu .
[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:
OpenLDAP için Kendinden İmzalı Sertifika Oluşturun
Bu, önceki OpenLDAP kurulumumuz için kendinden imzalı bir oluşturma yöntemidir .
Kendinden imzalı bir OpenLDAP Sertifikası oluşturmak için.
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]#
Artık OpenLDAP sertifikalarımız / etc / openldap / certs / içine yerleştirilmelidir.
[root@centos]# ls /etc/openldap/certs/*.pem
/etc/openldap/certs/vmnetcert.pem /etc/openldap/certs/vmnetkey.pem
[root@centos]#
Gördüğünüz gibi, hem sertifika hem de anahtar / etc / openldap / certs / dizinlerinde kurulu . Son olarak, şu anda kök kullanıcıya ait olduklarından her birinin izinlerini değiştirmemiz gerekiyor.
[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]#
Apache Web Sunucusu için Kendinden İmzalı Sertifika Oluşturun
Bu eğitimde, Apache'nin zaten kurulu olduğunu varsayacağız. Apache'yi başka bir öğreticide (CentOS Güvenlik Duvarı'nı yapılandırarak) kurduk ve ilerideki bir öğretici için Apache'nin gelişmiş kurulumuna geçeceğiz. Öyleyse, Apache'yi henüz yüklemediyseniz, lütfen takip edin.
Apache HTTPd aşağıdaki adımlar kullanılarak kurulabilir -
Step 1 - Apache httpd sunucusu için mod_ssl'yi kurun.
Öncelikle Apache'yi mod_ssl ile yapılandırmamız gerekiyor. YUM paket yöneticisini kullanmak oldukça basittir -
[root@centos]# yum -y install mod_ssl
Ardından Apache'nin yeni yapılandırmayı kullandığından emin olmak için Apache daemonunuzu yeniden yükleyin.
[root@centos]# systemctl reload httpd
Bu noktada Apache, yerel ana bilgisayardaki TLS bağlantılarını destekleyecek şekilde yapılandırılmıştır.
Step 2 - Kendinden imzalı SSL sertifikasını oluşturun.
Öncelikle özel TLS anahtar dizinimizi yapılandıralım.
[root@centos]# mkdir /etc/ssl/private
[root@centos]# chmod 700 /etc/ssl/private/
Note- Bu dizine yalnızca kökün okuma / yazma erişimi olduğundan emin olun. Dünya okuma / yazma erişimiyle, özel anahtarınız koklanan trafiğin şifresini çözmek için kullanılabilir.
Sertifika ve anahtar dosyalarının oluşturulması.
[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 - Kayıtlı bir alan adınız yoksa sunucunun genel IP Adresini kullanabilirsiniz.
Sertifikamıza bir göz atalım -
[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:
Openssl komutuyla kullandığımız her seçenek için bir açıklama:
Komut | Aksiyon |
---|---|
req -X509 | Anahtar yönetimi için X.509 CSR yönetimi PKI standardını kullanın. |
düğümler | Sertifikamızı bir parola ile güven altına almayın. Apache, sertifikayı bir parolayı kesintiye uğratmadan kullanabilmelidir. |
-günler 2555 | Sertifikanın geçerliliğini 7 yıl veya 2555 gün olarak bildirir. Zaman periyodu gerektiği gibi ayarlanabilir. |
-yeni anahtar rsa: 2048 | 2048 bit uzunluğunda RSA kullanarak hem anahtar hem de sertifika oluşturmak için belirtilmiştir. |
Ardından, müşterilerle PFS görüşmesi yapmak için bir Diffie-Heliman grubu oluşturmak istiyoruz.
[centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Bu 5 ila 15 dakika sürecektir.
Perfect Forward Secrecy- Özel anahtarın tehlikeye girmesi durumunda oturum verilerinin güvenliğini sağlamak için kullanılır. Bu, istemci ile sunucu arasında her oturum için benzersiz olan bir anahtar oluşturacaktır.
Şimdi, Perfect Forward Secrecy yapılandırmasını sertifikamıza ekleyin.
[root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt
Apache'yi Anahtar ve Sertifika Dosyalarını Kullanacak Şekilde Yapılandırma
/Etc/httpd/conf.d/ssl.conf üzerinde değişiklikler yapacağız -
Ssl.conf dosyasında aşağıdaki değişiklikleri yapacağız . Ancak, bunu yapmadan önce orijinal dosyayı yedeklemeliyiz. Vi veya emcas gibi gelişmiş bir metin düzenleyicide bir üretim sunucusunda değişiklik yaparken, düzenleme yapmadan önce yapılandırma dosyalarını her zaman yedeklemek en iyi uygulamadır.
[root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/
Şimdi ssl.conf'un çalıştığı bilinen bir kopyasını ana klasörümüzün köküne kopyaladıktan sonra düzenlemelerimize devam edelim.
- Locate
- Hem DocumentRoot'u hem de SunucuAdı'nı aşağıdaki gibi düzenleyin.
\\# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName centos.vmnet.local:443
DocumentRootbu, varsayılan apache dizininizin yoludur. Bu klasörde, web sunucunuzun veya sitenizin varsayılan sayfasını soran bir HTTP isteği görüntüleyecek varsayılan bir sayfa olmalıdır.
ServerNamebir ip adresi veya sunucunun ana bilgisayar adı olabilen sunucu adıdır. TLS için, ana bilgisayar adıyla bir sertifika oluşturmak en iyi uygulamadır. OpenLdap eğiticimizden, yerel kurumsal etki alanında bir centos ana bilgisayar adı oluşturduk: vmnet.local
Şimdi aşağıdaki satırları yorumlamak istiyoruz.
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
Ardından Apache'ye sertifikamızı ve özel / genel anahtar çiftimizi nerede bulacağını bildirin.
Kendinden imzalı sertifika dosyamızın yolunu belirtin
# 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
Son olarak, 443 numaralı bağlantı noktası üzerinden https'ye gelen bağlantılara izin vermemiz gerekiyor .