Pre

Tässä artikkelissa pureudutaan yleiseen virheilmoitukseen, jossa stendurina lukee “unable to find valid certification path to requested target”. Kyseessä on TLS/SSL-sertifikaattiketjun luottamusongelma, joka estää yhteyden muodostamisen turvallisesti. Artikkeli on suunnattu sekä kehittäjille että järjestelmän ylläpitäjille, ja sen tavoitteena on tarjota selkeä, käytäntöön vietävä ohjeistus tilanteisiin, joissa tämä virhe ilmenee. Käytämme lisäksi läpinäkyviä esimerkkejä ja konkreettisia keinoja ongelman paikantamiseen sekä ratkaisemiseen eri ympäristöissä.

Mikä ongelma oikeastaan on: unable to find valid certification path to requested target

Virheilmoitus “unable to find valid certification path to requested target” viittaa siihen, ettei asiakkaan järjestelmä pysty vahvistamaan Palvelimen TLS-sertifikaattiketjua luotettavaksi. Tämä voi johtua useista syistä, kuten puuttuvista intermediates-sertifikaateista, vanhentuneesta tai virheellisesti määritetystä truststoresta, sertifikaattien vanhentumisesta tai käytännöllisistä verkko-ongelmista, kuten TLS-etsinnän ohjauksesta. Kun yhteys muodostetaan, asiakkaan ohjelma tarkistaa palvelimen esittämän sertifikaatin ketjun luotettuna pitämällä CA-juurisertifikaatit voimassa. Jos ketjussa esiintyy aukkoja tai epäyhtenäisyyksiä, virhe ”unable to find valid certification path to requested target” havaitaan.

Yleisimmät syyt ympäristöjen mukaan

Java- ja JVM-ympäristöt

JVM-ympäristössä virhe liittyy usein puuttuviin tai vanhentuneisiin CA-sertifikaatteihin truststore-tiedostossa (cacerts). Näin käy, kun sovellus yrittää muodostaa TLS-yhteyden palvelimen kanssa, jonka sertifikaattiketju ei ole täysin mukana Java-ympäristön luottamusvarastossa. Tämän seurauksena Java ei pysty vahvistamaan yhteyttä, jolloin virhe “unable to find valid certification path to requested target” aktivoituu. Toinen yleinen syy on erillinen truststorein käyttö: sovellus saattaa käyttää omaa erillistä truststorea, joka ei sisällä tarvittavia CA-juurihaltioita. Päivittämällä truststoreiin puuttuvat juuritunnukset tai varmistamalla, että oikea truststore on käytössä, korjaantuu tilanne usein nopeasti.

Selaimet ja sovellukset työpöydällä sekä mobiililaitteilla

Selaimet voivat myös kohdata saman virheen, kun palvelin lähettää kelpaamattoman tai keskeneräisen sertifikaattiketjun. Syitä voivat olla esimerkiksi epäjohdonmukaiset CN/SAN-tiedot (Common Name/Subject Alternative Name), sertifikaatin vanheneminen tai väliin turvaverkon tahon (TLS interception) muokkaama tai korvattu ketju. Selaimet pitävät usein erikseen tallessa juurituotteiden listaa, ja jos käytössä on vanhentunut root-merkkinä, yhteys voidaan evätä. Mikäli yritysverkossa käytetään TLS-etsintää tai proxies, ne voivat toimittaa oman, oman CA:n alle kuuluvan sertifikaattiketjun, joka ei vastaa loppukäyttäjän luottamusvarastoa, mikä johtaa samaan virheilmoitukseen.

Palvelinpuolen ongelmat ja sertifikaattiketjun rakenne

Palvelinpuolella ongelmia aiheuttavat erityisesti not connected -tilanteet, kun palvelin ei lähetä täydellistä ketjua (intermediate CA -sertifikaatit puuttuvat). Ilman täydellistä ketjua asiakkaan järjestelmä ei pysty vahvistamaan luotettavaa yhteyttä. Tämä koskee sekä perinteisiä HTTPS-palveluita että ohjelmointirajapintoja (API), joissa käytetään TLS:ää. Lisäksi, jos palvelin käyttää itse allekirjoitettua sertifikaattia tai sertifikaatti on peräisin CA:sta, jota asiakkaan truststore ei hyväksy, virhe syntyy todennäköisesti. Ongelmaa voidaan usein ratkaista lähettämällä oikea sertifikaattiketju palvelimelta ja varmistamalla, että ketju pysyy eheänä kaikissa asiakkaan ympäristöissä.

