Private Cloud 버전 4.17.09 이하의 키 저장소와 트러스트 저장소 만들기

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

이 문서에서는 Edge용 키 저장소 및 트러스트 저장소를 생성, 수정, 삭제하는 방법을 설명합니다. 프라이빗 클라우드 버전 4.17.09 이하에 적용됩니다.

키 저장소 및 트러스트 저장소 정보

TLS에 사용되는 보안 인증서 저장소를 정의하는 키 저장소 및 트러스트 저장소 제공합니다 둘의 주요 차이점은 TLS 핸드셰이크에서 사용되는 위치입니다. 프로세스:

  • 키 저장소에는 다음을 식별하는 데 사용되는 TLS 인증서와 비공개 키가 포함되어 있습니다. TLS 핸드셰이크 중에 엔터티를 전송합니다.

    단방향 TLS에서 클라이언트가 서버의 TLS 엔드포인트에 연결되면 서버의 키 저장소가 는 클라이언트에 서버의 인증서 (공개 인증서)를 제공합니다. 그런 다음 클라이언트가 인증서를 생성할 수 있습니다.

    양방향 TLS에서는 클라이언트와 서버 모두 자체 인증서로 키 저장소를 유지관리하고 상호 인증에 사용되는 비공개 키입니다.
  • truststore에는 다음과 같이 수신된 인증서를 확인하는 데 사용되는 인증서가 포함되어 있습니다. TLS 핸드셰이크의 일부입니다.

    단방향 TLS에서는 인증서가 유효한 CA에서 서명되면 트러스트 저장소가 필요하지 않습니다. 만약 TLS 클라이언트에서 수신한 인증서가 유효한 CA에 의해 서명된 경우 클라이언트가 요청 CA에 연결하여 인증서를 인증합니다. TLS 클라이언트는 일반적으로 트러스트 저장소를 사용하여 TLS 서버로부터 수신한 자체 서명된 인증서 또는 TLS 서버에서 서명하지 않은 인증서 신뢰할 수 있는 CA에 연결할 수 있습니다. 이 시나리오에서 클라이언트는 자체 인증서로 트러스트 저장소를 채웁니다. 신뢰합니다 그런 다음 클라이언트가 서버 인증서를 받으면 수신 인증서가 신뢰할 수 있는 저장소에 있는 인증서와 비교하여 검증되어야 합니다.

    예를 들어 TLS 클라이언트는 자체 서명 서버를 사용하는 TLS 서버에 연결됩니다. 있습니다. 자체 서명된 인증서이므로 클라이언트가 CA로 유효성을 검사할 수 없습니다. 대신 클라이언트는 서버의 자체 서명 인증서를 트러스트 저장소에 미리 로드합니다. 그런 다음 클라이언트가 서버 연결을 시도할 때, 클라이언트는 자체 truststore를 사용하여 확인할 수 있습니다

    양방향 TLS의 경우 TLS 클라이언트와 TLS 서버 모두 truststore를 사용할 수 있습니다. 트러스트 저장소 에지가 TLS 서버 역할을 할 때 양방향 TLS를 수행할 때 필요합니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

