Tomcat & nginx 운영 · SSL 종료와 인증서 · 퀴즈
퀴즈: SSL 종료와 인증서
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
브라우저에서는 정상인데 연동 상대 시스템의 HTTP 클라이언트에서만 SSL 검증이 실패합니다. 가장 유력한 원인은?
- 서버 인증서가 만료됐는데 브라우저만 캐시된 검증 결과를 쓰고 있다
- 서버가 TLS 1.3 만 지원해 구버전 클라이언트가 협상에 실패한다
- 인증서에 SAN 이 없어 호스트 이름 검증에서 거부된다
- 중간 인증서가 빠졌는데, 브라우저는 캐시나 AIA 로 보완하고 서버 간 클라이언트는 안 한다
nginx 가 기동되지 않으면서 `key values mismatch` 오류를 낼 때 30초 안에 확인하는 방법은?
- 인증서의 유효기간을 확인해 만료 여부부터 본다
- 설정 파싱 문제일 수 있으므로 nginx 를 다시 설치해 본다
- 같은 포트를 다른 프로세스가 쓰고 있는지 확인한다
- 인증서와 키의 modulus 해시를 각각 뽑아 같은지 비교한다
`fullchain.pem` 을 만들 때 파일 안 인증서의 올바른 순서는?
- 서버 인증서 → 중간 CA (Root 는 클라이언트가 이미 갖고 있음)
- Root CA → 중간 CA → 서버 인증서
- 순서는 상관없다
- 중간 CA → 서버 인증서
최신 브라우저가 CN 에 도메인이 적힌 인증서를 거부하는 이유는?
- CN 필드가 X.509 표준에서 아예 제거되어 파싱 자체가 실패하기 때문에
- 도메인 검증 기준이 SAN 확장으로 옮겨 갔고, CN 은 참고 정보가 되었기 때문에
- CN 은 64자를 넘길 수 없어 긴 도메인을 담지 못하기 때문에
- CN 은 서명 대상에서 빠져 있어 위조를 막을 수 없기 때문에
인증서 만료 감시 스크립트를 만들 때 `openssl x509 -checkend <초>` 를 쓰는 이유는?
- 인증서 내용을 사람이 읽기 좋은 형태로 출력해 눈으로 확인하기 좋아서
- 남은 기간이 지정한 초보다 짧으면 0 이 아닌 코드로 끝나 날짜 파싱이 필요 없어서
- 만료가 임박하면 갱신 요청까지 자동으로 보내 주기 때문에
- 인증서와 함께 중간 인증서 체인까지 검증해 주기 때문에
오래된 연동 상대 시스템이 TLS 1.0 만 지원한다고 할 때 가장 적절한 대응은?
- 전체 서비스의 ssl_protocols 에 TLSv1 을 추가한다
- TLS 를 끄고 HTTP 로 연동한다
- 해당 상대 전용 포트/서버 블록을 따로 열어 예외를 격리하고 기한을 명시해 관리한다
- 인증서를 자체 서명으로 바꾼다