다음을 통해 공유


Microsoft Cloud PKI 인증 기관 삭제

Microsoft Intune의 Microsoft Cloud PKI 서비스에서 발급 및 루트 CA(인증 기관)를 삭제합니다. Microsoft Intune 관리 센터에서 다음 작업을 사용하여 테넌트에서 CA(인증 기관)를 관리할 수 있습니다.

  • CA 일시 중지 - CA를 일시 중지하여 사용을 중지합니다.
  • CA 해지 - 모든 활성 리프 인증서를 해지한 다음 CA를 해지합니다.
  • CA 삭제 - Microsoft Intune에서 CA를 삭제하고 제거합니다.

모든 앵커된 발급 CA가 삭제될 때까지 루트 CA를 삭제할 수 없습니다. CA를 일시 중지한 후 마음이 바뀌면 사용을 다시 시작하도록 일시 중지할 수 있습니다. 그러나 CA를 취소하고 삭제하는 작업은 영구적이며 실행 취소할 수 없습니다.

이 문서에서는 관리 센터에서 사용 가능한 작업을 사용하여 Microsoft Intune에서 발급 CA 및 루트 CA를 삭제하는 방법을 설명합니다.

역할 기반 액세스 요구 사항

이러한 관리자 역할은 Microsoft Intune 관리 센터에서 CA를 삭제할 수 있습니다.

  • Intune 관리자, 기본 제공 Microsoft Entra 역할
  • 사용자 지정 Intune 역할에 다음 Intune 권한이 할당되었습니다.
    • CA 읽기
    • CA 사용 안 함 및 다시 활성화
    • 발급된 리프 인증서 해지

발급 CA 삭제

Microsoft Intune에서 발급 CA를 영구적으로 제거합니다. 루트 CA를 삭제하려는 경우 먼저 다음 단계를 완료하여 해당 CA에 고정된 발급 CA를 삭제합니다.

  1. 테넌트 관리>클라우드 PKI로 이동합니다.

  2. 사용 가능한 CA 목록에서 활성 발급 CA를 선택합니다. CA를 선택하면 사용 가능한 작업이 열립니다.

  3. 일시 중지를 선택합니다.

    클라우드 PKI에 대한 일시 중지 작업을 강조 표시하는 예제 스크린샷

  4. 확인하라는 메시지가 표시되면 다시 일시 중지 를 선택합니다.

    참고

    발급 CA를 일시 중지한 후:

    • 리프 인증서를 발급할 수 없습니다.
    • CRL(인증서 해지 목록) 요청 및 AIA 요청에 계속 응답합니다.
  5. CA 목록으로 돌아가 서 새로 고침을 선택합니다. 그런 다음 상태 열 아래를 확인하여 발급 CA가 일시 중지되어 있는지 확인합니다.

    CA 테이블의 상태 열을 강조 표시하는 예제 스크린샷

  6. 일시 중지된 CA를 선택하여 사용 가능한 모든 옵션을 다시 엽니다. 두 가지 새로운 옵션이 나타납니다.

    • 다시 시작: 이 옵션은 CA를 일시 중지하고 다시 활성화합니다.
    • 해지: 이 옵션은 발급 CA를 해지합니다.
  7. 해지를 선택합니다.

    이 작업이 작동하려면 CA에 속한 모든 활성 리프 인증서를 이미 해지해야 합니다. 자세한 내용 및 단계는 이 문서의 활성 리프 인증서 해지를 참조하세요.

    CA에 대한 해지 작업을 강조 표시하는 예제 스크린샷

  8. 확인하라는 메시지가 표시되면 취소 를 다시 선택합니다.

    중요

    이 작업은 실행 취소할 수 없습니다.

    참고

    발급 CA를 해지한 후:

    • CRL 및 AIA 요청에 계속 응답합니다.
    • 신뢰 체인 작업을 수행하는 신뢰 당사자에게 더 이상 신뢰되지 않습니다.
    • 루트 CA의 CRL은 발급 CA 인증서가 해지되었음을 보여줍니다.
    • CA에서 발급한 모든 기존 리프 인증서는 인증을 중지합니다.
  9. CA 목록으로 돌아가 서 새로 고침을 선택합니다. 그런 다음 상태 열 아래를 확인하여 발급 CA가 해지되어 있는지 확인합니다.

    해지된 상태를 강조 표시하는 CA 목록의 예제 스크린샷

  10. 취소된 CA를 선택하여 사용 가능한 모든 옵션을 다시 엽니다.

  11. 이제 CA를 삭제하는 옵션을 사용할 수 있어야 합니다. 삭제를 선택하여 Microsoft Intune에서 CA를 제거합니다.

    발급 CA에 대한 삭제 작업을 강조 표시하는 예제 스크린샷

  12. 확인하라는 메시지가 표시되면 삭제 를 다시 선택합니다.

    중요

    이 작업은 실행 취소할 수 없습니다.

  13. CA 목록으로 돌아가 서 새로 고침을 선택합니다. 발급 CA가 목록에 더 이상 표시되지 않는지 확인합니다.

