vCenter (vCSA) 인증서 만료시 갱신방법

** 인증서 만료후 갱신시 일부 서비스가 정상적으로 재시작되지 않을 수 있음.
만료전 미리 확인 필요. vCenter Server에 로그인이 가능하다면
(홈 – 관리 – 인증서 – 인증서 관리 – 시스템 SSL – 갱신) 메뉴에서 갱신 가능.
가능한 만료되기전에 미리 미리 갱신을 하시길. 

참조 : https://docs.vmware.com/kr/VMware-vSphere/8.0/vsphere-authentication/GUID-B37C5887-04AD-4AC7-91C3-178935852719.html

**vCenter이 갑자기 로그인이 되지 않는다. 로그인 이후 “HTTP Status 500 – Internal Server Error” 메시지 발생
정상적으로 서비스들이 시작되지 않는다.
다양한 경우가 있겠지만 별다른 징후가 없고 vCenter을 설치후 약 2년 이상 경과된 이후라면 설치시
자체 발행된 SSL 인증서가 만료된 경우가 많다.

** SSL인증서는 https연결 암호화 사용되는 인증서로 설치시 self-signed 된 인증서(유효기간 2년)가 생성된다.
자체 인증서가 있다면 자체 인증서로 대체하게 되고, 없다면 self-singed 인증서의 유효기간을 확인하여
주기적으로 재발급이 필요하다.
만료후 발급 절차는 좀 까다롭고 vCSA 재설치까지 가는 경우도 있으니 가능하면 미리미리 발급을 권장한다.

1. vCSA 백업 (선택)
1.1 vCSA VM의 스냅샷 생성. -> 혹시 모를 불의의 사고에 대비
1.2 https://[vCenter_IP]:5480 접속 → 백업 → 지금 백업 → 백업 위치 및 로그인 계정 입력, 백업 암호화 작성
→ Events,Log 등 함께 backup 여부 선택 → 시작

2. vCenter SSH Shell에서 전체 인증서 기간 확인 명령어
2.1 WEB GUI의 통합 SSO 로그인은 되지 않더라도 ESXi를 통해 vCenter로 또는 SSH를 통해 vCenter으로
접속은 가능. 접속하여 아래 명령어로 MACHINE_CERT 인증서 기간을 확인.

root@localhost [ ~ ]# for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not After";done;
[*] Store : MACHINE_SSL_CERT
Alias : __MACHINE_CERT
            Not After : Apr 22 12:45:45 2026 GMT
[*] Store : TRUSTED_ROOTS
Alias : 187cae902f08cd8010acab1c4ad429c300608556
            Not After : Apr 17 00:45:44 2034 GMT
[*] Store : machine
Alias : machine
            Not After : Apr 17 00:45:44 2034 GMT
[*] Store : vsphere-webclient
Alias : vsphere-webclient
            Not After : Apr 17 00:45:44 2034 GMT
[*] Store : vpxd
Alias : vpxd
            Not After : Apr 17 00:45:44 2034 GMT
[*] Store : vpxd-extension
Alias : vpxd-extension
            Not After : Apr 17 00:45:44 2034 GMT
[*] Store : hvc
Alias : hvc
            Not After : Apr 17 00:45:44 2034 GMT
[*] Store : data-encipherment
Alias : data-encipherment
            Not After : Apr 17 00:45:44 2034 GMT
[*] Store : APPLMGMT_PASSWORD
[*] Store : SMS
Alias : sms_self_signed
            Not After : Apr 22 00:51:49 2034 GMT
[*] Store : wcp
Alias : wcp
            Not After : Apr 17 00:45:44 2034 GMT

2.2 MACHINE_SSL 정보 확인 (WEB UI 로그인 관련하여 MACHINE_SSL 사용, 기본 2년)

