2018년 4월 24일 화요일

인증서 기반의 구글 SSO 관련 정보

인증서 기반의 정보는 다음에서 확인하세요

https://support.google.com/a/answer/6342198?hl=ko


SSO용 키 및 인증서 생성

G Suite는 G Suite 또는 교육용 G Suite를 사용하는 고객에게 싱글 사인온(SSO) 서비스를 제공합니다. G Suite 싱글 사인온(SSO) 서비스에서는 RSA 또는 DSA 알고리즘으로 생성된 공개 키와 인증서를 사용할 수 있습니다. 서비스를 사용하려면 공개 및 비공개 키의 조합과 공개 키가 포함된 X.509 인증서를 생성해야 합니다. 공개 키 또는 인증서가 생성되면 이를 Google에 등록해야 합니다. G Suite 관리 콘솔에서 키 또는 인증서를 업로드하여 쉽게 등록할 수 있습니다.
키와 인증서를 생성하는 방법은 개발 플랫폼 및 프로그래밍 언어의 환경설정에 따라 다릅니다. G Suite SSO 서비스에 필요한 키와 인증서는 다음과 같은 다양한 방법으로 생성할 수 있습니다.

OpenSSL 사용

공개 키와 비공개 키 쌍을 만드는 방법은 많지만 오픈소스 OpenSSL 도구는 가장 인기 있는 도구 중 하나입니다. 모든 주요 플랫폼으로 이전되며 키 생성을 위한 간단한 명령줄 인터페이스를 제공합니다.

RSA 비공개 키 만들기

OpenSSL을 사용해서 RSA 비공개 키를 생성하려면 다음 한 단계만 수행하면 됩니다.
openssl genrsa -out rsaprivkey.pem 2048
이 명령어는 PEM으로 인코딩된 비공개 키를 생성하여 rsaprivkey.pem 파일에 저장합니다. 이 예에서는 거의 모든 용도로 사용할 수 있는 2048비트 키를 만듭니다. 결과로 생성되는 비공개 키는 비밀로 유지되어야 하며 데이터 서명 및 해독에 사용됩니다.
일부 구현, 특히 Java 기반의 구현의 경우, DER 또는 PKCS8이 필요할 수 있습니다. 예를 들면 다음 추가 단계를 사용하여 생성할 수 있습니다.
1. openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.der
2. openssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt
1단계에서는 DER 형식으로 공개 키를 생성합니다.
2단계에서는 pkcs8 및 DER 형식으로 비공개 키를 생성합니다. 키(rsapubkey.der 및 rsaprivkey.der)가 생성되면 사용할 수 있습니다.

DSA 비공개 키 만들기

DSA 키를 생성하려면 다음 두 단계를 따르세요.
1. openssl dsaparam -out dsaparam.pem 2048
2. openssl gendsa -out dsaprivkey.pem dsaparam.pem
첫 번째 단계에서는 dsaparam.pem이라는 DSA 매개변수 파일을 만듭니다. 이 경우 DSA 매개변수 파일은 OpenSSL에 2단계에서 2048비트 키를 만들도록 지시합니다. dsaparam.pem 파일 자체는 키가 아니므로 공개 키와 비공개 키를 만든 후에 삭제할 수 있습니다. 두 번째 단계에서는 dsaprivkey.pem 파일에 비공개 키를 실제로 만듭니다. 이 파일은 비밀로 유지되어야 합니다.
키를 DER(바이너리) 형식으로 내보내려면 다음 단계를 따르세요.
1. openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.der
2. openssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt
1단계에서는 공개 키를 DER 형식으로 추출합니다.
2단계에서는 비공개 키를 pkcs8 및 DER 형식으로 변환합니다. 작업을 완료하면 공개(dsapubkey.der) 및 비공개(dsaprivkey.der) 키 쌍을 사용할 수 있습니다.

인증서 만들기

키 쌍이 있으면 X.509 인증서를 쉽게 만들 수 있습니다. 인증서에는 인증서를 만든 조직과 관련된 일부 메타데이터와 함께 해당 공개 키가 포함됩니다. RSA 또는 DSA 비공개 키에서 자체 서명 인증서를 만들려면 다음 단계를 따르세요.
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
여러 질문에 답변하고 나면 인증서가 생성되고 dsacert.pem으로 저장됩니다. 이 파일은 SSO를 구성할 때 제어판을 통해 G Suite에 업로드하는 파일입니다.

.NET용 Microsoft Visual Studio 사용