Kuinka tämä virhe ilmenee eri ympäristöissä

Jakelu- ja kehitysympäristöt

Dev- ja testiympäristöissä virhe voi ilmetä, kun kehitystiedostot sisältävät erikoismerkityksiä, kuten omaa CA:ta, joka ei ole luotettu tuotannossa. Tällöin “unable to find valid certification path to requested target” voi johtua siitä, että testipalvelin käyttää omaa sertifikaattiketjua, jota ei ole lisätty kehityksen truststoreen. Tämä on yleinen syy, miksi koodin tai konfiguraation muutokset eivät vaikuta tuotantoympäristössä, sillä truststore on erilainen.

Konttipohjaiset ratkaisut ja mikropalvelut

Konttien ja mikroservice-arkkitehtuurin yhteydessä TLS-yhteydet voivat epäonnistua, jos kontin luottamusvarasto ei sisällä tarvittavia CA-sertifikaatteja tai jos konttiin upotettu sovellus käyttää erillistä truststorea. Lisäksi konttien verkko- ja reititysasetus voi ohjata liikenteen väärään loppupisteeseen, jolloin ketju ei ole luotettava. Tällöin virheilmoitus voi esiintyä sekä sovelluksessa että väliin asennetussa hallintakerroksessa.

Web-palvelimet ja SSL-konfiguraatio

Web-palvelimet (esim. Apache, Nginx, IIS) tarvitsevat oikean sertifikaattiketjun. Jos chain-tiedosto puuttuu tai jos intermediates-ketju on väärin asennettu, asiakkaat kohtaavat virheen “unable to find valid certification path to requested target”. Tämä on yleinen ongelma pyrittäessä siirtämään Let’s Encrypt -sertifikaatteja tai kaupallisia sertifikaatteja tuotantoon ilman ketjun oikeaa konfiguraatiota. Oikea asennus takaa, että sekä primary cert että kaikki välisertifikaatit ovat mukana ja polku luotettuun juurijärjestelmään on ehjä.

Käytännön toimet: miten tunnistaa ongelman juuri

Ennakoivat tarkistukset ja palvelupäivitykset

Ennen syvää vianmääritystä kannattaa vahvistaa, että käytössä on ajan tasalla oleva ohjelmisto ja, että sertifikaattien voimassaoloaika sekä truststore on päivitetty. Tarkista, että seuraavat seikat ovat kunnossa:

  • Sertifikaatin voimassaoloaika ja CN/SAN-rytmi vastaavat kohdetta.
  • Ketjun täydellisyys: palvelin lähettää sekä oma sertifikaatti että mahdolliset intermediates.
  • Truststorein päivittäminen ja sisältö: CA-juuret tallessa.
  • Verkon väliinveden (TLS interception) asetukset ja varmistus siitä, ettei se muokkaa ketjua epäedullisesti.

Vianmääritys askeleittain: OpenSSL ja tunnistus

Yksi tehokas tapa paikantaa ongelman lähde on käyttää OpenSSL-työkaluja ketjun ja yhteyden testaamiseen. Esimerkiksi:

openssl s_client -connect domain.tld:443 -servername domain.tld -showcerts

Tämän komennon tuloksesta näet, mitkä sertifikaatit palvelin esittää ja onko ketju kokonainen. Jos intermediates-puutuivat, ne näkyvät puuttuvana osana ketjua. Tässä vaiheessa kannattaa varmistaa, että palvelin lähettää koko ketju ja että asiakkaan truststore sisältää tarvittavat juuret.

Java-sovellukset: truststore ja cacerts

Java-sovelluksissa tärkeintä on varmistaa, että cacerts-tiedosto sisältää tarvittavat CA-sertifikaatit. Voit tarkistaa listan seuraavasti:

keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

Jos puuttuvat CA-sertifikaatit, tuo ne seuraavasti:

