노드 간 (또는 노드 간) 암호화는 TLS를 사용하여 클러스터의 노드 간에 이동하는 데이터를 보호합니다. 이 페이지에서는 Private Cloud용 Edge에서 TLS를 사용하여 Cassandra 노드 간 암호화를 사용 설정하는 방법을 설명합니다. 이 단계를 수행하려면 Cassandra 링의 세부정보에 익숙해야 합니다.
Cassandra 노드 간 암호화 사용 설정
Cassandra 노드 간 암호화를 사용 설정하려면 다음 단계를 따르세요.
부록의 단계에 따라 서버 인증서를 생성하여 자체 서명 키와 인증서를 만듭니다.
다음 단계에서는 부록의 설명대로
keystore.node0
,truststore.node0
, 키 저장소 및 트러스트 저장소 비밀번호를 만들었다고 가정합니다. 다음 단계를 진행하기 전에 각 노드에서 예비 단계로 키 저장소와 트러스트 저장소를 생성해야 합니다.- 다음 속성을
/opt/apigee/customer/application/cassandra.properties
파일에 추가합니다. 파일이 없으면 새로 만듭니다.conf_cassandra_internode_encryption=all conf_cassandra_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0 conf_cassandra_keystore_password=keypass conf_cassandra_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0 conf_cassandra_truststore_password=trustpass # Optionally set the following to enable 2-way TLS or mutual TLS # conf_cassandra_require_client_auth=true
cassandra.properties
파일이 Apigee 사용자의 소유인지 확인합니다.chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
각 Cassandra 노드에서 한 번에 하나씩 다음 단계를 실행하여 사용자에게 다운타임을 일으키지 않고 변경사항이 적용되도록 합니다.
- Cassandra 서비스를 중지합니다.
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Cassandra 서비스를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- TLS 암호화 서비스가 시작되었는지 확인하려면 시스템 로그에서 다음 메시지를 확인하세요.
Starting Encrypted Messaging Service on TLS port
인증서 순환 수행
인증서를 순환하려면 다음 단계를 따르세요.
- 생성된 고유한 키 쌍마다 인증서를 기존 Cassandra 노드의 트러스트 저장소에 추가합니다 (부록 참조). 그러면 이전 인증서와 새 인증서가 동일한 트러스트 저장소에 존재합니다.
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
여기서
NEW_ALIAS
은 항목을 식별하는 고유한 문자열이고,CERT
는 추가할 인증서 파일의 이름이고,EXISTING_TRUSTSTORE
은 Cassandra 노드에 있는 기존 트러스트 저장소의 이름입니다. - scp와 같은 복사 유틸리티를 사용하여 각 노드에서 사용 중인 기존 truststore를 대체하는 클러스터의 모든 Cassandra 노드에 truststore를 배포합니다.
- 클러스터를 순차적으로 다시 시작하여 새 트러스트 저장소를 로드하고 새 키가 배치되기 전에 트러스트를 설정합니다.
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- 클러스터의 각 Cassandra 노드에서 아래 표시된 속성을 cassandra.properties 파일의 새 키 저장소 값으로 업데이트합니다.
conf_cassandra_keystore=NEW_KEYSTORE_PATH conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
where
NEW_KEYSTORE_PATH
is the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORD
is the keystore password set when the certificates were created, as explained in the Appendix. - Stop the Cassandra service:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- Cassandra 서비스를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- 모든 노드 간에 통신이 성공적으로 설정되면 다음 Cassandra 노드로 이동합니다. 참고: 모든 노드 간에 통신이 성공적으로 설정된 경우에만 다음 노드로 넘어갑니다.
부록
다음 예시에서는 노드 간 암호화 단계를 실행하는 데 필요한 서버 인증서를 준비하는 방법을 설명합니다. 예시에 표시된 명령어는 다음 매개변수를 사용합니다.
매개변수 | 설명 |
---|---|
node0 |
노드를 식별하는 고유 문자열입니다. |
keystore.node0 |
키 저장소 이름. 명령어는 이 파일이 현재 디렉터리에 있다고 가정합니다. |
keypass |
keypass는 키 저장소와 키 모두에서 동일해야 합니다. |
dname |
node0 의 IP 주소를 10.128.0.39 로 식별합니다. |
-validity |
이 플래그에 설정된 값은 생성된 키 쌍을 10년 동안 유효하게 만듭니다. |
- 다음 디렉터리로 이동합니다.
cd /opt/apigee/data/apigee-cassandra
- 다음 명령어를 실행하여 현재 디렉터리에
keystore.node0
라는 파일을 생성합니다.keytool -genkey -keyalg RSA -alias node0 -validity 3650 \ -keystore keystore.node0 -storepass keypass \ -keypass keypass -dname "CN=10.128.0.39, OU=None, \ O=None, L=None, C=None"
중요: 키 비밀번호는 키 저장소 비밀번호와 동일해야 합니다.
- 인증서를 별도의 파일로 내보냅니다.
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- Apigee 사용자만 파일을 읽을 수 있는지 확인합니다.
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- 생성된 인증서
node0.cer
를 노드의 트러스트 저장소로 가져옵니다.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
위의 명령어를 실행하면 비밀번호를 설정하라는 메시지가 표시됩니다. 이 비밀번호는 truststore 비밀번호이며 이전에 설정한 키 저장소 비밀번호와 다를 수 있습니다. 인증서를 신뢰하라는 메시지가 표시되면
yes
를 입력합니다. - openssl을 사용하여 키가 없는 인증서의 PEM 파일을 생성합니다.
cqlsh
는 생성된 형식의 인증서에서 작동하지 않습니다.$ keytool -importkeystore -srckeystore keystore.node0 \ -destkeystore node0.p12 -deststoretype PKCS12 -srcstorepass \ keypass -deststorepass keypass $ openssl pkcs12 -in node0.p12 -nokeys -out node0.cer.pem \ -passin pass:keypass $ openssl pkcs12 -in node0.p12 -nodes -nocerts -out node0.key.pem -passin pass:keypass
- 노드 간 암호화의 경우
node0.cer
파일을 각 노드에 복사하고 각 노드의 트러스트 저장소로 가져옵니다.keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
keytool -list
를 사용하여 키 저장소 및 truststore 파일의 인증서를 확인합니다.$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0