인증서는 인증 기관 (CA)에서 발급하거나 인증 기관이 자체 서명할 수 있습니다. 비공개 키를 생성합니다. CA에 액세스할 수 있는 경우 키를 생성하고 인증서를 발급하기 위한 CA입니다. CA에 액세스할 수 없는 경우 공개적으로 사용 가능한 많은 무료 도구 중 하나를 사용하여 자체 서명 인증서를 생성합니다(예: openssl.

Edge의 keystore 및 truststore

Edge의 키 저장소에는 하나 이상의 JAR 파일이 포함되어 있으며 JAR 파일에는 다음 항목이 포함됩니다.

  • PEM 파일 형식의 TLS 인증서 - 인증 기관에서 서명한 인증서 (CA), 마지막 인증서가 CA에 의해 서명되는 인증서 체인 또는 자체 서명된 인증서
  • 비공개 키를 PEM 파일로 사용 Edge는 최대 2048비트의 키 크기를 지원합니다. 암호는 선택사항.

트러스트 저장소는 PEM 파일로 인증서만 포함된다는 점을 제외하면 키 저장소와 비슷합니다. 개인 키.

인증서가 체인의 일부인 경우 keystore/truststore에 단일 PEM 파일 또는 단일 파일로 사용할 수 있습니다. 단일 파일을 사용하는 경우 인증서는 파일의 첫 번째 인증서가 TLS에 사용된 인증서인 순서로 정렬되어야 합니다. 인증서 체인으로 CA 인증서에 전달됩니다. 사이에 빈 줄을 삽입해야 합니다. 각 인증서가 생성됩니다

Edge는 키 저장소와 트러스트 저장소를 만드는 데 사용하는 API를 제공합니다. 실제 API는 있습니다. 차이점은 키 저장소를 생성할 때 키 저장소가 포함된 JAR 파일을 인증서와 개인 키가 있어야 합니다. 트러스트 저장소를 만들 때 인증서만 PEM 파일로 전달합니다.

다음 형식 정보: 인증서 및 키 파일

이 문서의 예에서는 PEM 파일로 정의된 TLS 인증서 및 키를 보여줍니다. 데이터 세트는 X.509 형식으로 표시됩니다. 인증서 또는 비공개 키가 PEM 파일로 정의되지 않은 경우 openssl과 같은 유틸리티를 사용하여 PEM 파일로 변환할 수 있습니다.

하지만 많은 .crt 파일 및 .key 파일이 이미 PEM 형식으로 되어 있습니다. 이러한 파일이 텍스트인 경우 파일로 저장되며 다음 안에 포함되어 있습니다.

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

또는:

-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----

그러면 파일이 PEM 형식과 호환되며 키 저장소 또는 truststore를 복사합니다.

인증서 체인이 있고 키 저장소 또는 트러스트 저장소에서 이 체인을 사용하려면 모든 인증서를 각 인증서 사이에 새 줄을 넣어 하나의 PEM 파일로 결합할 수 있습니다. 이 인증서는 순서가 있어야 하며 마지막 인증서는 루트 인증서 또는 중개 인증서여야 합니다. 루트 인증서로 서명됨:

-----BEGIN CERTIFICATE-----
(Your Primary TLS certificate)
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
(Intermediate certificate)
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
(Root certificate or intermediate certificate signed by a root certificate)
-----END CERTIFICATE-----

기존 키 저장소의 세부정보 가져오기

키 저장소 나열 및 Truststores API를 사용합니다.

curl -X GET \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-u email:password

클라우드 고객의 경우 두 국가 모두 무료 체험판 조직에 기본 키 저장소가 제공됩니다. 테스트 및 프로덕션 환경에 적합합니다 두 경우 모두에 대해 이 호출에 대해 다음과 같은 결과가 표시됩니다. 환경:

[ "freetrial" ]

이 기본 키 저장소를 사용하여 API를 테스트하고 API를 프로덕션으로 푸시할 수 있지만, 는 일반적으로 프로덕션에 배포하기 전에 자체 인증서와 키로 자체 키 저장소를 생성합니다.

프라이빗 클라우드 고객의 경우 첫 번째 클러스터를 만들 때까지 반환된 배열은 비어 있습니다. keystore.

키 저장소 또는 Truststore API를 가져옵니다. 클라우드 고객의 경우, 단일 서버 TLS가 인증서: Apigee Edge가 무료 체험판 계정에 제공하는 기본 인증서입니다.

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \
-u email:password

응답은 다음과 같이 표시됩니다.

{
 "certs" : [ "wildcard.apigee.net.crt" ],
 "keys" : [ "freetrial" ],
 "name" : "freetrial"
}

Edge 관리 UI에서도 이 정보를 볼 수 있습니다.

  1. https://enterprise.apigee.com (클라우드) 또는 http://<ms-ip>:9000 (온프레미스)에서 Edge 관리 UI에 로그인하세요. 여기서 <ms-ip>는 IP입니다. 관리 서버 노드의 주소
  2. Edge 관리 UI 메뉴에서 관리자 > TLS 인증서.

TLS 인증서 세부정보 가져오기

키 저장소 또는 Truststore에서 인증서 세부정보를 가져와서 TLS 인증서에 대한 세부정보를 확인합니다. 키 저장소(예: 만료일, 발급기관) 먼저, 인증서의 이름을 선택할 수 있습니다 이 예시에서는 키 저장소의 정보를 가져옵니다. 'freetrial'

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial \
-u email:password

샘플 응답:

{
 "certs" : [ "wildcard.apigee.net.crt" ],
 "keys" : [ "freetrial" ],
 "name" : "freetrial"
}

그런 다음 certs 속성의 값을 사용하여 인증서 세부정보를 가져옵니다.

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/freetrial/certs/wildcard.apigee.net.crt \
-u email:password

샘플 응답:

{
 "certInfo" : [ {
   "expiryDate" : "Wed, 23 Apr 2014 20:50:02 UTC",
   "isValid" : "Yes",
   "issuer" : "CN=Go Daddy Secure Certificate Authority - G2, OU=http://certs.godaddy.com/repository/, O=&quot;GoDaddy.com, Inc.&quot;, L=Scottsdale, ST=Arizona, C=US",
   "subject" : CN=*.example.apigee.net, OU=Domain Control Validated",
   "subjectAlternativeNames" : ["*.example.apigee.net","*.example.apigee.net" ],
   "validFrom" : "Tue, 15 Apr 2014 09:17:03 UTC",
   "version" : 3
 } ],
 "name" : "example.apigee.net.crt"
}

Edge 관리 UI에서도 이 정보를 볼 수 있습니다.

  1. https://enterprise.apigee.com (클라우드)에서 에지 관리 UI에 로그인합니다. 또는 http://<ms-ip>:9000 (온프레미스) 여기서 <ms-ip>는 IP입니다. 관리 서버 노드의 주소
  2. Edge 관리 UI 메뉴에서 관리자 > TLS 인증서.

Edge UI에서 Edge에 인증서가 얼마나 미리 표시되는지 지정할 수 있습니다. 만료됩니다. 기본적으로 UI는 다음 10개 이내에 만료되도록 예약된 인증서를 강조 표시합니다. 일

키 저장소 만들기

키 저장소는 조직의 환경에 따라 다릅니다(예: 테스트 또는 프로덕션). 환경입니다 따라서 코드를 배포하기 전에 테스트 환경에서 키 저장소를 테스트하려는 경우 프로덕션 환경에 연결하려면 두 환경 모두에서 만들어야 합니다.

키 저장소 생성은 두 단계로 이루어집니다.

  1. 인증서와 비공개 키가 포함된 JAR 파일을 만듭니다.
  2. 키 저장소를 생성하고 JAR 파일을 업로드합니다.

JAR 파일 만들기 인증서와 비공개 키가 포함된

비공개 키, 인증서, 매니페스트로 JAR 파일을 만듭니다. JAR 파일은 다음 파일과 디렉터리를 포함합니다.

/META-INF/descriptor.properties
myCert.pem
myKey.pem
<ph type="x-smartling-placeholder">를 통해 개인정보처리방침을 정의할 수 있습니다.

키 쌍과 인증서가 포함된 디렉터리에서 /META-INF 그런 다음 제목: descriptor.properties /META-INF 및 콘텐츠:

certFile={myCertificate}.pem
keyFile={myKey}.pem

키 쌍과 인증서가 포함된 JAR 파일을 생성합니다.

jar -cf myKeystore.jar myCert.pem myKey.pem

JAR 파일에 descriptor.properties를 추가합니다.

jar -uf myKeystore.jar META-INF/descriptor.properties

키 저장소를 만들고 JAR 파일

환경에서 키 저장소를 생성하려면, 키 저장소 이름을 만들기 Keystore 또는 Truststore API로도 사용할 수 있습니다. 이름에는 영숫자 문자만 포함할 수 있습니다.

curl -X POST -H "Content-Type: text/xml" \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-d '<KeyStore name="myKeystore"/>' -u email:password

샘플 응답:

{
 "certs" : [ ],
 "keys" : [ ],
 "name" : "myKeystore"
}

환경에 이름이 지정된 키 저장소를 생성한 후, 인증서와 개인 키를 포함하려면 Keystore API에 JAR 파일 업로드:

curl -X POST -H "Content-Type: multipart/form-data" \
-F file="@myKeystore.jar" -F password={key_pass} \ "https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/{myKeystore}/keys?alias={key_alias}" \
-u email:password

여기서 -F 옵션은 JAR 파일의 경로입니다.

이 호출에서는 두 개의 쿼리 매개변수를 지정합니다.

  • alias - 확인할 수 있습니다 가상 호스트를 만들 때는 별칭 이름으로 지정합니다
  • password - 다음에 대한 비밀번호 비공개 키를 생성합니다. 비공개 키에 비밀번호가 없는 경우 이 매개변수를 생략합니다.

키 저장소가 제대로 업로드되었는지 확인합니다.

curl https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystore \
-u email:password

샘플 응답:

{  
 "certs" : [ "myCertificate" ],
 "keys" : [ "myKey" ],
 "name" : "myKeystore"
}

트러스트 저장소 만들기

트러스트 저장소를 만드는 데 사용하는 API는 키 저장소를 만드는 데 사용하는 API와 동일합니다. 이 유일한 차이점은 인증서 파일을 JAR 파일 대신 PEM 파일로 전달한다는 것입니다.

인증서가 체인의 일부인 경우 체인의 모든 인증서를 별도로 업로드해야 합니다. 모든 인증서가 포함된 단일 파일을 만들고 각 인증서가 생성됩니다 최종 인증서는 일반적으로 인증서 발급기관에서 서명합니다. 대상 예를 들어 truststore에서 클라이언트 인증서, client_cert_1, 클라이언트 인증서를 업로드합니다. 발급자 인증서, ca_cert

양방향 TLS 인증 시 서버에서 클라이언트에 client_cert_1 권한 TLS 핸드셰이크 프로세스의 일부입니다.

또는 동일한 인증서로 서명된 두 번째 인증서인 client_cert_2이 있습니다. ca_cert입니다. 하지만 client_cert_2 파일을 트러스트 저장소 트러스트 저장소에는 여전히 client_cert_1ca_cert가 포함되어 있습니다.

서버가 TLS 핸드셰이크의 일부로 client_cert_2를 전달하면 요청이 성공합니다 이는 에지에서 client_cert_2이 truststore에 있는 인증서로 서명되었습니다. CA를 삭제하는 경우 인증서(ca_cert)를 제공합니다. TLS 확인에 실패합니다.

Create a Keystore 또는 Truststore로 키 저장소를 만들 때 사용하는 것과 동일한 API입니다.

curl -X POST -H "Content-Type: text/xml" -d \
'<KeyStore name="myTruststore"/>' \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores \
-u email:password

Truststore에 인증서 업로드 API

curl -X POST -H "Content-Type: multipart/form-data" -F file="@trust.pem" \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myTruststore/certs?alias=myTruststore \
-u email:password

여기서 -F 옵션은 PEM 파일의 경로를 지정합니다.

키 저장소 또는 트러스트 저장소 삭제

키 저장소 또는 Truststore 삭제 API:

curl -X DELETE \
https://api.enterprise.apigee.com/v1/o/{org_name}/environments/{env_name}/keystores/myKeystoreName \
-u email:password

샘플 응답:

{
 "certs" : [ ],
 "keys" : [ ],
 "name" : "myKeystoreName"
}

가상 호스트 또는 대상에서 사용 중인 키 저장소 또는 트러스트 저장소를 삭제하는 경우 엔드포인트/대상/서버, 가상 호스트 또는 대상 엔드포인트/대상 서버를 통한 모든 API 호출 실패합니다.