Ücretsiz ZeroSSL Sertifikası ile Web Sitenizi Nasıl Güvenli Hale Getirirsiniz? 08/08/2023 Server Tahmini Okuma Süresi: 12 Dakika 1) ZeroSSL hesabı oluşturun2) Alan Adlarını Doğrulayın3) Nginx'te ZeroSSL Sertifika Kurulumu4) ZeroSSL ACME Otomasyonuacme.sh'yi yükleyinACME Hesabını Kaydedin.ACME ile ZeroSSL Sertifikası Verin.Sertifikayı Nginx'e YükleSertifika Dosyalarının Cron Üzerinden YenilenmesiGüvenli Yuva Katmanı (SSL), birbirine bağlı iki sistem arasında internet bağlantısını güvenli ve hassas iletişim halinde tutarak güvenli bir bağlantı kurar. Bu, müşterilerin/kullanıcıların banka bilgileri ve pasaportlar gibi bazı hassas belgeler olan verilerini paylaşabilecekleri güvenilir bir ortam oluşturur. SSL, verileri şifreler ve bilgisayar korsanlarının bile güvenliği aşıp internetteki bilgilere erişemeyeceği şekilde aktarılır. SSL, uzak bir sunucudaki bir web sitesi ile bir müşterinin bilgisayarındaki/cihazındaki bir tarayıcı arasında güvenli bir bağlantı için kullanılabilir. Bu bilgilere ulaşmak için Güvenli Köprü Metni Aktarım Protokolü (HTTPS) aracılığıyla erişim sağlanır.Web içeriğinizi güvence altına almak için kullanabileceğiniz, hem premium hem de ücretsiz planlarda bulunan çeşitli SSL sertifikaları vardır. Bu kılavuzda, ZeroSSL sertifikasını tartışacağız. Tıpkı diğer SSL sertifikaları gibi, ZeroSSL de 90 gün süren ücretsiz bir planda mevcuttur ve süresi dolduğunda ücretsiz olarak yenilenir!! ZeroSSL, güvenli bir şifreli bağlantı kurmak için birleştirilmiş hem genel hem de özel anahtarlara sahiptir. ZeroSSL'nin kurulumu ve yönetimi kolaydır. Web sitenizi bir ZeroSSL sertifikasıyla nasıl kurabileceğinizi ve güvenli hale getirebileceğinizi adım adım anlatacağım.1) ZeroSSL hesabı oluşturunBir hesap oluşturarak kaydolmak için ZeroSSL resmi sitesini ziyaret edin. Kullanıcı hesabı olmadan sertifika alamaz veya sertifika başvurusunda bulunamazsınız.Bir hesap oluşturduktan sonra, otomatik olarak giriş yapacaksınız.Yeni bir ZeroSSL sertifikası oluşturmak için Yeni Sertifika düğmesine tıklayın. Bir joker karakter için başvurmayı düşünüyorsanız, “Joker karakter sertifikasına ihtiyacım var” düğmesini etkinleştirin. Güvenli hale getirmek istediğiniz alan adını veya alan adlarını girerek takip edin.Bir sonraki sayfada, yenileme süresi olan 90 güne bırakın.CSR ve Siparişinizi Sonlandır sekmesini varsayılan olarak bırakın.SSL başvuru sürecini tamamlamak için ileri'yi tıklayın.2) Alan Adlarını DoğrulayınZeroSSL, alanınızı doğrulamanız için size isteğe bağlı üç yol sunar; e-posta doğrulama, DNS ve HTTP dosyası yükleme . Her seçenekte, bunun nasıl yapılacağı konusunda talimat verecekler. Bizim durumumuzda, etki alanınızı doğrulamak için HTTP yükleme dosyasını kullan kullanacağız. Doğrulama yöntemi altında HTTP Dosyası Yüklemeyi seçer.Auth dosyasını gösterildiği gibi bağlantıya tıklayarak indirin.Sunucunuzda /var/www/html'ye gidin ve bu dizinleri ekleyin; /.iyi bilinen/pki doğrulaması/cd /var/www/html sudo mkdir -p /.well-known/pki-validationDosyayı yerel bilgisayarınıza indirdiyseniz, FTP protokolünü kullanarak /var/www/html/.well-known/pki-validation / adresine bir dosya yükleyin. ZeroSSL portalınıza geri dönün ve ardından doğrulamayı tamamlamak için ileri'yi tıklayın.Alan(lar)ınızı doğrulamak için düğmeyi tıklayın.Alanın başarılı bir şekilde doğrulanmasından sonra, sertifikanızı indirin ve tercih ettiğiniz konuma kaydedin.Yukarıdaki dosya zip dosyası olarak indirilecektir. Dosyayı yerel bir makineye indirdiyseniz FTP istemcisi aracılığıyla sunucuya yüklediğinizden emin olun ve3) Nginx'te ZeroSSL Sertifika KurulumuBu noktada, sertifikanızı indirmiş ve sunucunuza kaydetmiş olursunuz. Dosya içerisine ZeroSSL lokasyon pathlerini ekleyerek Nginx konfigürasyon dosyasını düzenleyeceğiz. İndirdiğiniz dosyanın içerisinde 3 dosya bulacaksınız; sertifika.crt ca_bundle.crt Özel anahtar Certificate.crt ve ca_bundle.crt'yi tek bir dosyada birleştirin.Linux kullanıcıları için sunucunuza giriş yapın ve dosyanızı aşağıda gösterildiği gibi düzenleyin. Sertifika dosyalarınızın geçerli konumuna gidin. iki dosyayı tek bir dosyada birleştirin, fullchain.pemcd /etc/nginx/ssl cat certificate.crt ca_bundle.crt >> cert.pemYukarıdakileri sunucunuzdaki dosyaların gerçek konumuyla değiştirin.Şimdi Nginx bloğunu düzenleyin.$ sudo nano /etc/nginx/sites-available/zerossl-test.conf listen 443 ssl; ssl on; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/private.key; server_name your.domain.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { root /home/www/html; index index.html; } }Yeni yapılandırmalar seçmesi için Nginx'i yeniden yükleyin/yeniden başlatın.sudo systemctl restart nginxTarayıcınızdan kontrol edin ve yüklü ZeroSSL sertifikanızı görün.Başarı!! ZeroSSL Sertifikası ile web sitenizi mükemmel bir şekilde güvence altına aldınız.4) ZeroSSL ACME OtomasyonuAlternatif olarak, ZeroSSL'nin talep edilmesini ve yenilenmesini otomatikleştirmek için acme.sh yapabiliriz. Yukarıdaki gibi ileri geri manuel çalışma gerektirmeyen çok basit ve anlaşılır bir yöntemdir.acme.sh'yi yükleyinÖncelikle acme.sh için çalışma zamanı ortamı görevi gören socat'i kurmamız gerekecek.#Debian/Ubuntu sudo apt install socat #RHEL/Centos/Rocky sudo yum -y install socatKök kullanıcı hesabına geçebiliriz:sudo su -acme.sh'yi şimdi yükleyin.# git clone https://github.com/acmesh-official/acme.sh.git # cd ./acme.sh # ./acme.sh --install -m your@domain.com #sample output [Sat 04 Sep 2021 09:40:16 PM EAT] Installing to /root/.acme.sh [Sat 04 Sep 2021 09:40:16 PM EAT] Installed to /root/.acme.sh/acme.sh [Sat 04 Sep 2021 09:40:16 PM EAT] Installing alias to '/root/.bashrc' [Sat 04 Sep 2021 09:40:16 PM EAT] OK, Close and reopen your terminal to start using acme.sh [Sat 04 Sep 2021 09:40:16 PM EAT] Installing cron job 53 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null [Sat 04 Sep 2021 09:40:16 PM EAT] Good, bash is found, so change the shebang to use bash as preferred. [Sat 04 Sep 2021 09:40:17 PM EAT] OKSSL'yi yenilemek için her gün çalışan Cron da kuruldu.ACME Hesabını Kaydedin.E-posta adresinizle acme hesabını ZeroSSL'ye kaydedin. E-posta bölümünü geçerli bir e-posta adresiyle değiştirin.# ./acme.sh --register-account -m your@domain.com --server zerossl [Sat 04 Sep 2021 10:15:07 PM EAT] Registering account: https://acme.zerossl.com/v2/DV90 [Sat 04 Sep 2021 10:15:10 PM EAT] Already registered [Sat 04 Sep 2021 10:15:10 PM EAT] ACCOUNT_THUMBPRINT='LCrU.................................'Halihazırda zerossl.com'da bir hesabınız varsa, acme hesabınızı Harici Hesap Bağlama (EAB) kimlik bilgileriyle de kaydedebilirsiniz. ZeroSSL hesabınıza giriş yapın, <> geliştiriciye tıklayın . EAB kimlik bilgileri altında Oluştur düğmesine tıklayın.Şimdi sırasıyla yukarıda oluşturulan kimlik bilgilerini girerek acme hesabını kaydedin../acme.sh --register-account --server zerossl \ --eab-kid xxxxxxxxxxxx \ --eab-hmac-key xxxxxxxxxHer sertifika verirken –server zerossl belirtmekten kaçınmak için ZeroSSL'yi varsayılan CA olarak ayarlayın ../acme.sh --set-default-ca --server zerosslACME ile ZeroSSL Sertifikası Verin.Tek bir etki alanı için yayınlamak için aşağıdaki komutu kullanın. Tercihinize göre modu seçin. Bağımsız, apache ve diğerlerini kullanabilirsiniz.# ./acme.sh --issue -d domain.co.ke --nginx [Sat 04 Sep 2021 11:57:31 PM EAT] Using CA: https://acme.zerossl.com/v2/DV90 [Sat 04 Sep 2021 11:57:31 PM EAT] Single domain='domain.co.ke' [Sat 04 Sep 2021 11:57:31 PM EAT] Getting domain auth token for each domain [Sat 04 Sep 2021 11:57:35 PM EAT] Getting webroot for domain='domain.co.ke' [Sat 04 Sep 2021 11:57:35 PM EAT] Verifying: site.domain.co.ke [Sat 04 Sep 2021 11:57:35 PM EAT] Nginx mode for domain:domain.co.ke [Sat 04 Sep 2021 11:57:36 PM EAT] Found conf file: /etc/nginx/sites-enabled/default [Sat 04 Sep 2021 11:57:36 PM EAT] Backup /etc/nginx/sites-enabled/default to /root/.acme.sh/tinc.novum.co.ke/backup/domain.co.ke.nginx.conf [Sat 04 Sep 2021 11:57:36 PM EAT] Check the nginx conf before setting up. [Sat 04 Sep 2021 11:57:36 PM EAT] OK, Set up nginx config file [Sat 04 Sep 2021 11:57:36 PM EAT] nginx conf is done, let's check it again. [Sat 04 Sep 2021 11:57:36 PM EAT] Reload nginx [Sat 04 Sep 2021 11:57:40 PM EAT] Processing, The CA is processing your order, please just wait. (1/30) [Sat 04 Sep 2021 11:57:43 PM EAT] Success [Sat 04 Sep 2021 11:57:43 PM EAT] Restoring from /root/.acme.sh/tinc.novum.co.ke/backup/domain.co.ke.nginx.conf to /etc/nginx/sites-enabled/default [Sat 04 Sep 2021 11:57:43 PM EAT] Reload nginx [Sat 04 Sep 2021 11:57:43 PM EAT] Verify finished, start to sign. [Sat 04 Sep 2021 11:57:43 PM EAT] Lets finalize the order. [Sat 04 Sep 2021 11:57:43 PM EAT] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/38sA_g_Z7k5OKS3Ugqs34g/finalize' [Sat 04 Sep 2021 11:57:44 PM EAT] Order status is processing, lets sleep and retry. [Sat 04 Sep 2021 11:57:44 PM EAT] Retry after: 15 [Sat 04 Sep 2021 11:58:00 PM EAT] Polling order status: https://acme.zerossl.com/v2/DV90/order/38sA_g_Z7k5OKS3Ugqs34g [Sat 04 Sep 2021 11:58:03 PM EAT] Downloading cert. [Sat 04 Sep 2021 11:58:03 PM EAT] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/XYU0lJ_wWtKre3yMF3hGyg' [Sat 04 Sep 2021 11:58:04 PM EAT] Cert success. -----BEGIN CERTIFICATE----- MIIGbjCCBFagAwIBAgIRANfMRacVD4m64YqVBLIcPnIwDQYJKoZIhvcNAQEMBQAw ================================================================= ================================================================= -----END CERTIFICATE----- [Sat 04 Sep 2021 11:58:04 PM EAT] Your cert is in: /root/.acme.sh/site.domain.co.ke/domain.co.ke.cer [Sat 04 Sep 2021 11:58:04 PM EAT] Your cert key is in: /root/.acme.sh/site.domain.co.ke/domain.co.ke.key [Sat 04 Sep 2021 11:58:04 PM EAT] The intermediate CA cert is in: /root/.acme.sh/site.domain.co.ke/ca.cer [Sat 04 Sep 2021 11:58:04 PM EAT] And the full chain certs is there: /root/.acme.sh/site.domain.co.ke/fullchain.cer Sertifikayı Nginx'e Yükle~/.acme.sh/ klasöründe sertifika kullanmayın . Birçoğu yalnızca dahili kullanım içindir.# ./acme.sh --install-cert -d domain.co.ke \ --key-file "/etc/nginx/ssl/key.pem" \ --fullchain-file "/etc/nginx/ssl/cert.pem" \ --reloadcmd "service nginx force-reload"Örnek çıktı:[Sun 05 Sep 2021 12:18:43 AM EAT] Installing key to: /etc/nginx/ssl/key.pem [Sun 05 Sep 2021 12:18:43 AM EAT] Installing full chain to: /etc/nginx/ssl/cert.pem [Sun 05 Sep 2021 12:18:43 AM EAT] Run reload cmd: service nginx force-reload [Sun 05 Sep 2021 12:18:43 AM EAT] Reload successSertifika Dosyalarının Cron Üzerinden Yenilenmesiacme kurulumu sırasında varsayılan bir cron işi kuruldu. Mısırı buna benzer görünecek şekilde düzenleyin.# crontab -e 13 0 * * * "/root/.acme.sh/acme.sh" \ --cron --home "/root/.acme.sh" \ --install-cert -d domain.co.ke \ --key-file "/etc/nginx/ssl/key.pem" \ --fullchain-file "/etc/nginx/ssl/cert.pem" \ --reloadcmd "service nginx force-reload"Bu cron işi, sertifikaların yenilenmeye hazır olup olmadığını kontrol etmek için her gün 0013 saatte çalışır. Tercihlerinize uyacak şekilde değiştirebilirsiniz. Ayrıca etki alanı ve dosya yollarını gerçek dosyalarınızla değiştirin.Çalışıp çalışmadığını görmek için mısır işini test edin. Kurulumu zorlamak için –force kullanın .# ./acme.sh --cron --force [Sun 05 Sep 2021 12:50:45 AM EAT] ===Starting cron=== [Sun 05 Sep 2021 12:50:50 AM EAT] Renew: 'domain.co.ke' [Sun 05 Sep 2021 12:50:51 AM EAT] Using CA: https://acme.zerossl.com/v2/DV90 [Sun 05 Sep 2021 12:50:51 AM EAT] Single domain='domain.co.ke' [Sun 05 Sep 2021 12:50:52 AM EAT] Getting domain auth token for each domain [Sun 05 Sep 2021 12:50:56 AM EAT] Getting webroot for domain='domain.co.ke' [Sun 05 Sep 2021 12:50:56 AM EAT] Verifying: domain.co.ke [Sun 05 Sep 2021 12:50:56 AM EAT] Nginx mode for domain:domain.co.ke [Sun 05 Sep 2021 12:50:56 AM EAT] Found conf file: /etc/nginx/sites-enabled/default [Sun 05 Sep 2021 12:50:56 AM EAT] Backup /etc/nginx/sites-enabled/default to /root/.acme.sh/tinc.novum.co.ke/backup/domain.co.ke.nginx.conf [Sun 05 Sep 2021 12:50:56 AM EAT] Check the nginx conf before setting up. [Sun 05 Sep 2021 12:50:56 AM EAT] OK, Set up nginx config file [Sun 05 Sep 2021 12:50:56 AM EAT] nginx conf is done, let's check it again. [Sun 05 Sep 2021 12:50:56 AM EAT] Reload nginx [Sun 05 Sep 2021 12:51:00 AM EAT] Processing, The CA is processing your order, please just wait. (1/30) [Sun 05 Sep 2021 12:51:04 AM EAT] Success [Sun 05 Sep 2021 12:51:04 AM EAT] Restoring from /root/.acme.sh/tinc.novum.co.ke/backup/domain.co.ke.nginx.conf to /etc/nginx/sites-enabled/default [Sun 05 Sep 2021 12:51:04 AM EAT] Reload nginx [Sun 05 Sep 2021 12:51:04 AM EAT] Verify finished, start to sign. [Sun 05 Sep 2021 12:51:04 AM EAT] Lets finalize the order. [Sun 05 Sep 2021 12:51:04 AM EAT] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/GyLDJHgZiIe8UICtqGOJ0w/finalize' [Sun 05 Sep 2021 12:51:06 AM EAT] Order status is processing, lets sleep and retry. [Sun 05 Sep 2021 12:51:06 AM EAT] Retry after: 15 [Sun 05 Sep 2021 12:51:22 AM EAT] Polling order status: https://acme.zerossl.com/v2/DV90/order/GyLDJHgZiIe8UICtqGOJ0w [Sun 05 Sep 2021 12:51:24 AM EAT] Downloading cert. [Sun 05 Sep 2021 12:51:24 AM EAT] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/iScVgBHPnK8xpXISQfSJSg' [Sun 05 Sep 2021 12:51:25 AM EAT] Cert success. -----BEGIN CERTIFICATE----- MIIGbDCCBFSgAwIBAgIQQD6ieecUR5mX08AykuCSOTANBgkqhkiG9w0BAQwFADBL MQswCQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NT ================================================================ ================================================================ -----END CERTIFICATE----- [Sun 05 Sep 2021 12:51:25 AM EAT] Your cert is in: /root/.acme.sh/tinc.novum.co.ke/domain.co.ke.cer [Sun 05 Sep 2021 12:51:25 AM EAT] Your cert key is in: /root/.acme.sh/tinc.novum.co.ke/domain.co.ke.key [Sun 05 Sep 2021 12:51:25 AM EAT] The intermediate CA cert is in: /root/.acme.sh/tinc.novum.co.ke/ca.cer [Sun 05 Sep 2021 12:51:25 AM EAT] And the full chain certs is there: /root/.acme.sh/tinc.novum.co.ke/fullchain.cer [Sun 05 Sep 2021 12:51:26 AM EAT] Installing key to: /etc/nginx/ssl/key.pem [Sun 05 Sep 2021 12:51:26 AM EAT] Installing full chain to: /etc/nginx/ssl/cert.pem [Sun 05 Sep 2021 12:51:26 AM EAT] Run reload cmd: service nginx force-reload [Sun 05 Sep 2021 12:51:26 AM EAT] Reload success [Sun 05 Sep 2021 12:51:26 AM EAT] ===End cron===Bir cron işi çalışıyor!! Şerefe.