LabHub
배우기 러닝패스 코스

인증서는 갱신됐는데 브라우저는 옛것을 보여줬다 · 인증서 한 장을 네 조각으로 읽는다 · 실습

인증서 한 장을 네 조각으로 읽는다

LabHub 에서 이어서 보기

목표

자체 CA 로 서버 인증서를 발급하고, 사슬·유효기간·SAN·키 일치를 각각 openssl 로 검증합니다. 중간 CA 를 세워 fullchain 을 조립하고 이름 검사 결과를 표로 남깁니다.

왜 중요한가

인증서 장애는 넷 중 하나입니다 — 사슬이 끊겼거나, 만료됐거나, 이름이 다르거나, 키가 짝이 아니거나. 고치는 법이 전부 달라서 어느 것인지 먼저 읽어야 합니다. 이 실습은 그 네 가지를 고의로 만들고 검증기가 무엇이라고 말하는지 봅니다. 특히 OpenSSL 3.0 의 x509 -req 가 CSR 의 확장을 기본으로 버린다는 사실은 발급이 성공한 것처럼 보이는 함정이라 직접 겪어 두는 편이 낫습니다.

단계

1. /root/pki/ca.key 와 자기 서명 인증서 /root/pki/ca.crt 를 만드세요. 주체는 CN=Lab Root CA, 유효기간 30일입니다.
2. 서버 키 /root/pki/server.key 와 CSR /root/pki/server.csr 을 만드세요. 주체 CN=www.lab.internal, SAN 은 DNS:www.lab.internalDNS:api.lab.internal 두 개입니다.
3. CA 로 서명해 /root/pki/server.crt 를 만드세요. 유효기간은 3일, SAN 이 인증서에 남아 있어야 합니다.
4. server.crt 의 일련번호·만료일·SHA-256 지문·SAN 을 /root/pki/04-fields.txt 에 저장하세요.
5. 비교용 키 /root/pki/other.key 를 하나 더 만들고, /root/pki/05-keymatch.txtcert=·key=·other= 세 줄(각 공개키 PEM 의 sha256 64자리)과 verdict=match 를 적으세요.
6. /root/pki/06-expiry.txtopenssl x509 -enddate 의 출력 줄과 renew_within_7d=yes|no 를 적으세요. 판정은 -checkend 604800 의 종료 코드로 합니다.
7. 중간 CA(/root/pki/inter.key, /root/pki/inter.crt, CN=Lab Intermediate CA, CA:TRUE)를 루트로 서명해 만들고, 그 중간 CA 로 리프 /root/pki/api.crt(키 /root/pki/api.key, SAN DNS:api.lab.internal)를 발급하세요. 리프와 중간 CA 를 이 순서로 이어 /root/pki/fullchain.pem 을 만드세요.
8. server.crt 에 대해 www.lab.internal·api.lab.internal·other.lab.internal 세 이름의 검증 결과를 /root/pki/08-hostname.txt이름=OK|FAIL 로 적으세요.

참고

단계 8개

  1. 루트 CA 만들기
  2. SAN 이 든 CSR
  3. 3일짜리 서버 인증서 발급
  4. 식별값 읽기
  5. 키가 짝인지 판정하기
  6. 7일 창으로 만료 판정
  7. 중간 CA 와 fullchain
  8. 이름 검사 표