이번에 인증서 만료 기간이 다 되어서 인증서를 업데이트 하던 도중 했던 작업들을 기록한다.

나에게는 새로운 domain인증서 파일과 더불어 root ca의 chain인증서가 존재한다. 

추가적으로 private key파일에 대해서는 pass phrase가 걸려있다.


이슈 1. Docker Registry같은 컨테이너에서는 인증서 파일과 private key파일 두개만을 입력받아서 HTTPS를 지원하도록 셋팅되어 있다.

해결 1. root ca chain인증서와 domain인증서를 합친다.

  • 그냥 간단하게 cat으로 두개의 파일을 merge한다.

  • 파일 순서는 domain -> root ca chain 순서이다.

    • cat domain.crt > my.crt cat root_ca.crt >> my.crt
  • 주의 : 인증서 파일은 기본적으로 마지막 파일끝에 뉴라인이 없는 경우가 많으므로, 위의 명령어를 그대로 실행하면 root ca파일이 정상적으로 입력되지 못하고 중간에 '-----END CERTIFICATE----------BEGIN CERTIFICATE-----' 와 같이 인증서 파일 내용이 겹치게 된다. 이때는 오류 발생

  • 위 명령어로 합쳐진 인증서가 정상적으로 동작하는지 아래의 명령어로 확인한다.

    • openssl verify -verbose -purpose sslserver -CAfile root_ca.crt my.crt



이슈 2. 보통의 apache같은 경우 passphrase가 걸린 private key를 설정하게 되면 구동시에 비밀번호를 물어본다. 하지만 docker registry의 경우에 컨테이너 구동시 비밀번호를 입력할수 없다.

해결 2. private key에 passphrase 제거

  • 아래의 명령어를 수행하고 직접 passphrase를 입력하면 passphrase가 제거된 private key파일이 생성된다 (원본 백업은 필수)

    [root@centos6 ~] openssl rsa -in ca.pem -out my.key 
    Enter pass phrase for ca.pem: 
    writing RSA key


추가 1) 인증서의 만료일 확인하기

  • 아래의 명령어로 인증서의 만료일을 확인한다.

    [root@centos6 ~] openssl x509 -in domain.crt -noout -dates
    notBefore=Nov 18 00:00:00 2019 GMT 
    notAfter=Feb 15 23:59:59 2022 GMT

추가 2) 인증서 변경이 정상적으로 적용되었는지 확인하기.

  • 아래의 명령어로 적용된 인증서의 만료일을 확인한다.

    [root@centos6 ~]# openssl s_client -connect www.mydomain.com:443 | openssl x509 -noout -dates 
    ... 
    notBefore=Nov 18 00:00:00 2019 GMT 
    notAfter=Feb 15 23:59:59 2022 GMT
    


BELATED ARTICLES

more