누군가가 이 상황에서 무슨 일이 일어나고 있는지 설명하는 데 도움을 줄 수 있기를 바랍니다.
현재 저는 Google 도메인의 도메인을 보유하고 있으며 DNS 관리를 위해 cloudflare를 사용하고 있습니다. Cloudflare의 TLS/SSL 기능을 사용하지 않고 있으며, 범용 SSL도 꺼져 있고, DNS 요청도 프록시 처리하지 않습니다. 내 서버에서 캐디를 역방향 프록시로 사용하고 있고 letsencrypt에서 인증서를 가져오는 내장 acme 클라이언트를 사용하고 있습니다. 나는 인증서를 잘 받고 있으며 내 외부 사이트에는 모두 내 서버에 있는 인증서인 사용 중인 인증서가 표시됩니다. 그러나 curl
HTTPS를 통해 서버에서 명령을 실행하면 다음과 같은 이상한 동작이 발생합니다.
더 자세히 설명하기 위해 내 gotify 서버/인스턴스에 컬 요청을 보내려고 합니다. 다음은 gotify cli 명령을 사용한 후 gotify init
내 도메인에 https://를 입력하고 이 출력을 받을 때의 출력입니다(이는 내 모든 도메인에서 발생합니다(gotify 명령 다음에 아래의 기본 컬 명령을 실행할 때). 오류가 발생한 위치의 예로 gotify cli를 사용합니다.)
x509: certificate is not valid for any names, but wanted to match gotify.mydomain.com
그래서 저는 무슨 일이 일어나고 있는지 알아보기 위해 이러한 컬 명령을 실행합니다.
명령: curl -v https://gotify.mydomain.com
출력:
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: self signed certificate
* Closing connection 0
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
내 CApath에는 말 그대로 ca-certificates 패키지의 모든 인증서가 있습니다. 그리고 내 외부 사이트는 내 인증서를 사용하고 있지만 내 서버에 문제가 있는데 그 이유를 모르겠습니다.
이 명령을 실행하면 curl -v --insecure https://gotify.mydomain.com
더 이상한 결과가 나타납니다. 출력:
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: C=CN; ST=TW; L=TB; O=ASKEY; OU=ROUTER; CN=askey.com; [email protected]
* start date: Jan 8 18:43:23 2022 GMT
* expire date: Jan 7 18:43:23 2025 GMT
* issuer: C=CN; ST=TW; L=TB; O=ASKEY; OU=ROUTER; CN=askey.com; [email protected]
* SSL certificate verify result: self signed certificate (18), continuing anyway.
> GET / HTTP/1.1
> Host: gotify.mydomain.com
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< Location: /1.2.4/login.html
< Content-Length: 0
< Date: Sun, 24 Apr 2022 13:51:04 GMT
< Server: lighttpd/1.4.38
<
* Connection #0 to host gotify.mydomain.com left intact
이 "askey" 인증서가 어디서 왔는지 전혀 알 수 없습니다. 내 서버 AFAIK에는 어디에도 없습니다. 나는 너무 혼란스럽다. 저는 대만에 거주하고 있으므로 TW 코드가 약간 이해가 될 수도 있습니다. 1월 8일에는 원격으로 서버에 접근도 못해서 무슨 일이 일어났는지 모르겠습니다.
이것을 보면 Location: /1.2.4/login.html
내 라우터에 무슨 일이 일어나고 있는지 생각하게 됩니다. 그것이 내 라우터 관리자 로그인 페이지의 경로이기 때문입니다.