15장 교체 전에 다섯 가지를 검증한다
인증서를 받은 즉시 운영 경로로 복사하지 않는다. staging 디렉터리에서 다음을 확인한다.
1. 유효기간과 식별 정보
openssl x509 -in next-cert.pem -noout
-subject -issuer -serial -dates -ext subjectAltName
openssl x509 -in next-cert.pem -checkend 1209600 -noout
두 번째 명령의 1,209,600초는 14일이다. 이 값은 운영 여유 시간 예시이며 조직 정책으로 정한다. CN만 보지 말고 SAN에 서비스 hostname이 정확히 있는지 확인한다. wildcard는 한 label의 범위를 자동으로 넘지 않는다.
2. 개인키 일치
openssl x509 -in next-cert.pem -pubkey -noout
| openssl pkey -pubin -outform DER
| openssl sha256
openssl pkey -in next-key.pem -pubout -outform DER
| openssl sha256
두 digest가 같아야 한다. 개인키 본문이나 passphrase를 화면 공유에 노출하지 않는다.
3. 체인
공개 CA 체인은 서버가 보내야 할 intermediate와 클라이언트 trust store의 root 관계를 확인한다. 사설 CA 실습은 다음처럼 검증한다.
openssl verify -CAfile build/cert-fixture/ca.crt
build/cert-fixture/next.crt
운영에서는 CA가 제공한 fullchain과 web server 요구 형식을 따른다. root를 무조건 fullchain에 붙이는 것이 정답은 아니다.
4. 키 사용과 알고리즘
openssl x509 -text에서 public key, signature algorithm, key usage, extended key usage를 확인한다. 조직과 클라이언트 호환 정책을 적용한다. 단순히 RSA 비트 수 하나만 보고 안전을 판정하지 않는다.
5. 대상 일치
발급된 hostname 목록, Nginx server_name, Tomcat SSLHostConfig hostName, DNS와 모니터링 대상이 같은 서비스인지 대조한다.
책의 실제 fixture를 만든다.
npm run cert:fixture
cat build/cert-fixture/verification.json
생성된 CA와 키는 교육용이며 빌드 디렉터리 밖으로 복사하지 않는다.