이전 글(구글 클라우드 플랫폼(GCP)에 OpenVPN 서버 구축(4) : EasyRSA 설치)에 이어서 쓰는 글입니다.

 

EasyRSA는 인증서 생성/관리를 쉽게 할 수 있도록 도와주는 도구이지만, 초보자 입장에서 처음 접했을 때 어렵게 느껴지더군요. (OpenSSL로 직접 인증서를 만드는 것이 오히려 쉽게 느껴졌습니다.)

 

 

EasyRSA 실행하기 전에 vars 파일을 구성하는 이유?

OpenVPN 서버 구축 포스팅들을 검색해보면 Easy RSA 설명 시작 단계에서 vars.example 파일을 vars 파일로 복사 후 vars 파일의 내용을 수정하라고 적은 글들이 많을 겁니다. 정황상 vars 파일이 환경설정 역할을 할 것 같은데, 추측이 틀릴 가능성도 있기 때문에 정확한 자료를 찾아보고 대처하는 것이 좋습니다.

 

여러분께서 다운로드 받았던 EasyRSA-3.0.8.tgz 압축파일 내의 /doc/EasyRSA-Advanced.md 문서에 설명이 있습니다. 열어보는 것이 힘들다면 easyrsa github에서 보면 됩니다.

https://github.com/OpenVPN/easy-rsa/blob/master/doc/EasyRSA-Advanced.md

 

Configuration Sources

There are 3 possible ways to perform external configuration of Easy-RSA, selected in the following order where the first defined result wins:

  1. Command-line option
  2. Environmental variable
  3. 'vars' file, if one is present (see vars Autodetection below)
  4. Built-in default

Note that not every possible config option can be set everywhere, although any env-var can be added to the 'vars' file even if it's not shown by default.

 

그러니까 1 -> 2 -> 3 -> 4의 순서대로 설정 항목이 적용되는데, vars 파일은 3순위이고 vars 파일이 없으면 기본값(Built-in default)이 적용되겠군요. 커맨드라인 옵션(1. Command-line option) 지정은 귀찮아서 안할테고, 환경변수(2. Envitonmental variable) 설정도 귀찮으니 vars 파일을 사용하겠다는 의도였습니다.

 

vars 파일에서 정하지 않은 사항들은 Built-in default 값을 따르기 때문에, 바꾸고 싶은 특정 항목만 vars 파일에서 지정해주면 되겠습니다.

 

▼ 주의할 점 : vars.example 파일에 적혀 있듯이, 리눅스 배포판의 패키지 매니저(apt, yum)로 easyrsa를 설치했을 경우에는 다음 업그레이드시 설정사항이 날아가지 않도록 vars 파일을 별도로 관리해야 합니다. (제 방법을 따라하셨다면 해당되지 않습니다.)

 

vars 파일 구성(EasyRSA 환경설정)

https://github.com/OpenVPN/easy-rsa/blob/master/easyrsa3/vars.example

