한 서버에서 SSL 체인이 끊어진 것으로 보고되었습니다.이 SSL 검사:
나도 이게 문제라는 걸 알아~해야 한다서버 자체에서는 해결이 되지만 가끔 해결이 어려울 때도 있습니다. (저는 서버 관리자가 아닙니다.)
문제는 Windows의 Chrome/Mozilla/Edge입니다.무슨 일이 있어도 웹사이트 인증서를 신뢰하세요:
그러나 Gnu/Linux 배포(Docker의 Ubuntu 18.04)에서 인증서는 다음과 같습니다.아니요신뢰할 수 있는:
curl: (60) SSL certificate problem: unable to get local issuer certificate
update-ca-certificates
Globalsign 루트 인증서 가져오기도 시도했습니다 . update-ca-certificates
이 경우 중복 인증서가 보고됩니다. 어쨌든 아무것도 작동하지 않습니다.
재생산 방법
도커 사용:
docker run -it ubuntu:18.04
# within container:
apt-get update
apt-get -y install curl
curl https://betriebsheft.vog.it # <---- "unable to get local issuer certificate"
Gnu/Linux가 이 인증서를 신뢰하도록 만드는 방법은 무엇입니까?
추신: 동일한 인증서다른 서버에 올바르게 배포됨.
답변1
실제 해결책은 서버가 존재하는지 확인하는 것입니다모두최종 엔터티(서버) 인증서가 아닌 체인의 인증서입니다.
서버 관리자에게 알려주세요RFC 5246 섹션 7.4.2이는 분명히 말한다이 메시지는 서버의 인증서를 전달합니다.체인고객에게.
curl
관리자가 어떤 이유로 이를 거부하거나 수행할 수 없는 경우 대안은 잘못된 핸드셰이크를 처리하는 것입니다 .
Curl 메일링 리스트의 메시지에 따르면:
cURL이 중간 인증서를 지원하는지(또는 지원하지 않는지) 확인할 수 있나요?
네, 그렇습니다. 모든 CA 인증서에는 루트까지 인증서 체인이 있습니다. 컬과 함께 사용되는 CA 번들은 전체 체인을 포함하는 인증서가 필요합니다.
/daniel.haxx.se
루트 CA와 모든 중간 인증서를 번들에 추가하고 curl
옵션을 사용하여 이를 가리킬 수 있어야 합니다 --cacert <file>
.
브라우저가 작동하면 해당 브라우저에서 올바른 CA 인증서에 액세스할 수 있습니다. 인증서 탭(브라우저마다 다르지만 이해하실 거라 확신합니다)에서 인증서 체인을 확인하세요. 먼저 루트 CA를 두 번 클릭하세요.Globalsign 루트 CA - G1그리고세부 사항탭, 클릭파일에 복사.... root.cer
다른 이름 으로 저장하십시오 .AlphaSSL CA-SHA256-G2issuing.cer
두 파일을 하나의 파일(예: chain.cer
)로 연결하고 이를 의 인수로 사용 합니다 -cacert
.
@AB가 친절하게 지적해 주신대로 분실된 인증서도 찾을 수 있습니다여기.
브라우저는 CA 인증서를 캐시하기 때문에 올바르게 작동합니다. 과거 어느 시점에 서버 인증서와 동일한 CA에서 발급한 인증서를 사용하여 적절하게 구성된 웹 사이트로 이동한 경우 브라우저는 웹 사이트를 캐시합니다. 나중에 잘못 구성된 사이트를 방문하면 브라우저는 캐시에 있는 CA 인증서를 사용하여 체인을 구축합니다. 모든 것이 괜찮은 것 같지만, 그 이면에는 서버가 잘못 구성되어 있습니다.
Windows에서는 IE/Edge와 Chrome이 동일한 캐시를 공유하는 반면 Firefox는 자체 캐시를 사용합니다.
위 내용 외에도 IE/Edge 및 Chrome(동일한 암호화 스택을 공유하므로)은 인증서에서 다음과 같은 이름을 사용합니다.신뢰할 수 있는 정보 액세스. 하나 있다카드 발급사옵션은 최종 엔터티 인증서를 다운로드할 수 있는 CA 인증서의 URL을 제공합니다. 따라서 이러한 브라우저 중 하나가 이전 탐색에서 손실된 인증서를 캐시하지 않더라도 필요할 때 인증서를 얻을 수 있습니다. Firefox는 이 작업을 수행하지 않으므로 IE/Edge 및 Chrome이 작동하는 것처럼 보일 때 Firefox에서 인증서 오류가 표시되는 경우가 있습니다.