Topic. 우리를 아주 짜증나게 하는 https 를 이용하기 위해서는 SSL 보안이 필요합니다.
이 SSL이 무엇인지 알아보고 여러가지 인증서파일과 변환 방법에 대해 알아봅시다.
1. SSL 이란?
SSL은 보안 소켓 계층(Secure Sockets Layer)의 약자입니다.
SSL은 HTTP 통신시 클라이언트가 서버에 전달하는 정보들을 암호화 하여 전송하는 통신에 필요한 계층입니다.
이후에 등장한 TLS 도 동일한 개념입니다.
결론적으로 TCP/IP 통신시에 HTTP 에 SSL/TLS 를 이용하여 암호화한 프로토콜이 HTTPS 입니다.
우리는 이미 SSL을 이용하여 웹서핑을 하고 있습니다. 사이트를 접속하면 주소창 왼쪽에 있는 자물쇠가 보입니다.
간혹
이렇게 뜨는것은 SSL이 정상적으로 적용되지 않은 상태입니다.
2. 보안 인증서
이제 개발자들에게 쓸모있는 설명을 해보려 합니다.
웹서버개발이나 API 개발을 많이 해보신 분은 서버간 HTTP 통신을 시도할 때 CORS 나 PKIX 오류를 매우매우 많이 보셨을 것입니다.
CORS 는 도메인이 다른 서버와 통신하거나 http 와 https 사이의 통신을 불가능하게 정한 정책입니다.
PKIX path building failed 는 서버에 인증서설치가 잘못되었거나 클라이언트가 서버의 인증서를 받을 수 없을때 발생하는 오류입니다.
정말 짜증나게 하는 오류중 하나죠... 이를 잘 해결하기 위해서 아래 내용을 살펴봅시다.
보안 인증서 파일 종류는 아래와 같습니다.
확장자 | 설명 |
.der | DER (Distinguished Encoding Representation)은 바이너리포맷 파일입니다. 메모장으로 내용확인이 불가능하며 인증서 뷰어를 이용하여 확인할 수 있습니다. |
.pem | PEM (Privacy Enhanced Mail)은 Base64 인코딩된 ASCII 텍스트파일입니다. 텍스트 파일로 되어있어 메모장으로도 열 수 있고 서버에서 내용만 복사하여 새로운 파일로 만들수 있습니다. SSL 인증서 발급시 요청시 대부분의 인증 업체에서 만들어주는 방식입니다. |
.crt | PEM 방식과 거의 동일하여 .pem 파일의 확장자를 .crt 로 바꿔서 사용이 가능합니다. 이는 유닉스/리눅스 기반 시스템에서 인증서파일로 구분하기 위하여 사용되는 확장자입니다. 마찬가지로 메모장으로 열어 내용 확인이 가능합니다. 여러 .crt 파일을 합쳐서 .pem 으로 만들어서 작업을 하기도 합니다. |
.cer | CER은 Windows 기반 운영체제에서 인증서파일로 구분하기 위하여 사용되는 확장자입니다. 하지만 .crt 확장자도 윈도우에서 인식 가능하기에 큰 의미는 없습니다. |
.key | PEM 포맷일수도 있고 DER 바이너리 포맷일수도 있으며, 파일을 열어봐야 어떤 포맷인지 알수가 있습니다. 주로 openssl 및 java 에서 개인키 파일임을 구분하기 위해서 사용되는 확장자입니다. |
.p12 | PKCS#12 바이너리포맷 파일입니다. |
.pfx | .p12 와 동일합니다. |
.jks | JKS (Java Key Store)는 JAVA 기반의 바이너리 포맷입니다. |
* 참조 https://www.sslcert.co.kr/guides/kb/54?page=2
3. 실무 사용 인증서 통합 및 변환
인증서파일을 업체에서 받으면 보통 아래와 같이 구성되어있을것입니다.
ubuntu@xxxxxx:/etc/nginx/ssl$ ls
www.ssltest1.com.crt www.ssltest2.com.crt www.ssltest.com.key
3-1 crt 파일을 pem파일로 통합
$ cat www.ssltest1.com.crt www.ssltest2.com.crt > www.ssltest.com.pem
$ cat www.ssltest.com.pem
-----BEGIN CERTIFICATE-----
...인증서 내용...
-----END CERTIFICATE-------
-----BEGIN CERTIFICATE-----
...인증서 내용...
-----END CERTIFICATE-------
#오류
$ cat www.example.com.pem
-----BEGIN CERTIFICATE-----
...인증서 내용...
-----END CERTIFICATE------------BEGIN CERTIFICATE-----
...인증서 내용...
-----END CERTIFICATE-------
- 위와같이 합쳐졌다면 편집기(vi 등)를 이용하여 들어가 엔터를 쳐주면 됩니다.
3-2 생성된 pem파일과 기존 key파일을 이용하여 p12 파일생성
$ openssl pkcs12 -export -in www.ssltest.com.pem -inkey www.ssltest.com.key -out www.ssltest.com.p12
3-3 생성된 p12(pkcs12) 파일을 이용하여 keystore 파일 생성
$ keytool -importkeystore -srckeystore www.ssltest.com.p12 -srcstoretype PKCS12 -destkeystore www.ssltest.com.keystore -deststoretype JKS
이상 apache nifi - elasticsearch 연결 작업증 SSL 인증을 진행할때 삽질을 엄청하다가 발견한 상황을 정리해 보았습니다.