OpenSSL tabanlı yazılımlarda (Nginx, Apache, HAProxy, Postfix vb.) error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch görürseniz, yüklenen sertifikanın genel anahtarı ile özel anahtar birbirine ait değildir. Başlıktaki "verify failed" ifadesi yanıltıcı olabilir; bu bir zincir doğrulama değil, anahtar eşleşme hatasıdır.
Neden oluşur
- Sertifika için yeni CSR üretildi ama sunucuda eski anahtar kaldı.
- Birden fazla anahtar/sertifika dosyası karışmış; yanlış isimli dosya kullanılıyor.
- Yeniden düzenlemede (reissue) yeni anahtar üretilip sertifika eskisiyle birlikte kurulmuş.
- Farklı alan adlarının dosyaları aynı dizinde karışmış.
Eşleşmeyi doğrulama
openssl x509 -noout -modulus -in sertifika.crt | openssl md5
openssl rsa -noout -modulus -in ozel.key | openssl md5
openssl req -noout -modulus -in istek.csr | openssl md5
Üç çıktı aynıysa üçü de aynı anahtar çiftine aittir. EC anahtarlar için modulus yoktur; genel anahtarları karşılaştırın:
openssl x509 -in sertifika.crt -noout -pubkey | openssl md5
openssl pkey -in ozel.key -pubout | openssl md5
Çözüm
- Sertifikanın hangi CSR ile alındığını siparişinizden belirleyin; o CSR'ı üreten anahtarı bulun.
- Bulamıyorsanız yeni bir anahtar ve CSR üretin (CSR oluşturucu) ve sertifikayı yeniden düzenleme (reissue) ile yeni CSR'a bağlayın.
- Doğru çifti yerleştirip servisi yeniden yükleyin.
Önleme
Anahtar dosyalarını alan adı ve tarihle adlandırın, CSR üretildiğinde anahtarın yedeğini güvenli bir yerde tutun. Sonucu SSL denetleme aracıyla teyit edin.
Ek ipuçları
Bulut veya panel üzerinden sertifika kuruyorsanız, aynı alan adı için birden fazla sertifika ve anahtar yüklenmiş olabilir; panel yanlış olanı seçebilir. Eşleşme doğrulamasını yalnızca elinizdeki dosyada değil, sunucunun gerçekten yüklediği dosyada yapın (nginx -T veya apachectl -S çıktısından yolu öğrenin).