blog.naver.com/a_line1/222090298550
docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-admin/client-authentication.html#mutual
1. 인증서 생성
명령어 순서
아래 명령어에서 마지막 두 줄의 ap-northeast-2만 해당 리전으로 값을 맞추면 됨
ap-northeast-2 : 서울 리전
mkdir pmo_rsa
cd pmo_rsa
git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
./easyrsa build-client-full client1.domain.tld nopass
mkdir ~/.ssh/pmo_rsa
cp pki/ca.crt ~/.ssh/pmo_rsa/
cp pki/issued/server.crt ~/.ssh/pmo_rsa/
cp pki/private/server.key ~/.ssh/pmo_rsa/
cp pki/issued/client1.domain.tld.crt ~/.ssh/pmo_rsa/
cp pki/private/client1.domain.tld.key ~/.ssh/pmo_rsa/
cd ~/.ssh/pmo_rsa
aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt --region ap-northeast-2
aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt --region ap-northeast-2
docs.aws.amazon.com/acm/latest/userguide/import-certificate-api-cli.html
2. 클라이언트 VPN 엔드포인트 생성
3. 클라이언트 구성 다운로드 및 cert, key 등록
다운받은 파일을 vi 편집기 등을 이용해 아래와 같이 <cert></cert> <key></key> 추가
<cert>
client1.domain.tld.crt 파일 내용 삽입
</cert>
<key>
client1.domain.tld.key 파일 내용 삽입
</key>
client
dev tun
proto tcp
remote pmovpn.cvpn-endpoint-....prod.clientvpn.ap-northeast-2.amazonaws.com 443
remote-random-hostname
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIDKDCCAhCgAwIBAgIJAOBIXl6AGKWnMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
zTqw9mtFaL/Sv0z+liTLt6Iy5VgrU8Qv3RCPRAynhkoeo88vHKEYOERnfCRiAk5K
...
08guwCIiN8Jl70QxsJ1NzyBPmVEAaTlXhZJwSX2pjop/00zUKEqtio5ngCo4YMT5
fz8foGjyi2ysh6YFI5pSclcnjK6VxQyxNbODgjQCc/SW7TVo+tffA9vmsz7s/Wzh
4aAnOlKk3kge+lUNdyKEzCplWWwKHx2vYEWN+S69+wWZcwjhbPCIHu8/rJE=
-----END CERTIFICATE-----
</ca>
<cert>
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
f6:4d:be:40:7c:d9:fc:56:...:af:a0:9b
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=pmo_aws
Validity
Not Before: Mar 8 00:49:23 2021 GMT
Not After : Jun 11 00:49:23 2023 GMT
Subject: CN=client1.domain.tld
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:ce:8c:ce:5c:8e:ce:bd:0d:6c:b3:4a:3b:1e:33:
...
f2:f8:76:fc:d1:8d:b6:b9:e7:a2:f0:59:50:47:e3:
48:67
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
CC:73:DD:F2:1B:39:D1:FA:05:B0:1C:A0:FB:15:47:AD:29:A8:BC:03
X509v3 Authority Key Identifier:
keyid:60:77:3D:10:1A:52:A9:7C:BD:A3:D0:5C:89:75:61:FC:85:0F:04:14
DirName:/CN=pmo_aws
serial:E0:48:5E:5E:80:18:A5:A7
X509v3 Extended Key Usage:
TLS Web Client Authentication
X509v3 Key Usage:
Digital Signature
Signature Algorithm: sha256WithRSAEncryption
b8:19:65:da:93:cc:cb:45:72:98:f9:09:5d:18:03:8a:37:ff:
... b7:56:4a:f1:25:fe:53:af:c1:08:13:e6:7d:7f:6d:56:44:53:
1d:5a:c2:29
-----BEGIN CERTIFICATE-----
MIIDTjCCAjagAwIBAgIRAPZNvkB82fxWN51r0xavoJswDQYJKoZIhvcNAQELBQAw
... client1.domain.tld.crt 내용 삽입
uF2kR0vLA9V2b4HMt1ZK8SX+U6/BCBPmfX9tVkRTHVrCKQ==
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDOjM5cjs69DWyz
... client1.domain.tld.key 내용 삽입
Cs2hfZPW1itzIlnFPwlOqSKl1J8=
-----END PRIVATE KEY-----
</key>
reneg-sec 0
4. 연결, 보안그룹, 권한 부여, 라우팅 테이블 셋팅
연결 - 접속 하려는 VPC 연결
보안 그룹 에 Target 서버의 CIDR 추가
- 특이하게 인바운드에 접속 대상 subnet의 CIDR 대역을 잡아줘야 함
- 다시 말해 일반적으로 인바운드에 접속을 하는 Origin IP 대역을 잡는 것이 보통이지만,
VPN Client의 경우 Target IP CIDR을 추가해 주어야 접속이 됨
- 권한 부여 (VPC와 subnet의 권한을 모두 부여해야 함)
VPC의 CIDR 권한 부여
subnet의 CIDR 권한 부여
- 라우팅 테이블
설정을 제대로 했다면 VPC 라우팅 테이블은 자동으로 Default로 잡힘
아래 0.0.0.0/0 을 add-route로 잡아주면 return traffic까지 라우팅이 잡힘(필요한 경우만 추가)
5. AWS Client VPN for WIndows or macOS 다운로드 및 설치
docs.aws.amazon.com/vpn/latest/clientvpn-user/connect-aws-client-vpn-connect.html
설치 후 연결 생성 -> 3에서 만든 "클라이언트 구성 다운로드" 파일로 연결 생성
'AWS_NCP' 카테고리의 다른 글
AWS RDS 교차 리전간 VPC Peering (0) | 2019.08.20 |
---|---|
Jenkins 서비스 생성 - CloudFormation + Ansible을 이용한 IaC (Infrastructure as Code) 구성 (0) | 2019.06.25 |
2. VPC와 Subnet 생성 실습 (0) | 2019.03.02 |
1. VPC의 완벽 이해 (0) | 2019.03.02 |