keytool -import -alias someCA -file someCA.pem -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

Muista varmistaa, että käytät oikeaa truststorea ja että sovelluksesi käynnistyy sen kanssa. Joissain tapauksissa on järkevää päivittää JRE/JDK kokonaisuudessaan, jolloin CA-tunnukset ovat ajan tasalla.

Sertifikaattiketjun korjaaminen palvelimella

Jos ongelma johtuu puuttuvista intermediates-sertifikaateista, korjaa ketju seuraavasti:

  • Hanki täydellinen sertifikaattiketju (sertifikaatti + intermediate CA -sertifikaatit).
  • Konfiguroi palvelin käyttämään oikeaa polkua ketjuun (esim. Apache: SSLCertificateChainFile, Nginx: ssl_certificate /path/to/fullchain.pem).
  • Käynnistä palvelin uudelleen, ja tarkista ketju OpenSSL:n avulla.

Vahvistetut ratkaisut eri ympäristöille

Java-pohjaiset ratkaisut

Java-ympäristössä yleisin ratkaisu on päivittää truststore: lisätä puuttuvat CA-sertifikaatit tai varmistaa, että oikea truststore on käytössä. Lisäksi kannattaa varmistaa, ettei sovellus käytä epäyhteensopivaa keystorea, joka sisältää haastavia tai virheellisiä sertifikaatteja. Kun truststore on ajan tasalla, virhe “unable to find valid certification path to requested target” ratkeaa useimmiten.

Selaimet ja käyttäjäystävällisyys

Selaimien kanssa ratkaisut voivat olla yksinkertaisempia: varmista, että sertifikaatti on julkisesti validoitavissa, eikä CN/SAN -virheitä esiinny. Jos yritys käyttää TLS-interceptionia, varmista, että yritys-JAVA- tai organisaatiokohtaiset CA-juuret on lisätty kaikkien työasemien luottamusvarastoihin ja että käyttäjät voivat muodostaa vahvat yhteydet.

Web-palvelimet ja tuotantoympäristöt

Tuotantopalvelimilla on tärkeää pitää ketju aina ajan tasalla. Käytä ohjeellisesti sertifikaattivarastojen hallintaa, automatisoi sertifikaattien uusiminen ja ketjujen päivittäminen sekä seuraa sertifikaattien voimassaoloa. Let’s Encrypt on yleinen ratkaisu, jonka automaattinen uusiminen vähentää tällaisia virheitä huomattavasti, kun käytetään ACME-protokollaa.

Kuinka estää virhe tulevaisuudessa: ennaltaehkäisy ja parhaat käytännöt

Automaattinen sertifikaattien hallinta

Automaattinen sertifikaattien hallinta tarkoittaa, että sertifikaatit uusitaan ajallaan ja ketjut päivitetään ennen vanhenemista. ACME-protokollan avulla Let’s Encrypt -sertifikaatit ovat yleisiä nimenomaan sovelluksissa, joissa liiketoiminnan luotettavuus on kriittistä. Automatisoinnit vähentävät inhimillisiä virheitä ja varmistavat, että “unable to find valid certification path to requested target” ei pääse toistumaan yllättävissä tilanteissa.

Auditointi ja jatkuva valvonta

Seuraa sertifikaattien voimassaoloa ja ketjujen tilaa säännöllisesti. Käytä monitorointityökaluja, jotka ilmoittavat, jos sertifikaatti lähestyy vanhenemista tai ketjussa on puutteita. Tämä auttaa estämään tilanteita, joissa asiakkaat kohtaavat virheen äkillisesti ja palvelut voivat olla poissa käytöstä.

Turvalliset käytännöt kehityksessä

Varmista, että kehitysympäristössä käytetään mahdollisimman läheisesti tuotantoympäristöä vastaavia truststoreja ja sertifikaattiketjuja. Tämä vähentää yllätyksiä siirron yhteydessä. Dokumentoi projektikohtaiset CA-juuret ja ketjut, jotta tiimi voi toistaa konfiguraatiot luotettavasti.

Usein kysytyt kysymykset (FAQ)

Voinko ohittaa tämän virheen?

