HAProxy günlüğündeki SSL handshake failure satırı, frontend'e gelen bir istemcinin TLS el sıkışmasını tamamlayamadığını gösterir. Bazen tek bir eski istemciden, bazen de yanlış yapılandırılmış bir sertifika paketinden kaynaklanır.
Olası nedenler
crtdosyası eksik: HAProxy tek PEM dosyasında sertifika, ara sertifikalar ve özel anahtarı birlikte bekler.- İstemci yalnızca eski protokolleri (TLS 1.0/1.1) destekliyor, sunucu bunları kapatmış.
- Ortak şifre paketi yok.
- SNI göndermeyen istemci ile yanlış varsayılan sertifika.
- Backend tarafında
sslkullanılıp arka uç sertifikası doğrulanamıyor.
Doğru frontend yapısı
global
ssl-default-bind-options ssl-min-ver TLSv1.2
frontend https_in
bind :443 ssl crt /etc/haproxy/certs/alanadi.pem
default_backend uygulama
Birleşik PEM dosyasını sırayla oluşturun:
cat alanadi.crt ara.crt alanadi.key > /etc/haproxy/certs/alanadi.pem
chmod 600 /etc/haproxy/certs/alanadi.pem
Adım adım doğrulama
- Söz dizimi:
haproxy -c -f /etc/haproxy/haproxy.cfg. - Dışarıdan test:
openssl s_client -connect alanadi.com:443 -servername alanadi.com -tls1_2 - Hata belirli bir istemciden geliyorsa, o istemcinin desteklediği TLS sürümünü öğrenin; gerekiyorsa minimum sürümü bilerek değerlendirin.
- Logdaki istemci IP'si tarayıcıysa, şifre paketi listesini güncel bir yapılandırma üretecinin önerileriyle karşılaştırın.
- Yeniden yükleme:
systemctl reload haproxy.
Önemli not
Ara sertifikanın bulunmaması bazı istemcilerde hata verip bazılarında vermez; bu yüzden sorun aralıklı görünür. Zincir durumunu SSL denetleme aracıyla gözden geçirin, sertifika temini için SSL ürünlerimize bakabilirsiniz.
Ek ipuçları
Birden fazla alan adı için crt yerine bir dizin verebilirsiniz: bind :443 ssl crt /etc/haproxy/certs/; HAProxy SNI'ya göre uygun sertifikayı seçer. Arka uç HTTPS ise server ... ssl verify required ca-file ... ile doğrulamayı açık tutun. Loglarda yalnızca tarama botlarından gelen kısa süreli hataları gerçek arıza saymayın.