소개
이 문서에서는 다른 툴을 사용하여 SD-WAN vEdge에 루트 인증서를 설치하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- Cisco Catalyst SD-WAN(Software-Defined Wide Area Network)
- 인증서
- 기본 Linux
사용되는 구성 요소
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
- Cisco Catalyst SD-WAN Validator 20.6.3
- Cisco vEdge 20.6.3
문제
디지털 인증서는 암호 및 PKI(Public Key Infrastructure)를 사용하여 디바이스, 서버 또는 사용자의 신뢰성을 인증하는 전자 파일입니다. 디지털 인증서 인증을 통해 조직은 신뢰할 수 있는 장치와 사용자만 네트워크에 연결할 수 있습니다.
vEdge 하드웨어 라우터의 ID는 Avnet에서 서명한 장치 인증서를 통해 제공되며, 제조 과정에서 생성되어 TPM(Trusted Platform Module) 칩에 구워집니다. Symantec/DigiCert 및 Cisco 루트 인증서는 제어 구성 요소의 인증서를 위한 트러스트를 위해 소프트웨어에 사전 로드됩니다. 추가 루트 인증서는 수동으로 로드하거나, SD-WAN Manager에서 자동으로 배포하거나, 자동 프로비저닝 프로세스 중에 설치해야 합니다.
SD-WAN에서 가장 일반적인 문제 중 하나는 잘못된 인증서로 인한 제어 연결 실패입니다. 인증서가 설치되지 않았거나 인증서가 손상되었기 때문에 이러한 문제가 발생합니다.
제어 연결 오류 범례를 검증하려면 EXEC 명령 show control connections-history를 사용합니다.
vEdge # show control connections-history
Legend for Errors
ACSRREJ - Challenge rejected by peer. NOVMCFG - No cfg in vmanage for device.
BDSGVERFL - Board ID Signature Verify Failure. NOZTPEN - No/Bad chassis-number entry in ZTP.
BIDNTPR - Board ID not Initialized. OPERDOWN - Interface went oper down.
BIDNTVRFD - Peer Board ID Cert not verified. ORPTMO - Server's peer timed out.
BIDSIG - Board ID signing failure. RMGSPR - Remove Global saved peer.
CERTEXPRD - Certificate Expired RXTRDWN - Received Teardown.
CRTREJSER - Challenge response rejected by peer. RDSIGFBD - Read Signature from Board ID failed.
CRTVERFL - Fail to verify Peer Certificate. SERNTPRES - Serial Number not present.
CTORGNMMIS - Certificate Org name mismatch. SSLNFAIL - Failure to create new SSL context.
DCONFAIL - DTLS connection failure. STNMODETD - Teardown extra vBond in STUN server mode.
DEVALC - Device memory Alloc failures. SYSIPCHNG - System-IP changed
DHSTMO - DTLS HandShake Timeout. SYSPRCH - System property changed
DISCVBD - Disconnect vBond after register reply. TMRALC - Timer Object Memory Failure.
DISTLOC - TLOC Disabled. TUNALC - Tunnel Object Memory Failure.
DUPCLHELO - Recd a Dup Client Hello, Reset Gl Peer. TXCHTOBD - Failed to send challenge to BoardID.
DUPSER - Duplicate Serial Number. UNMSGBDRG - Unknown Message type or Bad Register msg.
DUPSYSIPDEL- Duplicate System IP. UNAUTHEL - Recd Hello from Unauthenticated peer.
HAFAIL - SSL Handshake failure. VBDEST - vDaemon process terminated.
IP_TOS - Socket Options failure. VECRTREV - vEdge Certification revoked.
LISFD - Listener Socket FD Error. VSCRTREV - vSmart Certificate revoked.
MGRTBLCKD - Migration blocked. Wait for local TMO. VB_TMO - Peer vBond Timed out.
MEMALCFL - Memory Allocation Failure. VM_TMO - Peer vManage Timed out.
NOACTVB - No Active vBond found to connect. VP_TMO - Peer vEdge Timed out.
NOERR - No Error. VS_TMO - Peer vSmart Timed out.
NOSLPRCRT - Unable to get peer's certificate. XTVMTRDN - Teardown extra vManage.
NTPRVMINT - Not preferred interface to vManage. XTVSTRDN - Teardown extra vSmart.
STENTRY - Delete same tloc stale entry.
PEER PEER PEER SITE DOMAIN PEER PRIVATE PEER PUBLIC LOCAL REMOTE REPEAT
TYPE PROTOCOL SYSTEM IP ID ID PRIVATE IP PORT PUBLIC IP PORT LOCAL COLOR STATE ERROR ERROR COUNT DOWNTIME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
vbond dtls - 0 0 10.10.10.1 12346 10.10.10.1 12346 public-internet tear_down NOERR CRTVERFL 393 2024-01-31 T17:19:15-0500
vbond dtls - 0 0 10.10.10.2 12346 10.10.10.2 12346 public-internet tear_down NOERR CRTVERFL 399 2024-01-31 T17:18:56-0500
오류 레이블 CRTVERFL에 대한 몇 가지 일반적인 원인은 다음과 같습니다.
- 인증서의 만료 시간입니다.
- Root-ca가 다릅니다.
- 컨트롤러에서 root-ca 업데이트가 발생하는지 여부.
- Cisco와 다른 CA(Certificate Authority)가 사용되고 있으며 디바이스에는 루트 CA를 수동으로 설치해야 합니다.
- 오버레이의 인증 기관 변경.
참고: 제어 연결 오류에 대한 자세한 내용은 Troubleshoot SD-WAN Control Connections를 참조하십시오.
루트 ca 파일은 오버레이의 모든 구성 요소에서 정확히 동일해야 합니다. 사용된 root-ca 파일이 올바르지 않음을 확인하는 방법에는 두 가지가 있습니다
1. 파일 크기를 검토합니다. 이는 root-ca가 업데이트한 경우에 유용합니다.
vBond:/usr/share/viptela$ ls -l
total 5
-rw-r--r-- 1 root root 294 Jul 23 2022 ISR900_pubkey.der
-rw-r--r-- 1 root root 7651 Jul 23 2022 TPMRootChain.pem
-rw-r--r-- 1 root root 16476 Jul 23 2022 ViptelaChain.pem
-rwxr-xr-x 1 root root 32959 Jul 23 2022 ios_core.pem
-rw-r--r-- 1 root root 24445 Dec 28 13:59 root-ca.crt
vEdge:/usr/share/viptela$ ls -l
total 6
drwxr-xr-x 2 root root 4096 Aug 28 2022 backup_certs
-rw-r--r-- 1 root root 1220 Dec 28 13:46 clientkey.crt
-rw------- 1 root root 1704 Dec 28 13:46 clientkey.pem
-rw------- 1 root root 1704 Dec 28 13:46 proxy.key
-rw-r--r-- 1 root root 0 Aug 28 2022 reverse_proxy_mapping
-rw-r--r-- 1 root root 23228 Aug 28 2022 root-ca.crt
2. md5sum root-ca.crt vshell 명령을 사용하여 소스 파일과 파일이 정확히 동일한지 검증하는 가장 신뢰할 수 있는 두 번째 방법입니다. md5가 제공되면 Controller 및 Edge 장치 구성 요소의 결과를 비교합니다.
vBond:/usr/share/viptela$ md5sum root-ca.crt
a4f945b9a1f50f1fa68d539dcf2e54f2 root-ca.crt
vEdge:/usr/share/viptela$ md5sum root-ca.crt
b36358d01b36254a54db2f8db2266ced root-ca.crt
참고: md5sum root-ca.crt vshell 명령을 사용하여 파일의 무결성을 확인할 수 있으므로 사실상 파일을 변경하면 MD5 해시가 달라집니다.
솔루션
디바이스의 루트 인증서 체인은 여러 툴을 사용하여 설치할 수 있습니다. Linux 명령을 사용하여 설치하는 방법에는 두 가지가 있습니다.
vShell에서 Linux CAT 명령을 사용하여 root-ca 생성
참고: 이 절차는 Linux vi editor 프로시저에서 빈 줄이 있는 경우 컨텐트 내에 빈 줄이 없는 루트 ca 파일에 적용됩니다.
1단계. 유효성 검사기에서 root-ca.crt 파일을 가져와서 복사합니다.
root-ca는 모든 컨트롤러에서 동일하며 path/usr/share/viptela/의 모든 컨트롤러에서 복사할 수 있습니다.
vBond# vshell
vBondvBond:~$ cat /usr/share/viptela/root-ca.crt
-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----
2단계. vedge에서 root-ca.crt 파일을 생성합니다.
vshell에서 /home/admin 또는 /home/<username>으로 이동하여 root-ca.crt 파일을 생성합니다.
vEdge# vshell
vEdge:~$ cat <<"" >> root-ca.crt
> -----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----
>
vEdge:~$
3단계. 완료되었는지 확인합니다.
vEdge:~$ cat root-ca.crt
-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----
vEdge:~$
참고: 파일이 완전한지 검증하고, 완전하지 않은 경우 rm root-ca.crt vshell 명령으로 파일을 삭제하고 2단계에서 다시 만드는 것이 중요합니다.
vshell을 종료하고 섹션을 계속합니다.
vEdge:~$ exit
vShell에서 VI 텍스트 편집기로 root-ca 생성
1단계. 유효성 검사기에서 root-ca.crt 파일을 가져와서 복사합니다.
root-ca는 모든 컨트롤러에서 동일하며 path/usr/share/viptela/의 모든 컨트롤러에서 복사할 수 있습니다.
vBond# vshell
vBond:~$ cat /usr/share/viptela/root-ca.crt
-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----
2단계. vedge에 root-ca.crt 파일을 생성합니다.
vshell에서 /home/admin 또는 /home/<username>으로 이동하여 root-ca.crt 파일을 생성합니다.
vEdge# vshell
vEdge:~$ cd /usr/share/viptela/
vEdge:~$ pwd
/home/admin
vEdge:~$ vi root-ca.crt
enter를 클릭하면 편집기 프롬프트가 나타납니다.
3단계. 삽입 모드로 들어갑니다.
- 유형: i를 입력하고 1단계의 인증서 내용을 붙여넣습니다. 아래로 스크롤하여 인증서 검증이 완료되었습니다.
4단계. 삽입 모드를 이스케이프하고 인증서를 저장합니다.
- Esc 키를 누릅니다.
- :wq!를 입력하고 enter 키를 눌러 변경 사항을 저장하고 편집기를 종료합니다.
vEdge:/usr/share/viptela$ cat root-ca.crt
-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----
5단계. 완료되었는지 확인합니다.
vEdge:~$ cat root-ca.crt
-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----
vEdge:~$
참고: 파일이 완전한지 검증하고, 완전하지 않은 경우 rm root-ca.crt vshell 명령으로 파일을 삭제하고 2단계에서 다시 만드는 것이 중요합니다.
vshell을 종료하고 섹션을 계속합니다.
vEdge:~$ exit
인증서 설치
1단계. root-cert-chain install <path> 명령을 사용하여 root-ca 인증서를 설치합니다.
vEdge# request root-cert-chain install /home/admin/root-ca.crt
Uploading root-ca-cert-chain via VPN 0
Copying ... /home/admin/PKI.pem via VPN 0
Updating the root certificate chain..
Successfully installed the root certificate chain
2단계. show control local properties 명령을 사용하여 설치되어 있는지 확인합니다.
vEdge# show control local-properties
personality vedge
organization-name organization-name
root-ca-chain-status Installed
certificate-status Installed
certificate-validity Valid
certificate-not-valid-before Apr 11 17:57:17 2023 GMT
certificate-not-valid-after Apr 10 17:57:17 2024 GMT