노드 간 (또는 노드 간) 암호화는 TLS를 사용하여 클러스터의 노드 간에 이동하는 데이터를 보호합니다. 이 페이지에서는 Private Cloud용 Edge에서 TLS를 사용하여 Cassandra 노드 간 암호화를 사용 설정하는 방법을 설명합니다. 이 단계를 수행하려면 Cassandra 링의 세부정보를 잘 알고 있어야 합니다.
Cassandra 노드 간 암호화 사용 설정
Cassandra 노드 간 암호화를 사용 설정하려면 다음 단계를 따르세요.
부록 의 단계에 따라 자체 서명 키와 인증서를 만들어 서버 인증서를 생성합니다.
다음 단계에서는
keystore.node0및truststore.node0과 키 저장소 및 트러스트 저장소 비밀번호를 부록에 설명된 대로 만들었다고 가정합니다. 키 저장소와 트러스트 저장소는 다음 단계를 진행하기 전에 각 노드에서 사전 단계로 만들어야 합니다./opt/apigee/customer/application/cassandra.properties파일에 다음 속성을 추가합니다. 파일이 없으면 만듭니다.conf_cassandra_server_encryption_internode_encryption=all conf_cassandra_server_encryption_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0 conf_cassandra_server_encryption_keystore_password=keypass conf_cassandra_server_encryption_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0 conf_cassandra_server_encryption_truststore_password=trustpass # Optionally set the following to enable 2-way TLS or mutual TLS conf_cassandra_server_encryption_require_client_auth=truecassandra.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 암호화 서비스가 시작되었는지 확인하려면 시스템 로그에서 다음 메시지를 확인합니다.
Internode messaging enabled TLS protocols Internode messaging enabled cipher suites
인증서 순환 수행
인증서를 순환하려면 다음 단계를 따르세요.
- 고유하게 생성된 각 키 쌍 (부록 참고)의 인증서를 기존 Cassandra 노드의 트러스트 저장소에 추가하여 이전 인증서와 새 인증서가 동일한 트러스트 저장소에 있도록 합니다.
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
여기서
NEW_ALIAS는 항목을 식별하는 고유한 문자열이고,CERT는 추가할 인증서 파일의 이름이며,EXISTING_TRUSTSTORE는 Cassandra 노드의 기존 트러스트 저장소 이름입니다. - scp와 같은 복사 유틸리티를 사용하여 트러스트 저장소를 클러스터의 모든 Cassandra 노드에 배포하고 각 노드에서 사용 중인 기존 트러스트 저장소를 바꿉니다.
- 클러스터의 순환 재시작을 수행하여 새 트러스트 저장소를 로드하고 새 키가 배치되기 전에 새 키에 대한 트러스트를 설정합니다.
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- 클러스터의 각 Cassandra 노드에서 아래 표시된 속성을 cassandra.properties 파일의 새 키 저장소 값으로 업데이트합니다.
conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
여기서
NEW_KEYSTORE_PATH는 키 저장소 파일이 있는 디렉터리의 경로이고NEW_KEYSTORE_PASSWORD는 부록에 설명된 대로 인증서가 생성될 때 설정된 키 저장소 비밀번호입니다. - Cassandra 서비스를 중지합니다.
/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 |
키 저장소와 키의 키패스가 동일해야 합니다. |
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
위의 명령어는 비밀번호를 설정하라는 메시지를 표시합니다. 이 비밀번호는 트러스트 저장소 비밀번호이며 이전에 설정한 키 저장소 비밀번호와 다를 수 있습니다. 인증서를 신뢰하라는 메시지가 표시되면
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를 사용하여 키 저장소 및 트러스트 저장소 파일에서 인증서를 확인합니다.$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0