Microsoft Visual Studio 2005는 G Suite에서 사용할 인증서를 생성하는 데 사용할 수 있는 유틸리티(Common7\Tools\Bin 디렉토리에 있음)를 제공합니다. .NET에서 공개 키와 비공개 키 쌍 및 인증서를 만들려면 다음 단계를 따르세요.
1. makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cer
2. pvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx
위 명령어에서는 기본적으로 RSA 알고리즘이 사용됩니다. 1단계에서는 인증서 생성 도구(makecert.exe)를 사용하여 testcert.cer이라는 자체 서명 X.509 인증서와 해당 비공개 키를 만듭니다.
2단계에서는 pvk2pfx 도구(pvk2pfx.exe)를 사용하여 CER 및 PVK 파일에서 PFX(개인정보 교환) 파일을 만듭니다. PFX에는 공개 키와 비공개 키가 모두 포함됩니다.
1단계에서 만든 testcert.cer 파일은 제어판에서 G Suite에 업로드할 수 있습니다. 2단계의 testcert.pfx를 사용하면 SAML 응답에 서명할 수 있는 X509Certificate2(.NET 2.0 이상) 인스턴스를 만들 수 있습니다.

자바의 Keytool 사용

Java 개발자는 표준 JDK에 있는 keytool 유틸리티를 사용하여 공개/비공개 키 쌍과 X.509 인증서를 만들 수 있습니다. keytool은 사용자가 자신의 공개 키/비공개 키 쌍 및 관련 인증서를 관리하여 디지털 서명이 필요한 인증 체계에서 사용할 수 있게 해주는 키 및 인증서 관리 유틸리티입니다. keytool은 키와 인증서를 'keystore'에 저장합니다. 기본 구현의 경우 사용자의 홈 디렉토리에 있는 파일('.keystore')입니다. 비공개 키는 비밀번호로 보호됩니다.

DSA 키 페어 만들기

1. keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"
2. keytool -export -alias dsassokey -file dsasso.cer
1단계에서는 DSA 알고리즘을 사용하여 크기 2048, 유효 기간 180일의 공개 키/비공개 키 쌍을 생성합니다.
2단계에서는 공개 키에서 X.509 인증서('dsasso.cer')를 생성합니다. 그런 다음 제어판에서 dsasso.cer을 G Suite에 업로드합니다.

RSA 키 쌍 만들기

1. keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180 
2. keytool -export -alias rsassokey -file rsasso.cer
1단계에서는 RSA 알고리즘을 사용하여 크기 2048, 유효 기간 180일의 공개 키/비공개 키 쌍을 생성합니다.
2단계에서는 공개 키에서 X.509 인증서('rsasso.cer')를 생성합니다. 그런 다음 제어판에서 rsasso.cer을 G Suite에 업로드합니다.

Java Cryptography Architecture 사용

JCA(Java Cryptography Architecture)는 보안 속성을 생성 및 조작할 수 있는 핵심 클래스 및 인터페이스를 제공합니다. JCA는 암호화와 관련된 Java 2 SDK Security API의 일부를 포함합니다. 이 API를 사용하면 공개 키와 개인 키 쌍을 원하는 알고리즘으로 쉽게 생성할 수 있습니다. 다음은 G Suite SSO 서비스에서 사용할 DSA 또는 RSA 키를 생성하는 샘플 코드입니다.

공개 키와 개인 키 쌍 만들기

import java.io.*;
import java.security.*;

public class KeyGenDSA {

  public static void main(String[] args) {
        try {
          KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
          SecureRandom random = SecureRandom.getInstanceStrong();
          keyGen.initialize(2048, random);

          KeyPair pair = keyGen.generateKeyPair();
          PrivateKey priv = pair.getPrivate();
          PublicKey pub = pair.getPublic();

          byte[] encPriv = priv.getEncoded();
          FileOutputStream privfos = new FileOutputStream("DSAPrivateKey.key");
          privfos.write(encPriv);
          privfos.close();

          byte[] encPub = pub.getEncoded();
          FileOutputStream pubfos = new FileOutputStream("DSAPublicKey.key");
          pubfos.write(encPub);
          pubfos.close();

   } catch (Exception e) {
         e.printStackTrace();
   }
  }
}
위 코드는 KeyPairGenerator를 사용하여 DSA 키 쌍을 만듭니다. 생성된 키는 바이너리 형식이며 개별 파일로 출력됩니다. 키가 있으면 공개 키를 G Suite에 등록하고 비공개 키를 사용하여 SAML 응답에 서명할 수 있습니다. DSA 대신 RSA 키 쌍을 생성하려면 코드의 'DSA'를 'RSA'로 바꾸기만 하면 됩니다.

G Suite에 인증서 또는 공개 키 등록

키와 인증서를 생성하는 어려운 부분을 완료하고 나면 나머지 단계는 정말 간단합니다. 인증서 또는 공개 키를 G Suite에 등록하려면 G Suite 관리 콘솔로 이동하여 관리자로 로그인해야 합니다. 보안을 선택한 다음 싱글 사인온(SSO) 설정을 선택하고 타사 ID 제공업체에 SSO 설정 아래 페이지의 모든 입력란을 작성하세요.

댓글 없음:

댓글 쓰기