En systemd-tjeneste når proxyen, men ikke CA-filen
Kontroller tjenestebrugerens filadgang og systemds filsystembegrænsninger, når proxycertifikatopsætningen kun virker i en interaktiv shell.
Du har installeret den godkendte CA-bundle, og anmodningen virker i terminalen. Tjenesten melder stadig en fejl ved indlæsning af certifikatet. Kontroller, om processen kan åbne samme fil, før du skifter proxy-IP.
En tjeneste kan køre som en anden Unix-bruger, starte i en anden mappe eller se et begrænset filsystem. En sti, der er gyldig for dit login, er ikke automatisk gyldig for tjenesten.
Begynd med en absolut sti
Kontroller stien i den faktiske klient. I curl vælger --cacert for eksempel destinationens CA-bundle; en HTTPS-proxy har separate proxy-CA-indstillinger. Andre klienter bruger egne konfigurationsnøgler eller miljøvariabler.
Undersøg filen og mapperne på vejen til den:
namei -l /home/alex/certs/approved-ca.pem
systemctl show example.service -p User -p Group -p ProtectHome -p RootDirectory
Dette er diagnostiske eksempler, ikke instruktioner om at gøre filen skrivbar for alle. Tilladelse til at passere mapper er lige så vigtig som læseadgang til den endelige fil.
Rettigheder er måske ikke hele problemet
Med ProtectHome=yes gør systemd de almindelige hjemmemappeplaceringer utilgængelige for tjenesten. Ændring af certifikatfilens tilstand ophæver ikke den navnerumsbegrænsning. En konfigureret rodmappe kan også ændre, hvad en absolut sti henviser til i tjenesten.
Brug en passende placering til tjenestekonfiguration, som en mappe under /etc beregnet til programmet, og giv kun den nødvendige læseadgang. Opdater klientens CA-sti. Fjern ikke uvedkommende filsystembegrænsninger, blot fordi den første kopi lå i din personlige hjemmemappe.
Læs den første nyttige fejl
«Kan ikke indlæse CA-fil» og «certifikatkæden er ikke betroet» er forskellige fejl. Den første kan opstå, før klienten kan verificere noget. Den anden kan betyde, at den læsbare bundle indeholder forkert udsteder eller bruges på en forkert TLS-forbindelse.
Test igen i tjenestens kontekst efter rettelse af adgangen. En vellykket terminalkommando er stadig en nyttig sammenligning, men beviser ikke, hvilke filer tjenesten ser, eller hvilken tillidskonfiguration klienten bruger.