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

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

Bật tính năng mã hoá nút bên trong Cassandra

Hãy làm theo các bước sau để bật tính năng mã hoá giữa các nút 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ý.

    Nếu bạn đang sử dụng Edge cho đám mây riêng tư trên một hệ điều hành hỗ trợ FIPS, hãy sử dụng Kho khoá FIPS BouncyCastle (BCFKS). Tham khảo Phụ lục bên dưới để biết các mẹo khi làm việc với kho khoá loại BCFKS.

    Các bước sau giả định rằng bạn đã tạo keystore.node0truststore.node0, cũng như mật khẩu kho khoá và mật khẩu Truststore, 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 tiếp tục 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. Nếu tệp không tồn tại, hãy tạo tệp đó.
    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=true
      
    # Set the following in FIPS enabled operating systems
    # With FIPS, older TLS protocols are disabled, so set to TLSv1.2
    conf_cassandra_server_encryption_protocol=TLSv1.2
    # With FIPS, use BCFKS keystores
    conf_cassandra_server_encryption_store_type=BCFKS
      
  3. Đảm bảo rằng tệp cassandra.properties thuộc sở hữu của người dùng apigee:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties
    

Thực thi lần lượt các bước sau trên từng 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. Ngừ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 đã bắt đầu hay chưa, hãy kiểm tra nhật ký hệ thống để tìm thông báo sau:
    Internode messaging enabled TLS protocols
    Internode messaging enabled cipher suites
    

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

Để xoay 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á được tạo riêng biệt (xem Phần 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à chuỗi duy nhất dùng để 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 một tiện ích sao chép, chẳng hạn như scp, để phân phối kho tin cậy cho tất cả các nút Cassandra trong cụm, thay thế kho tin cậy hiện có mà mỗi nút đang sử dụng.
  3. Thực hiện khởi động lại luân phiên cụm để tải kho lưu trữ đáng 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:
    /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 hiển thị bên dưới thành các giá trị kho khoá mới trong tệp cassandra.properties:
    conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
      

    trong đó NEW_KEYSTORE_PATH là đường dẫn đến thư mục chứa tệp kho khoá và NEW_KEYSTORE_PASSWORD là mật khẩu kho khoá được đặt khi tạo chứng chỉ, như được giải thích trong Phần phụ lục.

  5. Dừng dịch vụ Cassandra:
    /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 giao tiếp được thiết lập thành công giữa tất cả các nút, hãy chuyển sang nút Cassandra tiếp theo. Lưu ý: Chỉ chuyển đến nút tiếp theo nếu đã thiết lập thành công hoạt động giao tiếp 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á giữa các nút. Các lệnh trong ví dụ sử dụng các thông số sau:

Thông số Mô tả
node0 Bất kỳ chuỗi duy nhất nào để 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 Keypass 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 sẽ 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 một 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 biệt:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. Đảm bảo chỉ người dùng apigee 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 khẩu. Đây là mật khẩu kho tin cậy và có thể khác với mật khẩu kho khoá mà bạn đã đặt trước đó. Nếu bạn được nhắc tin cậy chứng chỉ, hãy nhập yes.

  6. Sử dụng openssl để tạo tệp PEM của chứng chỉ không có khoá. Xin lưu ý rằng cqlsh không hoạt động với chứng chỉ ở định dạng được 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á từ nút đến nút, hãy sao chép tệp node0.cer vào từng nút rồi nhập tệp đó vào kho tin cậy của từng 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 tệp kho khoá và kho tin cậy:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0

Làm việc với kho khoá BCFKS cho các hệ điều hành hỗ trợ FIPS

Khi làm việc với các hệ điều hành hỗ trợ FIPS, hãy sử dụng Kho khoá BouncyCastle FIPS (BCFKS). Phần bên dưới mô tả cách làm việc với kho khoá loại BCFKS. Các bước khác để làm việc với kho khoá (như quyền sở hữu tệp, vị trí tệp, v.v.) giữ nguyên như đề cập trong phần phụ lục này.

Để tạo kho khoá thuộc loại BCFKS, hãy sử dụng lệnh dưới đây:

keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \
-storepass keypass -keypass keypass -v \
-dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

Lưu ý: Mật khẩu kho khoá và mật khẩu khoá phải giống nhau.

Lưu ý: Bạn có thể sử dụng tệp jar bc-fips do Apigee vận chuyển hoặc tải tệp jar tương tự xuống từ kho lưu trữ của BouncyCastle. Tham khảo tài liệu của BouncyCastle để biết thêm thông tin chi tiết về cách tạo kho khoá BCFKS.

Xuất chứng chỉ sang một tệp riêng:

keytool -export -v -alias node0 -file node0.cer -keystore keystore.node0 -storepass keypass \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

Nhập chứng chỉ đã tạo node0.cer vào kho tin cậy của nút:

keytool -import -v -alias node0 -file node0.cer -keystore truststore.node0 -storepass storepass \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS