본문 바로가기

클라우드 플레어

Cloudflare 의 원본인증서 Ubuntu에 설치 및 Tomcat에 적용 [Cloudflare, SSL, Tomcat, Ubuntu, Linux]

반응형

* 도메인은 이미 등록이 되어있고 기본 설정이 되어있다는 전제

* Ubuntu 20.04

* OracleCloud 로 서버 구축

* 원본서버란 자신이 구축해놓은 Linux 서버 ( SSH로 접근하는 )

* MobaXterm 사용

* Tomcat9.0.44


클라우드 플레어에 로그인 후 원본 인증서를 저장하고자 하는 서버의 도메인으로 접근

 

상단 메뉴바중에서 SSL/TLS 를 클릭

빨간색 네모박스가 쳐져있는 전체(엄격) 으로 암호화 모드를 변경하고, 주황색 네모박스가 쳐져있는 원본 서버메뉴를 클릭

참고)

* 끄기(안전하지 않음) : SSL 적용 X

* 가변 : 원본서버에는 SSL 적용X, 클라우드플레어가 클라우드플레어와 브라우저사이를 암호화해준다. 쉽게 말해서 난 아무것도 안하고 사용자가 접근 시 클라우드플레어가 알아서 https로 접근할 수 있게 해줌

* 전체 : 원본서버에도 SSL을 적용했고, 클라우드플레어에서도 암호화를 적용해주지만 자체서명 인증서여도 굳이 검사하지 않음.

* 전체(엄격) : 원본서버에서도 SSL을 적용했고, 클라우드플레어에서도 암호화를 적용해주며 자체서명 인증서는 사용하지 못하고 Cloudflare Origin CA SSL 혹은 인증기관에서 구매한 인증서만 사용 가능.

자세한 설명은 아래 링크 참고

https://support.cloudflare.com/hc/ko/articles/200170416-Cloudflare%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%97%94%EB%93%9C%ED%88%AC%EC%97%94%EB%93%9C-HTTPS-3%EB%B6%80-SSL-%EC%98%B5%EC%85%98

 

Cloudflare를 사용한 엔드투엔드 HTTPS - 3부: SSL 옵션

어떤 Cloudflare SSL 옵션으로 Cloudflare와 원본 웹 서버 사이의 HTTPS 트래픽을 암호화하는지 알아보세요. 개요 꺼짐 유연 전체 전체(엄격) 엄격(SSL 전용 원본 풀) SSL/TLS Recommender 관련 자료 개요Cloudflare

support.cloudflare.com

 

 

 

인증서 생성을 클릭

이미 생성한 후라 리스트에 있지만 최초로 시도 시 리스트 비어있는 것이 정상

설정은 따로 건드리지 않고 생성을 클릭, 호스트 이름은 필요하면 수정

키 형식에는 PEM, PKCS#7, DER 이 있는데 귀찮으니 그냥 PEM 으로 발급받는다.

* 개인 키는 최초 발급받을 경우에만 확인할 수 있으니 절대 까먹지 말고 저장해둔다.

* 그리고 재 접근시 개인 키를 볼 수 없으므로 이 상태에서 멈추고 Ubuntu 에서 인증서를 설치한다.

텍스트에디터를 사용해 파일을 저장, 메모장도 가능

* 공백이나 줄바꿈이 들어가지 않도록 딱 붙여서 수정한다.

 

 

아래처럼 파일명을 바꿔서 pem으로 저장

MobaXterm 으로 원본 서버에 접속하여 자신이 원하는 폴더에 pem 파일을 업로드

openssl이 깔려있지 않으면 yum install openssl* 또는 apt install openssl* 로 설치

ubuntu@test:~$ sudo -i  /*sudo 권한*/
root@test:~# cd /ubuntu/home/ /*디렉토리 이동*/
root@test:/home/ubuntu# vi 파일명.pem  /*공백 및 줄바꿈이 있는 지 확인*/
root@test:/home/ubuntu# openssl pkcs12 -export -out 파일명.p12 -in 파일명.pem  /*pem인증서를 pkcs12인증서로 내보내기*/
Enter Export Password:  /*비밀번호 입력*/
Verifying - Enter Export Password:  /*비밀번호 재입력*/
root@test:/home/ubuntu# ls  /*제대로 만들어졌는지 파일리스트 확인*/
파일명.p12  파일명.pem
root@test:/home/ubuntu# keytool -importkeystore -srckeystore 파일명.p12 -srcstoretype pkcs12 -destkeystore 파일명.jks -deststoretype jks /*pkcs12인증서를 jks로*/
Importing keystore 파일명.p12 to 파일명.jks...
Enter destination keystore password:
Re-enter new password:  /*비밀번호 입력*/
Enter source keystore password:  /*비밀번호 재입력*/
Entry for alias 1 successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore 파일명.jks -destkeystore 파일명.jks -deststoretype pkcs12".
root@test:/home/ubuntu# keytool -list -keystore 파일명.jks
Enter keystore password:
Keystore type: jks
Keystore provider: SUN

Your keystore contains 1 entry

1, Apr 28, 2021, PrivateKeyEntry,
Certificate fingerprint (SHA1): /*코드값나옴*/

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore 파일명.jks -destkeystore 파일명.jks -deststoretype pkcs12".
root@test:/home/ubuntu# ls  /*jks파일 잘 만들어졌는지 파일리스트 확인*/
파일명.jks  파일명.p12  파일명.pem
root@test:/home/ubuntu# rm -rf 파일명.p*  /*jks파일 제외하고 pem, p12파일 제거*/
root@test:/home/ubuntu# ls  /*jks파일 제외하고 잘 지워졌는지 확인*/
파일명.jks
root@test:/home/ubuntu# keytool -list -v -keystore 파일명.jks /*인증서내용 세부확인*/
Enter keystore password:  /*비밀번호 입력*/
Keystore type: jks
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: 1  /*별칭이름, 기억해두기*/
Creation date: Apr 28, 2021
Entry type: PrivateKeyEntry
Certificate chain length: 1

/*내용 길어서 생략*/

*******************************************
*******************************************

tomcat이 설치된 폴더로 이동 후 conf/server.xml 파일의 https를 아래와 같이 수정

<Connector port="443" maxHttpHeaderSize="8192" maxThreads="100"
           minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" disableUploadTimeout="true"
           acceptCount="100" scheme="https" secure="true"
           SSLEnabled="true" clientAuth="false"
           sslProtocol="TLS" keyAlias="1" /*keyAlias에 10번에서 기억해뒀던 별칭 입력*/
            keystoreFile="/home/ubuntu/파일명.jks"
            keystorePass="비밀번호"/>

 

톰캣 재시작