클라이언트 디바이스 인증서 인증 기능을 사용하여 Linux용 Horizon Client에 대한 클라이언트 시스템의 인증서 인증을 설정할 수 있습니다. Unified Access Gateway는 클라이언트 시스템을 인증합니다. SoftHSM2 라이브러리는 클라이언트 시스템에 대한 인증서의 분산 및 배포를 관리합니다. 디바이스 인증에 성공한 후에도 사용자는 계속해서 사용자 인증을 수행해야 합니다.

전제 조건

이 기능의 다음 요구 사항은 다음과 같습니다.

  • Unified Access Gateway 2.6 이상
  • 클라이언트 시스템에 Unified Access Gateway가 허용하는 루트 CA(인증 기관) 인증서가 포함되어 있습니다.

Unified Access Gateway 구성에 대한 자세한 내용은 Unified Access Gateway 설명서를 참조하십시오.

디바이스 인증서 인증을 위해 Linux 클라이언트 시스템 설정

디바이스 인증서 인증을 지정하려면 크게 다음과 같은 작업을 수행해야 합니다.

  • 시스템에 SoftHSM2 라이브러리를 설치합니다.
  • SoftHSM2 라이브러리에 대한 암호화 토큰을 생성합니다.
  • 디바이스 인증서와 공개 및 개인 키를 준비합니다.
  • 인증서 및 키 파일을 SoftHSM2 데이터베이스로 가져옵니다.
  • Horizon Client에서 사용할 SoftHSM2 라이브러리를 구성합니다.

다음 절차는 일반 Linux 클라이언트 시스템에서 설정을 완료하기 위한 지침입니다. 구체적인 단계는 Linux 배포에 따라 다를 수 있습니다.

참고: 디바이스 인증서 인증은 Becrypt Paradox를 실행하는 씬 클라이언트에서도 지원됩니다. 설치 정보는 Becrypt Paradox 설명서를 참조하십시오.
  1. 다음 방법 중 하나를 사용하여 Linux 클라이언트 시스템에 SoftHSM2 라이브러리를 설치합니다.
    1. 방법 1: 패키지 관리 도구를 사용합니다.
      예를 들어 Ubuntu 시스템에서 다음 명령을 실행할 수 있습니다.
      sudo apt-get install softhsm2
    2. 방법 2: SoftHSM2 라이브러리를 수동으로 컴파일하고 설치합니다.
      1. SoftHSM2 소스 코드 저장소를 시스템에 복제합니다.
        git clone https://github.com/opendnssec/SoftHSMv2.git
      2. 복제된 소스 코드에서 SoftHSM2 라이브러리를 컴파일, 구성 및 설치합니다.
        참고: Horizon Client는 자체 OpenSSL 라이브러리를 설치하고 SoftHSM2에 연결된 OpenSSL 라이브러리도 사용합니다. 런타임 중에 충돌을 피하려면 SoftHSM2를 Horizon Client에서 설치된 동일한 OpenSSL 라이브러리에 연결해야 합니다.

        다음 명령 예제에서 <path to OpenSSL library>에는 "include" 및 "lib" 경로가 포함되어야 합니다.

        cd SoftHSMv2/
        sh autogen.sh
        ./configure --with-crypto-backend=openssl --with-openssl=<path to OpenSSL library>
        make
        sudo make install
        
  2. SoftHSM2 라이브러리에 대한 암호화 토큰을 생성합니다.

    기본적으로 SoftHSM2에는 토큰 슬롯이 1개 있습니다. 첫 번째 슬롯에서 토큰을 초기화하면 두 번째 슬롯이 자동으로 추가됩니다. 각 슬롯에서 새 토큰을 초기화하면 후속 슬롯이 추가됩니다.

    1. 명령을 실행하여 토큰을 생성합니다.
      softhsm2-util --init-token --slot 0 --label "<your token label>"
    2. 토큰 생성 명령에서 반환된 슬롯 ID를 기록해 둡니다. 나중에 X.509 디바이스 인증서 및 키 파일을 SoftHSM2 데이터베이스로 가져올 때 이 슬롯 ID가 필요합니다.
  3. X.509 디바이스 인증서와 공개 및 개인 키를 준비합니다.
    1. 개인 키를 포함하는 PFX 형식으로 디바이스 인증서를 가져옵니다.
    2. PFX 파일을 PEM 형식의 키 파일로 변환합니다. 예를 들어 다음 명령은 client.pfxclient-keys.pem으로 변환합니다.
      openssl pkcs12 -in client.pfx -nocerts -nodes -out client-keys.pem
    3. PEM 키 파일을 PKCS8 키 파일로 변환합니다.
      openssl pkcs8 -in client-keys.pem -topk8 -nocrypt -out client-keys.pk8
    4. PFX 파일을 DER 형식의 x.509 인증서로 변환합니다.
      openssl pkcs12 -in client.pfx -nokeys -nodes -out client-cert.pem
      openssl x509 -outform der -in client-cert.pem -out client-cert.der
  4. X.509 인증서 및 키 파일을 SoftHSM2 인증서 데이터베이스로 가져옵니다.
    1. SoftHSM2 데이터베이스에 키 파일을 가져옵니다.

      예를 들어, 다음 명령은 client-key.pk8 파일을 가져옵니다. <your token label><slot ID>를 2단계에서 얻은 값으로 바꿉니다.

      softhsm2-util --import client-key.pk8 --token "<your token label>" --slot <slot ID> --label "client" --id 0001
    2. SoftHSM2 데이터베이스에 x.509 인증서를 가져옵니다.

      예를 들어, 다음 명령은 client-cert.der 파일을 가져옵니다. <softhsm2-pin>을 SoftHSM2 데이터베이스에 액세스하는 데 필요한 PIN으로 바꿉니다.

      pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -p <softhsm2-pin> --write-object client-cert.der --type cert --id 0001
    3. X.509 인증서, 공개 키 및 개인 키가 모두 SoftHSM2 데이터베이스에 저장되어 있는지 확인합니다.
      pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -p <softhsm2-pin> --token-label "<your token label>" --list-objects
  5. Horizon Client에서 사용할 SoftHSM2 라이브러리를 구성합니다.
    sudo mkdir /usr/lib/vmware/view/pkcs11
    sudo ln -s /usr/local/lib/softhsm/libsofthsm2.so /usr/lib/vmware/view/pkcs11/libsofhsm2.so

FIPS 규정 준수 모드 지원

FIPS(연방 정보 처리 표준)를 준수하는 환경에서 디바이스 인증서 인증을 사용하려면 먼저 FIPS 호환 모드 사용에 설명된 단계를 완료합니다. 그런 다음, 이전 섹션인 디바이스 인증서 인증을 위해 Linux 클라이언트 시스템 설정에 설명된 설정 절차 중 다음의 수정된 사항을 수행합니다.

FIPS 규정 준수 모드로 SoftHSM2 라이브러리를 컴파일하려면 다음 명령 순서를 실행합니다.
cd SoftHSMv2/
sh autogen.sh
./configure --with-crypto-backend=openssl --with-openssl=<path to OpenSSL library>  --enable-fips
make
sudo make install
참고: 컴파일 중에 헤더 누락 문제가 발생한 경우 www.openssl.org/source/에서 FIPS 관련 헤더에 대한 소스 코드를 다운로드할 수 있습니다. 헤더를 OpenSSL 라이브러리 경로에 복사하고 명령 순서를 반복하여 FIPS 규정 준수 모드로 SoftHSM2 라이브러리를 컴파일합니다.