노드 간 (또는 노드 간) 암호화는 클러스터의 노드 간에 이동하는 데이터를 보호합니다. TLS를 사용합니다 이 페이지에서는 Edge에서 TLS를 사용하여 Cassandra 노드 간 암호화를 사용 설정하는 방법을 설명합니다. 프라이빗 클라우드입니다. 이 단계를 수행하려면 Cassandra의 세부정보를 잘 알고 있어야 합니다. 있습니다.
Cassandra 노드 간 암호화 사용 설정
Cassandra 노드 간 암호화를 사용 설정하려면
kube-APIserver입니다 각 노드의 공개 인증서를 모든 노드에 배포해야 합니다.
이렇게 하면 각 노드에
트러스트 저장소에 있는 node0.cer
, node1.cer
등 각 노드는
자체 비공개 키를
keystore. 예를 들어 node0
는node0.pem
keystore. 한 번에 하나씩 각 노드에서 암호화를 사용 설정해야 합니다.
다음 단계에 따라 Cassandra 노드 간 암호화를 사용 설정합니다.
부록의 단계에 따라 서버 인증서를 생성합니다. 자체 서명 키 만들기 확인할 수 있습니다
다음 단계에서는
keystore.node0
을 생성했다고 가정합니다. 및truststore.node0
님, 부록에 설명된 대로 keystore 및 truststore 비밀번호와 함께 작동합니다. 계속 진행하기 전에 각 노드에서 예비 단계로 keystore 및 truststore를 생성해야 합니다. 다음 단계를 살펴보겠습니다- 다음 속성을
/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 노드에 있는 기존 truststore의 이름입니다. - scp와 같은 복사 유틸리티를 사용하여 클러스터의 모든 Cassandra 노드에 truststore를 배포합니다. 각 노드에서 사용 중인 기존 트러스트 저장소를 대체합니다.
- 클러스터의 순차적 재시작을 수행하여 새 truststore를 로드하고
새 키를 삽입해야 합니다.
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- 클러스터의 각 Cassandra 노드에서 아래 표시된 속성을 새 키 저장소로 업데이트합니다.
값을 설정합니다.
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 |
키패스는 키 저장소와 키 모두에 동일해야 합니다. |
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
를 사용하여 keystore 파일과 truststore 파일에서 인증서를 확인합니다.$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0