SSL Sertifikası

Tomcat SSL: java.io.IOException DerInputStream

Tomcat'te DerInputStream hatası çoğunlukla keystore biçimi veya parolasından doğar. keytool ve openssl ile düzeltme yolunu gösteriyoruz.

Tomcat açılışında java.io.IOException: DerInputStream.getLength(): lengthTag=..., too big ya da Invalid keystore format görmek, bağlayıcının (connector) gösterilen dosyayı beklediği anahtar deposu biçiminde okuyamadığı anlamına gelir.

Nedenler

  • PEM metin dosyası (.crt/.pem/.key) doğrudan keystoreFile olarak verilmiş.
  • keystoreType gerçek biçimle uyuşmuyor (JKS yerine PKCS12 olan bir dosya vb.).
  • Keystore parolası yanlış ya da dosya bozulmuş.
  • Zincir sırası veya eksik parçalarla oluşturulmuş PKCS#12.

Çözüm: PEM'den PKCS#12 üretme

  1. Sertifika, zincir ve anahtardan .p12 oluşturun:
    openssl pkcs12 -export -inkey alanadi.key -in alanadi-fullchain.crt \
      -name tomcat -out alanadi.p12
    
  2. İçeriği doğrulayın:
    keytool -list -v -keystore alanadi.p12 -storetype PKCS12
    
  3. server.xml içindeki bağlayıcıyı güncelleyin:
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true">
      <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/alanadi.p12"
                     certificateKeystorePassword="parola"
                     certificateKeystoreType="PKCS12" />
      </SSLHostConfig>
    </Connector>
    
  4. Tomcat 8.5 ve sonrasında PEM dosyaları da doğrudan kullanılabilir: certificateFile, certificateKeyFile, certificateChainFile öznitelikleri.
  5. catalina.out ve localhost.log dosyalarını izleyerek servisi yeniden başlatın.

Dikkat

Parola yanlışsa hata genellikle "keystore password was incorrect" biçiminde görünür; DerInputStream hatası daha çok biçim uyuşmazlığına işaret eder. Sertifikayı almadan önce anahtar ve CSR'ınızı CSR oluşturucu ile hazırlayabilirsiniz. Kurulum sonrası doğrulama için SSL denetleme aracı kullanışlıdır.

Ek ipuçları

Eski Java sürümlerinde PKCS12 içindeki bazı güçlü şifreleme algoritmaları desteklenmeyebilir; bu durumda keytool -list komutu da hata verir. Java sürümünüzü güncellemek ya da .p12'yi uyumlu algoritmalarla yeniden oluşturmak gerekir. Keystore dosyalarını sürüm kontrolüne koymayın ve parolaları yapılandırma dışında tutmaya özen gösterin.

Bu makale faydalı oldu mu?

Makale Ara

Sunucu SSL Hataları

Yardıma mı İhtiyacınız Var?

Aradığınızı bulamadıysanız destek ekibimiz size yardımcı olabilir.

Destek Talebi Aç