Bật tùy chọn mã hóa nút âm Cassandra

Phương thức mã hoá khoá (hoặc từ nút đến nút) bảo vệ việc di chuyển dữ liệu giữa các nút trong một cụm bằng TLS. Trang này giải thích cách bật tính năng mã hoá khoá vô tuyến Cassandra bằng TLS trên Edge cho Đám mây riêng tư. Để thực hiện các bước này, bạn phải làm quen với thông tin chi tiết về vòng Cassandra.

Bật tính năng mã hoá khoá xen của Cassandra

Để bật tính năng mã hoá nút vô tuyến Cassandra, hãy làm theo quy trình dưới đây trên tất cả các nút trong cụm. Bạn cần phân phối chứng chỉ công khai của mỗi nút tới tất cả các nút. Sau khi thực hiện việc này, mỗi nút sẽ chứa các chứng chỉ node0.cer, node1.cer, v.v. trong kho lưu trữ tin cậy của nút đó. Mỗi nút sẽ chỉ chứa khoá riêng tư của riêng nút đó trong kho khoá của nút đó. Ví dụ: node0 sẽ chỉ chứa node0.pem trong kho khoá. Bạn cần bật mã hoá trên từng nút, mỗi lần một nút.

Hãy làm theo các bước sau để bật tính năng mã hoá khoá xung quanh Cassandra:

  1. Tạo chứng chỉ máy chủ bằng cách làm theo các bước trong Phụ lục để tạo khoá và chứng chỉ tự ký.

    Các bước sau đây giả định bạn đã tạo keystore.node0truststore.node0, cũng như mật khẩu kho khoá và kho lưu trữ tin cậy, như giải thích trong Phụ lục. Bạn nên tạo kho khoá và kho tin cậy ở các bước sơ bộ trên mỗi nút trước khi thực hiện các bước tiếp theo.

  2. Thêm các thuộc tính sau vào tệp /opt/apigee/customer/application/cassandra.properties. Hãy tạo tệp nếu chưa có.
    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
  3. Đảm bảo rằng tệp cassandra.properties thuộc sở hữu của người dùng API:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

Hãy thực thi từng bước sau đây trên mỗi nút Cassandra để các thay đổi có hiệu lực mà không gây ra thời gian ngừng hoạt động cho người dùng:

  1. Dừng dịch vụ Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Khởi động lại dịch vụ Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. Để xác định xem dịch vụ mã hoá TLS đã khởi động hay chưa, hãy kiểm tra nhật ký hệ thống để tìm thông báo sau:
    Starting Encrypted Messaging Service on TLS port

Thực hiện xoay chứng chỉ

Để xoay vòng chứng chỉ, hãy làm theo các bước sau:

  1. Thêm chứng chỉ cho từng cặp khoá đã tạo riêng biệt (xem Phụ lục) vào kho tin cậy của nút Cassandra hiện có, sao cho cả chứng chỉ cũ và chứng chỉ mới đều tồn tại trong cùng một kho tin cậy:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    trong đó NEW_ALIAS là một chuỗi duy nhất để xác định mục nhập, CERT là tên của tệp chứng chỉ cần thêm và EXISTING_TRUSTSTORE là tên của kho lưu trữ tin cậy hiện có trên nút Cassandra.

  2. Sử dụng tiện ích sao chép, chẳng hạn như scp, để phân phối Truststore cho tất cả các nút Cassandra trong cụm đồng hồ thay thế kho lưu trữ tin cậy mà mỗi nút đang sử dụng.
  3. Tiến hành khởi động lại cụm đồng thời để tải kho lưu trữ tin cậy mới và thiết lập niềm tin cho các khoá mới trước khi các khoá đó được đưa vào sử dụng:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. Trên mỗi nút Cassandra trong cụm, hãy cập nhật các thuộc tính như bên dưới thành giá trị kho khoá mới trong tệp 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 and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. Khởi động lại dịch vụ Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. Khi thiết lập thành công hoạt động giao tiếp giữa tất cả các nút, hãy chuyển đến nút Cassandra tiếp theo. Lưu ý: Chỉ chuyển đến nút tiếp theo nếu hoạt động giao tiếp được thiết lập thành công giữa tất cả các nút.

Phụ lục

Ví dụ sau đây giải thích cách chuẩn bị chứng chỉ máy chủ cần thiết để thực hiện các bước mã hoá nút chuyển. Các lệnh trong ví dụ này sử dụng các tham số sau:

Thông số Nội dung mô tả
node0 Chuỗi duy nhất bất kỳ để xác định nút.
keystore.node0 Tên kho khoá. Các lệnh giả định tệp này nằm trong thư mục hiện tại.
keypass Khoá truy cập phải giống nhau cho cả kho khoá và khoá.
dname Xác định địa chỉ IP của node010.128.0.39.
-validity Giá trị được đặt trên cờ này giúp cặp khoá được tạo có hiệu lực trong 10 năm.
  1. Chuyển đến thư mục sau:
    cd /opt/apigee/data/apigee-cassandra
  2. Chạy lệnh sau để tạo tệp có tên keystore.node0 trong thư mục hiện tại:
    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"

    Lưu ý quan trọng: Hãy đảm bảo rằng mật khẩu khoá giống với mật khẩu kho khoá.

  3. Xuất chứng chỉ sang một tệp riêng:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. Đảm bảo chỉ người dùng API mới đọc được tệp và không ai khác:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. Nhập chứng chỉ đã tạo node0.cer vào kho lưu trữ tin cậy của nút:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    Lệnh ở trên yêu cầu bạn đặt một mật khẩu. Đây là mật khẩu Truststore và có thể khác với mật khẩu kho khoá bạn đã đặt trước đó. Nếu được nhắc tin tưởng chứng chỉ, hãy nhập yes.

  6. Sử dụng openSSL để tạo tệp PEM của chứng chỉ mà không có khóa. Xin lưu ý rằng cqlsh không hoạt động với chứng chỉ ở định dạng đã tạo.
    $ 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
  7. Đối với phương thức mã hoá nút đến nút, hãy sao chép tệp node0.cer vào mỗi nút và nhập tệp đó vào kho lưu trữ tin cậy của mỗi nút.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. Sử dụng keytool -list để kiểm tra các chứng chỉ trong kho khoá và tệp kho tin cậy:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0