bg-tutorials

Heroku’ya SSL Sertifikası Nasıl Yüklenir

Bu kılavuzda Heroku’ya SSL sertifikası nasıl kurulur anlatılmaktadır. Heroku’nun günümüzde TLS sonlandırmak için kullandığı her iki yöntemi de kapsar: ücretsiz Let’s Encrypt sertifikalarını sizin için sağlayan ve yenileyen Otomatik Sertifika Yönetimi (ACM) ve panel veya Heroku CLI üzerinden üçüncü taraf bir sertifikanın manuel olarak yüklenmesi.

Başlamadan önce bilmeniz gereken birkaç şey var. Heroku’nun eski SSL Endpoint eklentisi (aylık 20$’lık ücretli ürün) 2021’de kullanımdan kaldırıldı ve artık yeni uygulamalarda sağlanamıyor. Her yeni HTTPS dağıtımı, SNI (Server Name Indication) uzantısına dayanan ve her ücretli dyno kademesinde ek ücret olmadan sunulan Heroku SSL‘i kullanır. Ücretsiz dyno’lar 28 Kasım 2022’de kullanımdan kaldırıldı, dolayısıyla özel bir alan adı eklemek ve HTTPS sunmak için Eco, Basic, Standard veya Performance planına ihtiyacınız var.

CSR oluşturun (manuel olarak yüklenen sertifikalar için)

CSR’nizi zaten oluşturduysanız ve Sertifika Yetkilinizden verilen sertifikayı aldıysanız, doğrudan Heroku’ya SSL sertifikası kurma bölümüne geçebilirsiniz.

CSR’ye sadece manuel olarak yükleyeceğiniz üçüncü taraf bir sertifika satın alıyorsanız ihtiyacınız vardır. ACM kullanmayı planlıyorsanız bu bölümü tamamen atlayabilirsiniz: ACM sertifikayı sizin için düzenler ve gönderilecek bir CSR yoktur.

CSR (Sertifika İmzalama Talebi), sipariş sırasında Sertifika Yetkilisine gönderdiğiniz metin bloğudur. Alan adı ve kuruluş bilgilerinizi ve sertifikanın kendisine göre düzenleneceği açık anahtarı taşır. Heroku, platformun kendisinde CSR oluşturmaz, bu nedenle talebi platform dışında oluşturursunuz. İki seçeneğiniz vardır:

Oluşan .csr dosyasını herhangi bir metin düzenleyicide açın ve —–BEGIN CERTIFICATE REQUEST—– ve —–END CERTIFICATE REQUEST—– işaretleyicileri dahil olmak üzere tüm bloğu kopyalayın, ardından SSL Dragon siparişiniz sırasında yapıştırın. CA’nın sertifikayı doğrulamasını ve düzenlemesini bekleyin (DV için birkaç dakikadan OV/EV için birkaç iş gününe kadar sürebilir) ve aşağıdaki kurulum adımlarına geçin.

Heroku’ya SSL sertifikası kurma

Heroku, HTTPS için size iki yol sunar. Sertifikayı nasıl edindiğinize uygun olanı seçin:

  • ACM (çoğu uygulama için önerilir). Heroku, uygulamadaki her özel alan adı için ücretsiz bir Let’s Encrypt sertifikasını düzenler, kurar ve otomatik olarak yeniler. Yüklenecek dosya, takip edilecek yenileme takvimi yoktur. Eco, Basic, Standard ve Performance dyno’larında kullanılabilir.
  • Manuel yükleme. Belirli bir üçüncü taraf sertifikaya ihtiyacınız olduğunda bunu kullanın (örneğin, Kuruluş Doğrulamalı veya Genişletilmiş Doğrulamalı bir ürün, ya da Let’s Encrypt dışında bir CA’dan wildcard sertifika). Sertifikayı ve özel anahtarı panel veya CLI aracılığıyla kendiniz yüklersiniz.

Adım 1. Özel alan adınızı uygulamaya ekleyin

Özel alan adınız uygulamaya kaydedilene kadar Heroku hiçbir sertifika (ACM veya manuel) sağlamayacaktır. Yönetici yetkili bir terminalden şunu çalıştırın:

heroku domains:add www.example.com -a your-app-name

www.example.com yerine kendi alan adınızı, your-app-name yerine Heroku uygulamanızın adını yazın. Ek ana bilgisayar adları için (örneğin sade bir kök alan adı veya ikinci bir alt alan adı) komutu tekrarlayın. Alan adını panelden de Settings > Domains and certificates > Add domain üzerinden ekleyebilirsiniz.

Eklediğiniz her alan adı, örneğin quiet-fire-1234.herokudns.com gibi benzersiz bir DNS hedefiyle birlikte döndürülür. Bu değere Adım 3’te DNS’i güncellerken ihtiyacınız olacak.

Adım 2. Sertifikayı sağlayın

Seçenek A: ACM (ücretsiz, otomatik yenilenen Let’s Encrypt)

Uygulama için ACM’i CLI üzerinden etkinleştirin:

heroku certs:auto:enable -a your-app-name

