품질·성능·보안 · 공식 문서
ssl 인증서 오류 해결, 원인 5가지와 확인 순서
사이트 쪽 인증서 오류는 만료, 갱신 뒤 미반영, 중간 인증서 누락, 도메인 불일치, CDN 원본 인증서의 5가지로 좁혀집니다. 증상으로 원인을 고른 뒤 openssl 명령으로 서버가 실제로 내보내는 인증서를 확인하고, 재발급이나 서버 설정 수정으로 고칩니다.
인증서 오류 화면은 원인이 달라도 비슷하게 생겼습니다. 그래서 「인증서를 다시 받자」로 시작하면 시간만 쓰는 경우가 생깁니다.
원인 5가지 가운데 3가지는 재발급 없이 서버 설정에서 고칩니다. 증상으로 원인을 먼저 고르면 확인 명령 하나로 답이 나옵니다.
발견 01
사이트 쪽 인증서 오류는 원인 5가지로 좁혀지고, 원인마다 증상과 확인 명령이 다릅니다
| 원인 | 증상 | 확인 | 고치는 법 |
|---|---|---|---|
| 만료 | 모든 방문자에게 만료 경고가 뜹니다. | openssl x509 -noout -dates 로 notAfter 를 읽습니다. | 인증서를 갱신하거나 다시 받아 서버에 설치합니다. |
| 갱신 뒤 미반영 | 갱신은 성공했다는데 브라우저의 만료일이 그대로입니다. | 서버가 내보내는 인증서의 notAfter 와 디스크의 새 인증서 notAfter 를 비교합니다. | 웹 서버 설정이 갱신되는 파일을 직접 가리키게 하고, 웹 서버를 다시 읽게 합니다. |
| 중간 인증서 누락 | 어떤 브라우저·기기에서만 「신뢰할 수 없음」이 뜹니다. | openssl s_client -showcerts 로 서버가 중간 인증서를 함께 보내는지 봅니다. | 서버 인증서 파일 자리에 서버 인증서와 중간 인증서가 함께 든 파일(fullchain)을 지정합니다. |
| 도메인 불일치 | www 주소나 특정 하위 도메인에서만 오류가 납니다. | openssl x509 -noout -ext subjectAltName 으로 인증서에 든 호스트 이름을 봅니다. | 빠진 호스트 이름을 넣어 다시 받거나, 하위 도메인이 많으면 와일드카드 인증서를 씁니다. |
| CDN 원본 인증서(526) | CDN이 만든 526 오류 페이지가 뜹니다. | CDN을 거치지 않고 원본 서버에 직접 접속해 인증서와 443 포트 응답을 봅니다. | 원본 서버에 유효한 인증서를 설치합니다. CDN 쪽 검증 수준을 낮추는 것은 임시 방법입니다. |
| 원인 | 공식 문서 원문 |
|---|---|
| 만료 | Certificate is not expired. In this case, the page is missing a valid certificate because it expired.인증서가 만료되지 않았을 것. 만료된 경우 페이지에 유효한 인증서가 없다. |
| 갱신 뒤 미반영 | Rather than copying, please point your (web) server configuration directly to those files (or create symlinks). During the renewal, /etc/letsencrypt/live is updated with the latest necessary files.인증서를 복사하지 말고 웹 서버 설정이 그 파일을 직접 가리키게(또는 심볼릭 링크로) 한다. 갱신 때 live 폴더가 최신 파일로 바뀐다. |
| 중간 인증서 누락 | If you provide one of these files to your web server, you must provide both of them, or some browsers will show “This Connection is Untrusted” errors for your site, some of the time. The certificate chain is complete - the origin server must serve the leaf certificate along with any required intermediate CA certificates so that Cloudflare can build a trusted chain to a root CA.cert.pem 과 chain.pem 중 하나를 쓰면 둘 다 써야 한다. 아니면 일부 브라우저가 때때로 「신뢰할 수 없는 연결」 오류를 낸다. 원본 서버는 서버 인증서와 필요한 중간 인증서를 함께 보내 신뢰 체인을 만들 수 있어야 한다. |
| 도메인 불일치 | The requested or target domain name and hostname are in the certificate's Common Name or Subject Alternative Name. Avoid implementing your SSL/TLS certificate for the wrong host-variant. The certificate must match your complete site URL, or be a wildcard certificate that can be used for multiple subdomains on a domain.요청한 도메인과 호스트 이름이 인증서의 Common Name 이나 Subject Alternative Name 에 들어 있어야 한다. 인증서를 엉뚱한 호스트 변형에 설치하지 않는다. 인증서는 사이트 URL 전체와 맞거나 와일드카드 인증서여야 한다. |
| CDN 원본 인증서(526) | Cloudflare cannot validate the SSL certificate at your origin web server. Full SSL (Strict) SSL is set in the Overview tab of your Cloudflare SSL/TLS app.Cloudflare 가 원본 서버의 SSL 인증서를 검증하지 못하고, SSL 모드가 Full (Strict) 로 설정된 경우에 생긴다. |
발견 02
3가지 원인은 인증서가 아니라 서버 설정 문제라서, 갱신과 서버 반영을 따로 확인합니다
If you provide one of these files to your web server, you must provide both of them, or some browsers will show “This Connection is Untrusted” errors for your site, some of the time.
cert.pem 과 chain.pem 중 하나를 웹 서버에 쓰면 둘 다 써야 한다. 아니면 일부 브라우저가 때때로 「신뢰할 수 없는 연결」 오류를 낸다.
갱신 프로그램은 새 인증서를 디스크에 씁니다. 웹 서버가 옛 파일 사본을 가리키거나 설정을 다시 읽지 않으면 방문자는 계속 옛 인증서를 받습니다.
중간 인증서 누락은 기기마다 결과가 다르게 나옵니다. 그래서 한 브라우저에서 괜찮다고 끝내지 말고 -showcerts 로 서버가 보내는 목록을 봅니다.
| 항목 | 공식 문서 원문 |
|---|---|
| 파일을 가리키는 법 | Rather than copying, please point your (web) server configuration directly to those files (or create symlinks).복사하지 말고 웹 서버 설정이 그 파일을 직접 가리키게(또는 심볼릭 링크로) 한다. |
| 갱신 때 바뀌는 곳 | During the renewal, /etc/letsencrypt/live is updated with the latest necessary files.갱신 중에 /etc/letsencrypt/live 가 최신 파일로 바뀐다. |
| fullchain 파일의 쓰임 | This is what Apache >= 2.4.8 needs for SSLCertificateFile, and what Nginx needs for ssl_certificate.Apache 2.4.8 이상의 SSLCertificateFile 과 Nginx 의 ssl_certificate 에 이 파일(fullchain.pem)을 쓴다. |
| 서버가 보내는 목록 | Displays the server certificate list as sent by the server: it only consists of certificates the server has sent (in the order the server has sent them). It is not a verified chain.서버가 보낸 인증서 목록을 보낸 순서대로 보여 준다. 검증된 체인이 아니다. |
발견 03
CDN을 앞에 두면 방문자 쪽과 원본 서버 쪽 인증서가 따로 검증되고, 526은 원본 쪽 문제입니다
This error indicates that Cloudflare is unable to verify the SSL certificate on your origin server, preventing a secure connection from being established.
이 오류는 Cloudflare 가 원본 서버의 SSL 인증서를 검증하지 못해 안전한 연결을 맺지 못했다는 뜻이다.
| 원본 서버에서 볼 것 | 공식 문서 원문 |
|---|---|
| 만료 | Certificate is not expired.인증서가 만료되지 않았을 것. |
| 호스트 이름 | The requested or target domain name and hostname are in the certificate's Common Name or Subject Alternative Name.요청한 도메인과 호스트 이름이 인증서의 Common Name 이나 Subject Alternative Name 에 들어 있을 것. |
| 체인 | The certificate chain is complete - the origin server must serve the leaf certificate along with any required intermediate CA certificates so that Cloudflare can build a trusted chain to a root CA.인증서 체인이 완전할 것. 원본 서버는 서버 인증서와 필요한 중간 인증서를 함께 보내야 한다. |
| 포트 | Your origin web server accepts connections over port SSL port 443.원본 웹 서버가 443 포트로 연결을 받을 것. |
문서는 CDN 쪽 검증 수준을 낮추는 빠른 방법도 적었습니다. 이 방법은 오류 화면만 걷히고 원본 인증서 문제는 그대로 남습니다.
원본 서버의 인증서를 고친 뒤 검증 수준을 원래대로 둡니다.
발견 04
인증서 오류는 검색에도 남아서, 고친 뒤 구글·네이버 웹마스터 도구에서 판정이 풀렸는지 봅니다
HTTPS has invalid certificate: The HTTPS URL has an invalid SSL certificate. Typically this affects an entire site.
HTTPS에 잘못된 인증서가 있음: HTTPS URL의 SSL 인증서가 유효하지 않다. 보통 사이트 전체에 영향을 준다.
| 항목 | 공식 문서 원문 |
|---|---|
| 구글 표준 URL | The HTTPS page has an invalid SSL certificate.HTTPS 페이지에 잘못된 SSL 인증서가 있는 경우. |
| 구글이 HTTP를 고르는 경우 | Avoid bad TLS/SSL certificates and HTTPS-to-HTTP redirects because they cause Google to prefer HTTP very strongly. Implementing HSTS cannot override this strong preference.잘못된 TLS/SSL 인증서와 HTTPS에서 HTTP로 가는 리디렉션은 구글이 HTTP를 매우 강하게 고르게 만드므로 피한다. HSTS를 켜도 이 선호를 뒤집지 못한다. |
| 네이버 상태 | 메시지 | 설명 |
|---|---|---|
| 확인필요 | 보안 인증서 확인이 필요합니다. | 일부 문서 수집시, 유효하지않은 인증서 확인 |
| 확인필요 | 서치어드바이저에 HTTPS 사이트로 등록 바랍니다. | 보안 인증서가 존재하지만, HTTPS가 아닌 URL로 사이트를 등록한 상태 |
| 문제 | 보안 인증서 문제가 발견되었습니다. | 최근 수집된 모든 문서에서 인증서 오류 확인 |
발견 05
같은 오류라도 B2B·B2C·B2G 는 원인이 숨는 자리가 다릅니다
예시 ① 문의형 기업 사이트(B2B)
본 사이트는 정상인데 www 없는 주소로 들어온 방문자만 오류를 보는 경우입니다. 인증서의 호스트 이름 목록에 www 없는 주소가 빠져 있습니다.
두 이름을 모두 넣어 다시 받고, 한쪽은 다른 쪽으로 301 리디렉션합니다.
예시 ② 자사 쇼핑몰(B2C)
CDN 뒤에 둔 쇼핑몰에 526 오류 페이지가 뜬 경우입니다. 방문자 쪽 CDN 인증서는 정상이고 원본 서버 인증서가 만료됐습니다.
원본 서버에 직접 접속해 notAfter 를 읽고, 갱신 뒤 웹 서버를 다시 읽게 합니다.
예시 ③ 공공기관 누리집(B2G)
인증서를 교체한 뒤 일부 기기에서만 「신뢰할 수 없음」이 뜬 경우입니다. 교체할 때 서버 인증서 파일만 넣고 중간 인증서 파일을 빠뜨렸습니다.
fullchain 파일로 바꾸고 -showcerts 로 중간 인증서가 함께 나가는지 확인합니다.
그럼 인증서 오류는 어떤 순서로 확인하나요?
- 오류가 모든 방문자에게 뜨는지, 특정 호스트·기기·CDN 오류 페이지에서만 뜨는지 증상을 적습니다.
- openssl x509 -dates 로 서버가 지금 내보내는 인증서의 만료일을 읽고, 디스크의 새 인증서와 비교합니다.
- -ext subjectAltName 으로 오류가 난 호스트 이름이 인증서에 들었는지 봅니다.
- -showcerts 로 중간 인증서가 함께 나가는지 봅니다.
- CDN을 쓰면 원본 서버에 직접 접속해 같은 확인을 되풀이합니다.
- 고친 뒤 웹 서버를 다시 읽게 하고, 서치 콘솔 HTTPS 보고서와 서치어드바이저 사이트 상태가 풀렸는지 봅니다.
조사 방법
- Cloudflare Docs 「Error 526」 (문서 수정일 2026-10-12) · 최종 확인일 2026-10-25 · https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-526/
- Certbot (EFF) 「User Guide (Certbot 5.8.0)」 · 최종 확인일 2026-10-25 · https://eff-certbot.readthedocs.io/en/stable/using.html
- OpenSSL Documentation 「openssl-s_client (OpenSSL 3.0)」 · 최종 확인일 2026-10-25 · https://docs.openssl.org/3.0/man1/openssl-s_client/
- Search Console Help 「HTTPS report」 · 최종 확인일 2026-10-25 · https://support.google.com/webmasters/answer/11396518?hl=en
- 네이버 서치어드바이저 「사이트 상태」 · 최종 확인일 2026-10-25 · https://searchadvisor.naver.com/guide/site-summary
- Google Search Central 「How to specify a canonical URL with rel="canonical" and other methods」 (문서 수정일 2026-07-10) · 최종 확인일 2026-10-25 · https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- 원인 5가지는 위 문서들이 인증서 검증 실패 원인으로 적은 것을 사이트 쪽에서 고칠 수 있는 단위로 묶은 것입니다. 묶는 방식은 편집 판단입니다.
- 방문자 기기의 시간 설정·브라우저 설정에서 생기는 오류는 이 편의 범위에 넣지 않았습니다.
- 예시 ①②③은 이해를 돕기 위해 만든 가상 상황이며, 실제 기업·기관의 사례가 아닙니다.
- 원문은 영어판(hl=en)이고, 도구·보고서 이름은 같은 문서 한국어판(hl=ko) 표기를 따랐습니다. Cloudflare·Certbot 문서는 영어 원문만 인용했습니다.