루트 CA 삭제

Microsoft Intune에서 루트 CA를 영구적으로 제거합니다.

루트 CA를 삭제하기 전에 고정된 발급 CA를 모두 삭제합니다.

  1. 테넌트 관리>클라우드 PKI로 이동합니다.

  2. 사용 가능한 CA 목록에서 루트 CA를 선택합니다. CA를 선택하면 사용 가능한 작업이 열립니다.

    루트 CA를 강조 표시하는 CA 목록의 예제 스크린샷

  3. 삭제를 선택하여 Microsoft Intune에서 CA를 제거합니다.

    루트 CA에 대한 삭제 작업을 강조 표시하는 관리 센터의 예제 스크린샷

  4. 확인하라는 메시지가 표시되면 삭제 를 다시 선택합니다.

    중요

    이 작업은 실행 취소할 수 없습니다.

  5. CA 목록으로 돌아가 서 새로 고침을 선택합니다. 루트 CA가 목록에 더 이상 표시되지 않는지 확인합니다.

활성 리프 인증서 해지

발급 CA를 해지하려고 할 때 먼저 모든 활성 리프 인증서를 해지하는 것이 중요합니다. 발급 CA에서 한 번에 하나의 리프 인증서를 해지하거나 리프 인증서를 대량 해지할 수 있습니다.

리프 인증서 해지

  1. Microsoft Intune 관리 센터에서 테넌트 관리>클라우드 PKI로 이동합니다.
  2. 발급 CA를 선택합니다.
  3. 모든 인증서 보기를 선택합니다.
  4. 활성 리프 인증서를 선택한 다음 해지를 선택합니다. 남은 모든 리프 인증서에서 이 단계를 반복합니다.

모든 리프 인증서 해지

이 섹션의 샘플 PowerShell 스크립트를 사용하여 CA에 속한 모든 리프 인증서를 해지할 수 있습니다. 이 스크립트는 Microsoft Intune 테넌트에서 Microsoft Cloud PKI에 대한 정보를 검색하고 테넌트에서 발급 CA에 대한 리프 인증서를 해지합니다.

  • 스크립트는 모든 리프 인증서를 검색하고 각 인증서에 대해 해지 작업을 수행합니다.
  • 스크립트는 관리자로서 모든 리프 인증서를 해지할지 확인하라는 메시지를 표시합니다.
  • 스크립트에는 각 인증서에 대한 확인 프롬프트를 보내는 포함할 수 있는 선택적 구성이 있습니다. 스크립트의 섹션은 샘플에서 주석 처리되므로 해당 파트를 실행하려는 경우 다시 추가합니다.

중요

이 스크립트는 주의해서 사용합니다. 리프 인증서에 대한 해지 작업을 취소할 수 없습니다.

  • 실행하기 전에 샘플 스크립트를 검토하여 작동 방식을 더 잘 이해하고 테넌트에 미치는 영향을 고려합니다.
  • 먼저 비프로덕션 또는 테스트 테넌트 계정에서 샘플 스크립트를 실행합니다.