root@localhost [ ~ ]# /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store MACHINE_SSL_CERT --text
Number of entries in store :    1
Alias : __MACHINE_CERT
Entry type :    Private Key
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            d3:c3:d1:e8:19:xx:xx:xx
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=CA, DC=vsphere, DC=local, C=US, ST=California, O=localhost, OU=VMware Engineering
        Validity
            Not Before: Apr 22 00:45:45 2024 GMT
            Not After : Apr 22 12:45:45 2026 GMT
        Subject: CN=192.168.123.123, C=US
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b6:a0:23:89:bd:d7:ac:13:ab:4b:a6:fd:7e:9b:
                    ce:41:7f:c6:6f:6a:4a:d1:67:15:9a:e5:b0:49:8b:
                    e3:2c:75:86:3a:1f:61:ba:e3:d4:35:15:3d:60:72:
.......(생략)

2.3 VMCA 인증서 설정값 확인

oot@localhost [ ~ ]# cat /usr/lib/vmware-vmca/share/config/certool.cfg
		#
		# Template file for a CSR request
		#
		
		# Country is needed and has to be 2 characters
		Country = US
		Name    = CA
		Organization = VMware
		OrgUnit = VMware Engineering
		State = California
		Locality = Palo Alto
		IPAddress = 127.0.0.1
		Email = email@acme.com      -> 필요
		Hostname = server.acme.com  -> 필요
		
		root@localhost [ ~ ]# hostname -f
		localhost                   -> 필요
		root@localhost [ ~ ]# /usr/lib/vmware-vmafd//bin/vmafd-cli get-pnid --server-name localhost
		192.168.123.123             -> 필요
root@localhost [ ~ ]#

3. 인증서 관리자를 통해 갱신(사용기한 expire된 경우)
# /usr/lib/vmware-vmca/bin/certificate-manager

“3” MACHINE SSL 갱신 재발행. STS 인증서가 유효한 경우.
“8” 모든 인증서 초기화
-> 실제 MACHINE SSL 이 만료된 경우 8번 으로 전체 초기화 이후 정상 작동 안됨.

  이후 3번으로 MACHINE_SSL 만 재발행 이후 접속 정상. 갱신시 입력값 이슈인지

  “3”번만 필요한지, “8”->”3″ 과정이 필요한지 확인 필요.

4. MACHINE_SSL 만 재발행
“Replace Machine SSL certificate with VMCA Certificate” 선택. 이후 정보 입력 예

	Option[1 to 8]: 3
	
	Please provide valid SSO and VC privileged user credential to perform certificate operations.
	Enter username [Administrator@vsphere.local]:administrator@vsphere.local
	Enter password:
	certool.cfg file exists, Do you wish to reconfigure : Option[Y/N] ? : y
	Press Enter key to skip optional parameters or use Previous value.
	Enter proper value for 'Country' [Previous value : US] : 
	Enter proper value for 'Name' [Previous value : CA] : 
	Enter proper value for 'Organization' [Previous value : VMware] : 
	Enter proper value for 'OrgUnit' [Previous value : VMware Engineering] : 
	Enter proper value for 'State' [Previous value : California] : 
	Enter proper value for 'Locality' [Previous value : Palo Alto] : 
	Please enter IP addresses separated by comma in valid IPV4 or IPV6 format
	Enter proper value for 'IPAddress' (Provide comma separated values for multiple IP addresses) : 192.168.100.200  -> 이전 정보 참조
	Enter proper value for 'Email' [Previous value : email@acme.com] : email@acme.com  -> 이전 정보 참조
	Enter proper value for 'Hostname' (Provide comma separated values for multiple Hostname entries) [Enter valid Fully Qualified Domain Name(FQDN), For Example : example.domain.com] : server.acme.com
	Enter proper value for VMCA 'Name' :localhost  -> 이전 정보 참조
	You are going to regenerate Machine SSL cert using VMCA
	Continue operation : Option[Y/N] ? : y
	Status : 0% Completed [Replacing Machine SSL Cert...]   
	.....
	Status : 70% Completed [stopping services...]                  
	Status : 85% Completed [starting services...]                  
	Status : 100% Completed [All tasks completed successfully]

5. 전체 서비스 재시작 및 정상 로그인 확인.