Heroku, uygulamadaki her özel alan adı için bir Let’s Encrypt sertifikası düzenlemeye başlar. İlerlemeyi görüntülemek ve durumu doğrulamak için şunu çalıştırın:

heroku certs:auto -a your-app-name

ACM’i panelden de etkinleştirebilirsiniz: uygulamayı açın, Settings > Domains and certificates bölümüne gidin, Configure SSL‘e tıklayın, Automated Certificate Management‘i seçin, ardından Continue‘a tıklayın. DNS ayarlandığında (Adım 3), ACM alan adı doğrulamasını tamamlar ve sertifika kullanıma girer. Yenilemeler, süre dolmadan yaklaşık bir ay önce otomatik olarak gerçekleşir.

Seçenek B: üçüncü taraf sertifikanın manuel olarak yüklenmesi

CA, gelen kutunuza üç dosya gönderir:

  • Genellikle .crt uzantılı (PEM formatında) son varlık sertifikası.
  • Genellikle .ca-bundle uzantılı CA paketi (ara sertifikalar).
  • CSR ile birlikte oluşturulan özel anahtar (.key dosyası).

Heroku, son varlık sertifikasının ardından ara sertifikaları içeren (fullchain) tek bir PEM dosyası bekler. Linux veya macOS’ta bunları cat ile birleştirin:

cat yourcertificate.crt bundle.ca-bundle > server.crt

Windows’ta, her iki dosyayı düz bir metin düzenleyicide açın (Notepad++ veya VS Code, Word değil) ve .ca-bundle içeriğini .crt içeriğinin altına, bloklar arasında boş satır olmadan, bu sırayla yapıştırın. Birleştirilmiş dosyayı server.crt olarak kaydedin.

Fullchain dosyasını ve özel anahtarı Heroku CLI ile yükleyin:

heroku certs:add server.crt server.key -a your-app-name

Uygulamadaki mevcut bir sertifikayı değiştiriyorsanız (örneğin yenileme sırasında), Heroku’nun aynı DNS hedefini koruması için certs:add yerine certs:update kullanın:

heroku certs:update server.crt server.key -a your-app-name

Paneli mi tercih ediyorsunuz? Uygulamayı açın, Settings > Domains and certificates bölümüne gidin, Configure SSL‘e tıklayın, Manually‘i seçin, ardından birleştirilmiş server.crt dosyasını sertifika alanına ve .key dosyasını özel anahtar alanına sürükleyin. Next‘e tıklayın ve onaylayın.

Yükleme sırasında bir Internal server error görüyorsanız, yerel Heroku CLI’nız büyük olasılıkla güncel değildir. heroku update ile güncelleyin ve yeniden deneyin. Heroku ayrıca RSA anahtar gerektirir; ECDSA anahtarlar şu anda manuel yüklemeler için desteklenmemektedir.

Adım 3. DNS’i Heroku DNS hedefine yönlendirin

Sağlama yönteminden bağımsız olarak, sertifika sadece özel alan adı için DNS Heroku’ya çözümlendiğinde kullanıma girer. Alan adlarınızı listeleyin ve Heroku’nun döndürdüğü DNS hedefini kopyalayın:

heroku domains -a your-app-name

Her alan adının yanında quiet-fire-1234.herokudns.com gibi bir değer göreceksiniz. DNS sağlayıcınızda, her alan adı için bir kayıt oluşturun:

  • Alt alan adı (örneğin www.example.com): Heroku DNS hedefine işaret eden bir CNAME kaydı oluşturun.
  • Apex / kök alan adı (örneğin example.com): DNS spesifikasyonuna göre apex üzerinde CNAME’e izin verilmez, bu nedenle aynı Heroku DNS hedefine işaret eden bir ALIAS, ANAME veya düzleştirilmiş CNAME kaydı kullanın (tam ad DNS sağlayıcınıza bağlıdır). DNS sağlayıcınız bunlardan hiçbirini desteklemiyorsa, DNS’i bunları destekleyen bir sağlayıcıda barındırın (Cloudflare, DNSimple, Route 53, NS1, easyDNS vb.).

DNS’i your-app-name.herokuapp.com veya herhangi bir *.herokussl.com ana bilgisayar adına yönlendirmeyin: ACM sertifikayı bunlar üzerinden doğrulayamaz ve manuel bir bağlama da doğru şekilde yönlendirilmez. Her zaman Heroku’nun atadığı alan adına özel DNS hedefini kullanın.

DNS değişikliklerinin yayılması birkaç dakika ile birkaç saat arasında sürebilir. Heroku güncellenmiş kaydı gördüğünde, ACM doğrulamayı otomatik olarak tamamlar (veya manuel sertifikanız trafik sunmaya başlar).

Adım 4. Sertifikanın etkin olduğunu doğrulayın

Kurulumu CLI üzerinden doğrulayın:

heroku certs:info -a your-app-name

