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>
'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 |