▼ 자꾸 github에서 캡쳐해와서 미안합니다(터미널창 캡쳐보다 편해요.).
vars.example 파일에는 사용법이 설명되어 있고, 옵션들이 주석처리(#)되어 있습니다.

▲ 붉게 밑줄친 부분을 보면... 환경설정 파일로 쓰고 잎으면 vars 파일로 네이밍해서 쓰고,
기본 설정대로 쓰고 싶으면 vars.example 파일을 사용할 필요가 없다고 하네요.

 

▼ 터미널 창에서 아래처럼 입력하면 vars.example 파일이 vars 파일로 복사됩니다.
cp vars.example vars

 

nano vars
라고 입력하여 수정을 시도합니다.

 

easyrsa 버전업되면 vars 항목들도 변동이 생길 수 있습니다.
전체적으로 훑으면서 설명할텐데
맹신하지 마시고 눈치껏 대응하는 과정이라 생각하면서 따라오세요.
(달라진 부분이 있으면 주석처리된 영문 설명을 읽어보고 대응!)

 

set_var EASYRSA 항목을 점검합니다. 설정파일의 경로를 지정하는 항목 같은데, 기본값은 easyrsa가 있는 곳이라 수정할 필요가 없을 것 같네요.

 

set_var EASYRSA_OPENSSL 항목을 점검합니다. 터미널 창에서 어떤 경로(디렉토리)에서든 opeenssl 명령어를 쓸 수 있다면 이 옵션을 설정할 필요가 없습니다.
그래서 저는 설정하지 않았고(주석을 풀지 않음), nano 에디터를 빠져나온 다음 openssl이 설치되어 있는지 & openssl 명령어를 쓸 수 있는지를 점검했습니다.

 

▼ 터미널 창에서 apt list openssl 이라고 쳐봤더니 installed 되었다고 나오네요. 설치해야 한다면 sudo apt install openssl 이라고 치면 됩니다.
openssl 명령어를 쓸 수 있는지 확인하기 위해 openssl help 라고 입력해 봤는데, 도움말이 나오는 것을 보면 잘 작동하는 것 같습니다.

 

vars 편집을 계속합니다. (nano vars)

 

set_var EASYRSA_PKI 항목으로는 PKI(Public Key Infrastructure. 공개키 인프라) 디렉토리의 위치를 바꿀 수 있습니다. 저는 주석(#)을 풀지 않고 경로만 눈도장 찍어두었고요,
set_var EASYRSA_TEMP_DIR 항목으로는 temp 디렉토리의 위치를 바꿀 수 있습니다. 역시 주석(#)을 풀지 않았습니다.

 

set_var EASYRSA_DN 옵션은 인증서에 CN(Common Name) 값만 추가할지 DN(Distinguished Name) 항목들을 전부 추가할지를 정합니다. 기본값은 cn_only인 것 같은데, 주석(#)을 풀고 org로 바꾸면 아래에 있는 COUNTRY/PROVINCE/CITY/ORG/EMAIL/OU 항목들까지 전부 주석을 풀고 채워줘야 한다고 적혀 있네요(생략하고 싶으면 . 을 넣으세요. 이메일 항목 제외.).

▲ 저는 개인적으로 쓸 거라, cn_only가 편할 것 같아 set_var EASYRSA_DN의 주석을 풀었습니다.

(안 풀어도 기본값은 cn_only로 들어갈 겁니다. 저는 혹시나 해서 푼 거예요.)

 

set_var EASYRSA_KEY_SIZE 옵션. 4096으로 올리면 속도가 떨어진다고 적혀 있어서 2048로 놔뒀습니다(주석을 풀지 않음. 기본값이 2048임.). 4096으로 올리면 set_var EASYRSA_ALGO 옵션을 rsa로 고정해야 된다고 적혀 있네요.

set_var EASYRSA_CERT_EXPIRE 옵션의 기본값은 825일인데, set_var EASYRSA_CERT_EXPIRE 옵션처럼 3650일로 늘려주면 편하겠죠? 그래서 주석을 풀고 3650으로 바꿨습니다.

 

▼ 노란 박스로 묶은 부분은 선택사항입니다. 이 과정을 따르면 뒤에서 openssl 인증서 생성할 때 디피 헬만(Diffie–Hellman) Key를 생성하는 과정을 건너뛰게 됩니다. 저는 노란박스 과정을 따르지 않겠습니다.

▼ 아래의 링크에서 set_var EASYRSA_ALGO 옵션을 ec로 바꾸면 openvpn 속도가 빨라진다고 하네요. 그리고 set_var EASYRSA_DIGEST 옵션도 sha512로 바꾸라고 적혀 있습니다.

https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-ubuntu-20-04

 

▼ 아래처럼 추가하면 됩니다. secp384r1 값을 바꾸고 싶은데 선택지를 모르겠으면 아래에 첨부한 링크를 참고하세요. Secp521r1 / Secp384r1 / Secp256r1 / Secp224r1 / Secp192r1 가 있는 것 같습니다.

https://www.ibm.com/docs/ko/i/7.3?topic=settings-named-elliptic-curve-group

 

▼ 마지막줄 부근에 set_var EASYRSA_DIGEST 옵션이 있습니다. sha512로 바꾸면 됩니다.

 

노란박스 과정을 따르지 않겠다면 아래의 링크들을 참고해서 이후 과정을 진행하세요.
(다시 적습니다. 저는 노란박스 과정을 따르지 않습니다.)

https://dejavuqa.tistory.com/243

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-18-04

https://openvpn.net/community-resources/how-to/#installing-openvpn

https://community.openvpn.net/openvpn/wiki/GettingStartedwithOVPN

 

본문에 적지 않은 나머지 항목들은 크게 신경쓸 부분이 아닌 듯하여 뺐습니다.

수정한 vars 파일을 저장하고 빠져나오세요.

 

vars 파일을 수정하면서 느낀 것인데, vars 파일로 설정을 구성하지 않고 기본값을 따르더라도 보안상 큰 문제가 없겠더군요. 이 포스팅을 괜히 썼나 싶을 정도입니다.
결국 제가 vars 파일에서 바꾼 것은 set_var EASYRSA_DN 옵션과 set_var EASYRSA_CERT_EXPIRE 옵션 뿐입니다.

 

이후 과정은 다음 글에서 적겠습니다.

 

※ 참고 문서 : https://easy-rsa.readthedocs.io/en/latest/advanced/

※ 다음 글 : 구글 클라우드 플랫폼(GCP)에 OpenVPN 서버 구축(6) : 인증서 생성

반응형