728x90
반응형

 AWS Client VPN은 증명서만의 인증이 되기 때문에 월 1회 정도의 증명서 갱신 작업을 실시하고 있습니다.

 

클라이언트 증명서 준비

AWS Client VPN 인증서 페이지 서버 증명서와 클라이언트 증명서 준비 중 클라이언트 증명서만 설정합니다.

infra.naver 에서 아래와 같이 합니다.

$ cd ~/aws-client-vpn/easy-rsa/easyrsa3/
 
$ count="$(($(ls ~/aws-client-vpn/certs/client*.crt | wc -l)+1))"
 
$ ./easyrsa build-client-full client${count}.domain.tld nopass
$ cp pki/issued/client${count}.domain.tld.crt ~/aws-client-vpn/certs/
$ cp pki/private/client${count}.domain.tld.key ~/aws-client-vpn/certs/
 
$ cd ~/aws-client-vpn/certs/
 
$ aws acm import-certificate --certificate file://client${count}.domain.tld.crt --private-key file://client${count}.domain.tld.key --certificate-chain file://ca.crt --region ap-northeast-1

aws acm import-certificate 명령어로 출력된 CertificateArn의 값은 다음 엔드포인트 작성을 awscli에서 수행할 때 필요합니다.

Import시의 출력 예:

{
    "CertificateArn": "arn:aws:acm:ap-northeast-1:1234:certificate/ce4346c4-1234-1234-1234-e700ab8191ae"
}

 

 

AWS Client VPN 엔드포인트 생성

AWS Client VPN 인증서 페이지 'AWS Client VPN 엔드포인트 만들기'와 동일한 작업을 수행합니다. awscli 를 사용하여 수행하는 순서를 나타냅니다.

 

엔드포인트 생성

authentication-options의 ClientRootCertificateChainArn은 ACM에 Import한 클라이언트 증명서의 ARN으로 대체하십시오.

aws ec2 create-client-vpn-endpoint \
  --client-cidr-block "10.70.32.0/22" \
  --dns-servers 10.12.0.2 10.52.19.65 \
  --server-certificate-arn arn:aws:acm:ap-northeast-1:123:certificate/1234-5deb-4de4-bf3f-123 \
  --connection-log-options Enabled=true,CloudwatchLogGroup=/aws/vpc/cvpn/naver-default,CloudwatchLogStream=naver-default \
  --no-split-tunnel \
  --transport-protocol udp \
  --vpn-port 443 \
  --tag-specifications "ResourceType=client-vpn-endpoint,Tags=[{Key=Name,Value=naver-default-${count}}]" \
  --vpc-id vpc-123 \
  --security-group-ids sg-123 \
  --authentication-options Type=certificate-authentication,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:ap-northeast-1:123:certificate/123123-123-6789-abcd-ef0123456789}

엔드포인트 생성 시 출력 예시

ClientVpnEndpointId 는 관련지어, 인증, 루트 테이블의 설정 명령어 시에 필요합니다.

{
    "ClientVpnEndpointId": "cvpn-endpoint-123",
    "Status": {
        "Code": "pending-associate"
    },
    "DnsName": "cvpn-endpoint-123.prod.clientvpn.ap-northeast-1.amazonaws.com"
}

 

연관된 내용

client-vpn-endpoint-id는 생성된 엔드포인트 아이디로 대체하여 실행하십시오.

for subnet in subnet-123 subnet-123 ; do
  aws ec2 associate-client-vpn-target-network \
    --subnet-id ${subnet} \
    --client-vpn-endpoint-id cvpn-endpoint-123
done

 

인증

client-vpn-endpoint-id는 생성된 엔드포인트 아이디로 대체하여 실행하십시오.

aws ec2 authorize-client-vpn-ingress \
  --target-network-cidr 0.0.0.0/0 \
  --authorize-all-groups \
  --client-vpn-endpoint-id cvpn-endpoint-123

 

루트 테이블

client-vpn-endpoint-id는 생성된 엔드포인트 아이디로 대체하여 실행하십시오.

for subnet in subnet-123 subnet-1234 ; do
  aws ec2 create-client-vpn-route \
    --destination-cidr-block 0.0.0.0/0  \
    --target-vpc-subnet-id ${subnet} \
    --client-vpn-endpoint-id cvpn-endpoint-123
done

 

ovpn 파일 편집

3개의 파일을 하나로 묶기 위해 .ovpn 파일을 편집합니다.먼저 3개의 파일을 준비하겠습니다.

.crt 파일 (infra-ops-0에서 작성한 클라이언트 증명서) SCP에서 다운로드

.key 파일(infra-ops-0에서 작성한 클라이언트 키 파일) SCP에서 다운로드

.ovpn 파일 관리 콘솔에서 작성한 엔드포인트를 선택하여 '클라이언트 설정 다운로드'

 

.ovpn 파일을 편집합니다. 접속처의 호스트명을 변경합니다.

remote cvpn-endpoint-....amazonaws.com 443
↓
remote naver.cvpn-endpoint-....amazonaws.com 443

증명서 파일의 내용을 .ovpn에 추가합니다.

<cert>
-----BEGIN CERTIFICATE-----
....
....
....
-----END CERTIFICATE-----
</cert>

키 파일의 내용을 .ovpn에 추가합니다.

<key>
-----BEGIN PRIVATE KEY-----
....
....
....
-----END PRIVATE KEY-----
</key>
728x90
300x250

'IT > AWS' 카테고리의 다른 글

AWS AD검증  (0) 2021.08.12
AWS Client VPN 인증서 준비  (0) 2021.08.12
AWS 프로그램용 IAM 사용자. 역할에 S3 삭제 권한 제외  (0) 2021.08.12
Amazon EC2 API Tools  (0) 2021.08.09
AWS Python에 의한 관리  (0) 2021.08.09

+ Recent posts