Çıktı; sertifikayı, sertifikayı veren CA’yı, son kullanma tarihini ve kapsadığı alan adlarını listeler. Ardından sitenizi bir tarayıcıda https:// üzerinden açın ve kilit simgesinin göründüğünü kontrol edin, sertifika zincirinin eksiksiz olduğunu ve protokollerin doğru şekilde yapılandırıldığını doğrulamak için SSL Checker aracımızla daha ayrıntılı bir dış tarama çalıştırın.

Sıkça Sorulan Sorular

Heroku’da hâlâ SSL Endpoint eklentisine ihtiyacım var mı?

Hayır. Eski SSL Endpoint eklentisi 2021’de kullanımdan kaldırıldı (yeni sağlama 14 Mayıs 2021’de durduruldu) ve o yılın sonlarında kullanım süresi tamamen sona erdi. Her yeni uygulama, her ücretli dyno kademesinde ücretsiz olarak sunulan SNI destekli Heroku SSL‘i kullanır. Uzun süredir çalışan uygulamalardaki mevcut SSL Endpoint’ler çalışmaya devam eder, ancak Heroku bunların Heroku SSL’e taşınmasını önerir.

ACM mi yoksa manuel yükleme mi: hangisini kullanmalıyım?

Belirli bir nedeniniz olmadıkça ACM kullanın. Ücretsizdir, her sertifikayı süresi dolmadan yaklaşık bir ay önce otomatik olarak yeniler ve ekibinizin gündeminden yenileme takvimini kaldırır. Belirli bir CA’dan Alan Adı Doğrulamalı, Kuruluş Doğrulamalı veya Genişletilmiş Doğrulamalı bir sertifikaya, bir wildcard sertifikaya veya bu Heroku uygulamasında olmayan ana bilgisayar adlarını da kapsayan çok alanlı (SAN) bir sertifikaya ihtiyacınız olduğunda manuel yüklemeyi seçin.

Ücretsiz bir Heroku dyno’suna SSL kurabilir miyim?

Hayır. Ücretsiz dyno’lar 28 Kasım 2022’de kullanımdan kaldırıldı. Özel alan adları ve SSL (hem ACM hem de manuel) ücretli bir plan gerektirir: Eco, Basic, Standard veya Performance. Kasım 2025 itibarıyla, ACM ve manuel sertifikaların ikisi de Eco dyno’larında desteklenmektedir; bu, özel bir alan adında HTTPS için en düşük maliyetli yoldur.

Özel alan adım neden hâlâ varsayılan Heroku sertifikasını gösteriyor?

İki yaygın neden var. Birincisi, DNS hâlâ Heroku’nun atadığı alana özel DNS hedefi (quiet-fire-1234.herokudns.com gibi bir şey) yerine *.herokuapp.com‘a işaret ediyordur. DNS sağlayıcınızdaki kaydı yeniden kontrol edin ve güncelleyin. İkincisi, DNS değişmiş ama yayılım henüz tamamlanmamıştır; birkaç dakika ile birkaç saat bekleyin, ardından doğrulamak için heroku certs:info -a your-app-name komutunu çalıştırın.

Heroku’da SSL sertifikasını nasıl yenilerim?

ACM ile yenilemeniz gerekmez: Heroku, süresi dolmadan kabaca bir ay önce sertifikayı Let’s Encrypt’ten otomatik olarak yeniden düzenler. Manuel bir sertifikayla, yenilemeyi sipariş edin (yeni bir CSR oluşturarak), yeni bir fullchain dosyası oluşturun ve heroku certs:update server.crt server.key -a your-app-name komutunu çalıştırın. certs:add yerine certs:update kullanmak mevcut DNS hedefini korur, böylece DNS’e yeniden dokunmanız gerekmez. Genel SSL/TLS sertifikaları şu anda yaklaşık bir yılla sınırlıdır, bu nedenle manuel yüklemede kalırsanız bunu her yıl tekrarlamayı planlayın ya da ACM’e geçip işi Heroku’ya bırakın.

heroku certs:add komutunu çalıştırırken neden “Internal server error” alıyorum?

Bu hemen hemen her zaman güncel olmayan bir Heroku CLI’dan kaynaklanır. En son sürüme yükseltmek için heroku update komutunu çalıştırın, ardından komutu yeniden deneyin. Hata sürerse, sertifika dosyasının PEM formatında bir fullchain olduğunu (önce son varlık, ardından ara sertifikalar) ve özel anahtarın CA’ya gönderdiğiniz CSR ile eşleşen bir RSA anahtarı olduğunu doğrulayın.

Bugün SSL Dragon’dan sipariş vererek SSL Sertifikalarında %10 indirimden yararlanın!

Hızlı düzenleme, güçlü şifreleme, %99,99 tarayıcı güvenilirliği, özel destek ve 25 günlük para iade garantisi. Kupon kodu: SAVE10

A detailed image of a dragon in flight
Tarafından yazıldı

SSL Sertifikaları konusunda uzmanlaşmış deneyimli içerik yazarı. Karmaşık siber güvenlik konularını açık, ilgi çekici içeriğe dönüştürmek. Etkili anlatımlar yoluyla dijital güvenliğin geliştirilmesine katkıda bulunun.