이 스크립트는 Microsoft Graph PowerShell 모듈 인 Microsoft.Graph를 설치합니다. 스크립트를 실행하는 디바이스는 모듈을 성공적으로 설치하려면 관리 권한이 있어야 합니다.

발급 Connect-MgGraph CA에서 리프 인증서를 해지할 수 있는 권한이 있는 관리자가 명령을 실행해야 합니다.

스크립트를 실행하려면 CA ID가 필요합니다. 관리 센터에서 이 정보를 찾으려면 다음을 수행합니다.

  1. 테넌트 관리>클라우드 PKI로 이동합니다.

  2. 발급 CA를 선택합니다.

  3. 브라우저 URL을 확인하여 CA ID를 찾습니다. URL 끝에 있는 하이픈 처리된 영숫자 문자열은 CA ID입니다. 예를 들어 다음 URL에서 CA ID는 f12345-acf1-12ab-1b2a-1a1234567a89입니다.

    https://intune.microsoft.com/#view/Microsoft_Intune_DeviceSettings/CaDetails.ReactView/id/f12345-acf1-12ab-1b2a-1a1234567a89

예제 스크립트

관리 워크스테이션에서 샘플 PowerShell 스크립트를 실행합니다. 실행하려면 다음 Intune 권한이 있어야 합니다.

  • CA 읽기
  • 발급된 리프 인증서 해지
 param (
	[string]$caId = $(Read-Host "Input CaId")
	)

Install-Module Microsoft.Graph

Connect-MgGraph -Scopes "DeviceManagementConfiguration.ReadWrite.All"

Start-Transcript -Path ".\RevokeAllLeafCerts_$($caId)_$(Get-Date -f 'yyyyMMdd-HHmmss').txt"

### Get all leaf certs
$leafCerts = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/beta/devicemanagement/cloudCertificationAuthority/$caId/cloudCertificationAuthorityLeafCertificate"

# Prompt user to confirm data cleanup
$confirmAllDelete = $(Write-Host "Are you 100% sure you want to revoke all $($leafCerts.value.count) certificates for CA $($caId)?" -ForegroundColor Yellow; Write-Host '[Y] Yes' -NoNewline; Write-Host ' [N] No' -ForegroundColor Yellow -NoNewline;
Read-Host " ")

if ($confirmAllDelete.ToLower() -ne "y" -and $confirmAllDelete.ToLower() -ne "yes") {
	Write-Host "Aborted"
	Stop-Transcript
	exit
}

# Iterate on retrieved leaf certs and revoke
foreach ($leafCert in $leafCerts.value)
{
	Write-Host ""
	if ($leafCert.certificateStatus.ToLower() -eq "revoked") {
	 	Write-Host "LeafCert id: $($leafCert.id), thumbprint: $($leafCert.thumbprint) is already revoked. Skipping" 
	 	continue
	}
	
    Write-Host "Revoking leafCert id: $($leafCert.id), thumbprint: $($leafCert.thumbprint)" 
	
	# Uncomment next five lines to prompt for each cert
	# $confirmCertDelete = $(Write-Host "Are you sure you want to revoke leafCert id: $($leafCert.id), thumbprint: $($leafCert.thumbprint), $($leafCert.certificateStatus)?" -ForegroundColor Yellow; Write-Host '[Y] Yes' -NoNewline; Write-Host ' [N] No' -ForegroundColor Yellow -NoNewline; Read-Host " ")
	# if ($confirmCertDelete.ToLower() -ne "y" -and $confirmCertDelete.ToLower() -ne "yes") {
	# 	Write-Host "Skipping"
	# 	continue
	# }
	
	$currentCertId = $($leafCert.id)
	$revokeParams = @{ "leafCertificateId" = $($leafCert.id) }

	Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/beta/devicemanagement/cloudCertificationAuthority/$caId/revokeLeafCertificate" -Body ($revokeParams|ConvertTo-Json) -ContentType "application/json"
}