Śledziłem różne tutoriale i stackoverflowpytania, aby dowiedzieć się, jak stworzyć samopodpisany certyfikat, upewniając się, że ma on nazwy serwerów alt, używaj ich do skonfigurowania https dla serwera ekspresowego i pomyślnie wysyłaj żądania przeciwko serwerowi z przeglądarki (po dodaniu certyfikatu jako zaufanego certyfikatu do przeglądarka).
Ponownie pobrałem certyfikat w następujący sposób:
openssl s_client -showcerts -servername mydevserver -connect mydevserver:443 </dev/null
Następnie skopiowałem tekst między "begin certificate" a "end certificate" na /etc/ssl/thecert.crt
Korzystanie z narzędzi linii poleceń do trafiania w ten sam punkt końcowy https nie działa, np .:
curl -v --cacert "/etc/ssl/thecert.crt" -H "Content-Type: application/json" https://mydevserver:443/api
Widzę zwijanie za pomocą cacert w szczegółowym wyniku, ale nadal narzeka:
SSL certificate problem: unable to get local issuer certificate
- Czy sam certyfikat jest źle skonfigurowany (jeśli tak, to dlaczego przeglądarka go akceptuje)?
- Czego jeszcze brakuje?
Odpowiedzi:
0 dla odpowiedzi № 1Okazuje się, że certyfikat samopodpisany nie był wystarczający, aby uczynić go "godnym zaufania". Musi być podpisany przez urząd certyfikacji.
Musiałem najpierw utworzyć mój własny urząd certyfikacji (CA) przy użyciu samopodpisany certyfikat, a następnie użyj tego certyfikatu wynikowego podpisać nowy certyfikat CSR / certyfikat dla danego serwera.
Następnie, po dodaniu certyfikatu CA do lokalnego urzędu certyfikacjiprzechowuj, zwiń nie nawet potrzebujesz parametru --cacert; jak inni klienci https może zweryfikować certyfikat otrzymany z serwera, ponieważ to powie mi, podpisany przez mój CA, który jest zaufany na komputerze lokalnym.
Mam nadzieję, że to pomaga komuś.