블로그 설정 개편: ECDSA 인증서 체인
지난 달에 이어서 블로그 설정 개편 계속.
지난 5월엔 HTTP2 / TLS 1.3 / ECDSA 인증서 발급을 했다 이 시점에는 웹 서버가 사용하는 공개키는 ECDSA 키지만, 이걸 서명하는 중간 단계 인증서는 Let’s Encrypt의 RSA 인증서(R3)를 썼다. 이제 그걸 ECDSA 인증서로 교체하는 작업을 진행했다.
지난 달에 Let’s Encrypt production ECDSA allowlist 에 등록 신청을 했다. 시점은 대략 블로그 글을 작성했던 2021-05-14 즈음. 그리고 이거에 대한 완료 메일을 오늘 아침에 받아서 적용해 봤다.
웹 브라우저로 확인해보면 위의 포럼 글에서 언급하는 것처럼 아래와 같은 인증서 체인으로 나온다.
[내 블로그 인증서] - [E1] - [ISRG Root X2] - [ISRG Root X1]
E1은 현재의 production intermediate 인증서 서명키(ECDSA), IRSG Root X2는 ECDSA용 Let’s Encrypt 루트 인증서에 해당한다. 다만 X2는 작년 가을에야 나왔고, 널리 쓰이고 있지 않아서 대부분의 현 세대 운영체제와 브라우저에서 인식하는 X1으로 서명한 상태. 실제로 인증서 체인 파일 — certbot이 생성한 fullchain.pem — 을 열어보면 ISRG Root X2까지 들어있는 상태. Firefox 인증서 보기로 열어보면 이렇다. 왼쪽부터 세 개는 ECDSA키고, ISRG Root X1은 호환성을 위해서 추가로 들어간 것.
추가로, 완전히 ECDSA 키만으로 구성하는 미래를 시험해보았다. Firefox에서 혹은 OS 수준에서 CA 인증서를 추가할 수 있는데, 이걸 이용해서 X2 인증서를 추가했다. (Firefox는 이런 식으로 추가할 수 있다.) 그러면 아래처럼 보인다. (X1 쪽이 빠짐) 웹 브라우저가 사용하는 CA 인증서 목록에 있는게 나올 때까지 chain을 확인(resolve)하는데, X2를 미리 넣어놨으니 거기서 끝나는 것. 이전에는 X2가 없는 상태라 X1이 나올 때까지 확인.
추가 심심풀이로 오래전 부터 사용 중인(=ACME v1 때 생성한) 인증서 쪽을 확인해보았다. 그런데 이쪽엔 (현재 관점에서는 필요하지 않은) X1 쪽에서 발급한 RSA인증서 체인에 X1도 포함시켜 놨더라. 이건 그 시절엔 X1이 대부분의 브라우저/운영체제에 없어서, Let’s Encrypt 루트 인증서를 DST Root CA X3(IdenTrust)로 서명한 상태여서 그런듯.
충분히 시간이 지나서 X2 인증서가 주요 운영체제와 브라우저에 들어가면 이 X1 포함된 인증서 체인도 X2까지만 있는 것으로 간소화 되리라 기대한다. (서버 인증서랑 E1만 있는 미래가 올거란 얘기)