신뢰할 수없는 CA 신뢰-시스템이 신뢰하는 방법을 제한 할 수 있습니까?


32

(프로그래밍 코드보다 OS 구성과 관련이 있다고 생각하기 때문에 StackOverflow 대신 ServerFault에 게시 됨).

현재 타사 웹 서비스에 연결하는 시스템을 유지 관리하고 있습니다. 이 웹 서비스에는 충분한 클라이언트 인증 인증서가 필요하지만 웹 서비스 자체는 자체 생성 된 루트 인증 기관 인증서 (클라이언트 인증 인증서를 생성하는 동일한 루트)에 의해 생성 된 자체 서명 된 인증서로 보호됩니다.

현재 서비스 인증서를 알려진 신뢰할 수있는 목록에 추가하고 자체 생성 된 기관 인증서를 무시하는 것만으로도 충분합니다. 불행히도 서비스 인증서는 정기적으로 변경되므로 권한 인증서를 신뢰할 수 있어야 애플리케이션이 중단 될 때 응용 프로그램이 중단되지 않아야합니다. 서비스 인증서가 갱신되었습니다.

그러나 나는 웹 서비스를 운영하는 회사에 대한 나의 경험에 근거하여 (개인적으로) CA 인증서를 신뢰하지 않습니다. 웹에 유출 될 경우 놀라지 않을 것입니다. 그리고 걱정스럽게도 CA 인증서에는 키 사용 제한이 없습니다. 원격이지만 외부 MITM 공격이 발생할 가능성이 있지만 코드 서명에 사용되는 인증서 유출에 대해 더 우려하고 있습니다.

내 컴퓨터 (현재 서버 상자이지만 미래의 일반 데스크톱 클라이언트 상자)에게 CA를 신뢰하되 주어진 키 사용 세트와 가능한 주체 이름 (도메인 이름)에 대해서만 CA를 신뢰하도록 할 수 있습니까? )?

서버는 현재 Windows Server 2012 R2이지만 데스크톱 컴퓨터는 모두 Windows 상자이지만 Linux 상자에서 실행될 수 있습니다.


3
최소한 Linux에서는 많은 응용 프로그램에 피어 CA 인증서의 위치를 ​​지정하는 옵션이 있으므로이 CA의 범위를 인증서를 사용하는 응용 프로그램으로 만 제한 할 수 있습니다. @CryptoGuy의 대답은 Linux에서도 작동하지만 창에는 아무것도 없습니다.
Edheldil

1
@Edheldil : 구현에 따라 다릅니다. 예를 들어 Windows는 예를 들어 NSS 또는 GnuTLS보다 훨씬 긴 기간 동안 X.509 이름 제약 조건을 지원했습니다.
grawity

시스템이이 타사 서비스에 연결됩니다. 시스템 의 클라이언트 코드 가 전체 시스템이 아닌 해당 클라이언트 코드에 대해서만 수행되도록 서비스의 CA를 신뢰하도록 구성 할 수 있습니까?
Castaglia

@Castaglia 호스트 시스템과 독립적으로 작동하는 자체 인증서 확인 코드를 작성할 수 있지만 시스템 전체의 인증서 서비스를 사용하도록 제어 할 수없는 다른 클라이언트 소프트웨어가 있습니다.
다이

답변:


40

네 가능합니다. Windows의 경우 교차 인증 또는 자격을 갖춘 종속이라는 기능이 있습니다.

아이디어는 환경에서 타사의 발급 CA 인증서에 서명하는 것입니다. 결과적으로 원격 SSL 인증서는 자신의 루트 CA 인증서에 연결됩니다. 가능한 불량 인증서로부터 자신을 보호하기 위해 Name Constraints허용 가능한 이름 목록을 지정하는 인증서 확장 을 구현 합니다. 타사 CA가 다른 이름에 대한 인증서를 발급하는 경우 (이름 제한 확장명에 명시 적으로 지정되지 않은 경우) CryptoAPI 공급자가 자동으로 거부합니다.

이름 제약 조건 외에도 Application Policies상호 인증서에서 인증서 확장 을 정의하여 향상된 키 사용 제약 조건을 설명 할 수 있습니다 . 따라서 트러스트 공급자는 Application Policies확장에 지정된 사용 만 확인합니다 .

추가 정보 : Windows Server 2003을 사용하여 교차 인증 및 한정된 종속 계획 및 구현

ps,이 기사는 Windows Server 2003에 대해 작성되었지만이 기사는 여전히 최신 Windows Server 버전에 적용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.