Ei suositella. Virheen ohittaminen voi johtaa tietoturvariskeihin, kuten TLS-man-in-the-middle -hyökkäyksiin. On tärkeää varmistaa, että sertifikaatit ja ketjut ovat oikein ja luotetut.

Mitä ohjelmointikieliä tämä koskee?

Tämä virhe voi ilmetä monissa ohjelmointiympäristöissä – Java, Python, Node.js, .NET ja muut – kun TLS-yhteydet rakennetaan. Ratkaisukeinot ovat kuitenkin pitkälti ketjujen korjaamista, truststorein päivittämistä ja palvelimen ketjun oikean konfiguraation varmistamista.

Voinko käyttää itse allekirjoitettua sertifikaattia tuotannossa?

Yleensä ei suositella. Yritystilanteissa voi olla tarvetta testata, mutta tuotannossa tulisi käyttää luotettavaksi tunnettuja CA-sertifikaatteja ja varmistaa, että asiakkaat voivat vahvistaa ketjun luotettavana.

Esimerkkitilanteet ja käytännön havainnot

Esimerkki 1: Dev-ympäristön truststore-poikkeamat

Kehitystiimissä sovellus käyttää paikallista truststorea, johon on lisätty omia sertifikaatteja. Kun yhteys suunnataan ulkoiseen palvelimeen, joka käyttää kolmannen osapuolen CA:ta, virhe “unable to find valid certification path to requested target” ilmenee. Ratkaisuna on lisätä tuotantopalvelun CA-jääkset kehityksen truststoreen tai käyttää yhteistä truststorea, joka sisältää sekä kehityksen että tuotannon CA-juuret.

Esimerkki 2: Intermediaattisertifikaatit puuttuvat

Asennettaessa uuden sertifikaatin ketju puuttui intermediates-sertifikaatit. Tämä johti siihen, että asiakkaan sovellus ei löytänyt kelvollista polkua luottamukseen. Ratkaisu oli lähettää täyden ketjun ja päivittää palvelimen konfiguraatio vastaamaan uutta ketjua.

Esimerkki 3: TLS-interception yritysverkossa

Yrityksessä käytetään TLS-interceptionia, jossa liikenne purkautuu ja reititetään jälleen salattuna. Jos intermediates ei ole oikein lisätty asiakkaiden luottamusvarastoon, virhe voi ilmetä. Ratkaisu on varmistaa, että sekä yritys- CA että mahdolliset välisertifikaatit on lisätty kaikkien työasemien ja sovellusten luottamusvarastoihin.

Päätös: mitä tehdä nyt, jos kohtaat virheen

Kun kohtaat “unable to find valid certification path to requested target” -virheen, seuraa seuraavaa käytäntöä:

  1. Tarkista, onko palvelimen sertifikaattiketju muodostettu kokonaisena ja sisältääkö kaikki välisertifikaatit.
  2. Päivitä truststore tai cacerts, jotta kaikki tarvittavat CA-juuret ovat mukana.
  3. Tarkista, ettei verkon TLS-interception vääristä ketjua lähettämällä väärän sertifikaatin.
  4. Käytä OpenSSL:n s_client -työkalua ketjun validoimiseen.
  5. Jos käytät Javaa, varmista, että oikea truststore on käytössä sovelluksessa.
  6. Testaa uudelleen yleisillä testipalvelimilla ennen tuotantoon siirtämistä.

Lopuksi: tiivistelmä ja keskeiset opit

“Unable to find valid certification path to requested target” on yleinen ja ratkaistavissa oleva TLS-sertifikaattivirhe. Keskeisiä ratkaisuja ovat täydellisen sertifikaattiketjun varmistaminen, truststorein päivittäminen ja ketjun oikea konfigurointi palvelimella. Ennaltaehkäisy, automaatio ja säännöllinen valvonta minimoivat tämän virheen todennäköisyyden ja auttavat varmistamaan saumattoman, turvallisen yhteyden käyttäjille ja sovelluksille. Kun ketjut ovat kunnossa ja luottamusvarastot ovat ajan tasalla, palvelin pystyy tarjoamaan luotettavan ja turvallisen yhteyden ilman turhia katkoja tai häiriöitä.