پیکربندی کردن mTLS بومی Cassandra

مقدمه

به‌طور پیش‌فرض، اجزای مختلف Edge for Private Cloud مثل پردازشگرهای پیام، سرورهای مدیریت، و مسیریاب‌ها ازطریق کانال متن ساده به گره‌های Cassandra متصل می‌شوند. در چنین کانال‌هایی، داده‌های ارسالی به Cassandra و دریافتی از آن به‌صورت واضح منتقل می‌شوند. Apigee mTLS یک ویژگی مبتنی بر شبکه سرویس consul است که به ارتباطات بین اجزای خوشه Edge for Private Cloud امنیت اضافه می‌کند. این پیشنهاد Apigee همچنین امنیت «امنیت لایه انتقال» را به کانال ارتباطی بین عناصر کارخواه و Cassandra اضافه می‌کند.

این مقاله پیشنهاد جایگزین جدیدی از Apigee را پوشش می‌دهد که در آن ارتباط بین عناصر مشتری و Cassandra در Edge for Private Cloud ازطریق TLS دوطرفه (معروف به TLS دوطرفه) بااستفاده از ویژگی‌های بومی دردسترس در Cassandra بدون استفاده از شبکه سرویس خارجی ایمن می‌شود.

ویژگی mTLS بومی

فعال کردن mTLS بین Cassandra و مؤلفه‌های کارخواه شرح‌داده‌شده در این مقاله به ویژگی‌های TLS که به‌طور بومی توسط Apache Cassandra ارائه می‌شود متکی است. وقتی فعال باشد، اتصال‌های کارخواه به Cassandra (در درگاه انتقال بومی CQL 9042) پیش‌از اینکه اجازه دهند اتصال‌ها برقرار شوند، با کارخواه‌ها دست دادن TLS دوطرفه انجام می‌دهند. برای هدف این اتصال TLS دوطرفه، Cassandra به‌عنوان سرور عمل می‌کند و مشتریان مختلفی که به Cassandra متصل می‌شوند (مانند edge-message-processor، ابزار cqlsh، و غیره) به‌عنوان مشتری عمل می‌کنند.

برای TLS دوطرفه (یا TLS متقابل یا mTLS)، هم Cassandra و هم کارخواه‌ها باید با keystore خودشان راه‌اندازی شوند. فروشگاه کلید هر گره Cassandra باید کلید و گواهینامه خودش را داشته باشد. انبار کلید هر برنامه کارخواه باید حاوی کلید و گواهی آن کارخواه خاص باشد. یک فروشگاه مورد اعتماد حاوی گواهی‌ها و زنجیره مرتبط طرف مقابل باید هم در Cassandra و هم در مشتریان اضافه شود. مخزن اعتماد هر گره Cassandra باید حاوی گواهی‌های کارخواه‌ها باشد و مخزن اعتماد هر کارخواه باید حاوی گواهی‌های همه گره‌های Cassandra باشد. برای کسب اطلاعات بیشتر درباره نحوه عملکرد کلی دست دادن «امنیت لایه انتقال» دوطرفه، می‌توانید به مقاله «امنیت لایه انتقال/SSL دوطرفه» Apigee مراجعه کنید.

زنجیره گواهینامه

به‌طور کلی، در «امنیت لایه انتقال» دوطرفه، گواهینامه‌های سرور، گواهینامه‌های کارخواه، زنجیره‌های گواهینامه، keystore، و truststore را می‌توان به روش‌های مختلفی ایجاد کرد. این موضوع برای Cassandra و mTLS بومی کارخواه نیز صادق است. با درنظر گرفتن نحوه عملکرد معمول سازمان‌ها در خوشه‌های Edge for Private Cloud و تعداد جفت‌های اتصال مشتری به cassandra که می‌توانند برقرار شوند، Apigee توصیه می‌کند رویکرد کلی زیر را برای پیکربندی کلیدها و گواهی‌ها برای این ویژگی اتخاذ کنید. روش‌های دیگری هم وجود دارد که قابل‌استفاده هستند، اما روش زیر احتمالاً توازن خوبی بین امنیت و سربار نگهداری ایجاد می‌کند.

  1. یک گواهینامه ریشه و یک جفت کلید/گواهینامه واسط امضاشده توسط ریشه تهیه کنید. ممکن است ازقبل چنین کلیدها و گواهینامه‌هایی را دراختیار داشته باشید. اگر ندارید، می‌توانید بااستفاده از مراحل موجود در پیوست ۱، گواهینامه‌ها و کلیدهای ریشه و واسط خودامضا ایجاد کنید.

  2. از کلید/گواهینامه واسطه مشترک بالا برای امضا کردن همه کلیدها و گواهینامه‌های مختص برنامه (برگ) استفاده کنید.

داشتن کلید/گواهینامه واسط مشترک در ۱ خوشه باعث می‌شود که یک فروشگاه اعتماد مشترک (حاوی زنجیره گواهینامه ریشه و واسط یکسان) در هر گره Cassandra و سرویس‌گیرنده پیکربندی شود. هر گره Cassandra و برنامه کارخواه کلید برگ و گواهی منحصربه‌فرد خود را دریافت می‌کند که توسط کلید/گواهی واسطه مشترک امضا شده است.

  1. چرخاندن گواهینامه برگ گره Cassandra یا برنامه کارخواه ساده است.
  2. چرخش گواهینامه واسط یا ریشه هنوز عملیاتی نسبتاً پیچیده است، اما دفعات این چرخش‌ها بسیار کمتر از گواهینامه‌های نهایی خواهد بود.

از شیوه‌های امنیتی سازمانتان استفاده کنید تا تصمیم بگیرید که آیا از گواهینامه‌های ریشه‌ای و واسط مشترک در خوشه‌های مختلف ابر خصوصی استفاده کنید یا نه. برای تنظیمات گواهینامه جایگزین، می‌توانید به پیوست ۲ مراجعه کنید.

مراحل باقی‌مانده در این مقاله جزئیات روش‌شناسی طراحی کلیدها و گواهی‌های بالا را ارائه می‌دهد.

محدودیت‌ها و هشدارها

محدودیت‌های زیر برای این ویژگی اعمال می‌شود.

  • این ارائه mTLS بومی بین عناصر کارخواه و Cassandra با apigee-mtls سازگار نیست. اگر از این ویژگی استفاده می‌کنید، نمی‌توانید از apigee-mtls استفاده کنید و بالعکس.
  • فعال کردن mTLS بین عناصر کارخواه و Cassandra تأثیر عملکردی بر اتصال‌های برقرارشده بین کارخواهان و Cassandra خواهد داشت. عملیاتی مانند راه‌اندازی کلاینت‌ها یا مقیاس‌بندی اتصالات Cassandra ممکن است کندتر باشد زیرا Cassandra و کلاینت‌ها باید ابتدا قبل‌از شروع ارتباط، درباره TLS مذاکره کنند. تأثیر باید جزئی باشد و به‌طورکلی قابل‌توجه نباشد.
  • در Cassandra، می‌توان mTLS را به‌صورت اختیاری در اتصال‌های ورودی مشتری اعمال کرد. درحالی‌که اجرای اجباری می‌تواند فعال شود، باید درطول کارهای عملیاتی مانند ارتقای نرم‌افزار Apigee، فعال/غیرفعال کردن ویژگی‌های TLS، و انواع خاصی از چرخش‌های گواهی غیرفعال شود. برای جزئیات بیشتر، بخش عملیات و پیکربندی‌ها را ببینید.
  • مدیریت و نگهداری گواهینامه‌ها برعهده مشتری است.
  • چرخش گواهینامه‌ها دارای تفاوت‌های ظریفی است. برای جزئیات بیشتر، لطفاً به بخش گردش گواهینامه مراجعه کنید

فعال کردن mTLS بومی

در سطح بالا، فعال کردن mTLS بومی یک فرایند ۳ مرحله‌ای است که در زیر شرح داده شده است:

  1. یک گواهینامه ریشه و یک جفت کلید/گواهینامه واسط تهیه کنید.
  2. یک جفت کلید/گواهی برگ از ۱ گره Cassandra ایجاد کنید، آن را امضا کنید، در یک keystore ذخیره کنید و Cassandra را برای mTLS اختیاری پیکربندی کنید. مراحل را برای هر گره Cassandra یکی‌یکی تکرار کنید.
  3. جفت گواهی/کلید برگ را برای ۱ برنامه کارخواه ایجاد کنید، آن را امضا کنید، در محل ذخیره کلید ذخیره کنید، و برنامه کارخواه را برای mTLS پیکربندی کنید. مراحل را در هر برنامه کارخواه به‌صورت جداگانه تکرار کنید. برنامه‌های کارخواه:
    1. edge-management-server
    2. edge-message-processor
    3. رهیاب لبه‌ای

این مراحل در زیر به‌تفصیل شرح داده شده است:

تهیه گواهینامه‌های ریشه و واسطه

یک گواهینامه ریشه و یک جفت کلید/گواهینامه واسط امضاشده توسط ریشه تهیه کنید. از گواهینامه ریشه و واسط امضاشده «مرجع صدور گواهی» سازمانتان استفاده کنید یا گواهینامه‌های خودامضاشده ایجاد کنید. زنجیره گواهینامه ریشه و واسط را در یک مخزن گواهینامه‌های معتبر ذخیره کنید. برای فرمان‌های مفید، به پیوست ۱ مراجعه کنید. فرمان‌های بعدی فرض می‌کنند که به فایل‌های زیر دسترسی دارید:

  • intermediate.key - فایل کلید برای گواهینامه واسط برای امضای گواهینامه‌های نهایی
  • intermediate-cert.pem- گواهینامه واسط

پیکربندی گره‌های Cassandra

  1. یک گره Cassandra را انتخاب کنید
  2. یک جفت کلید و گواهینامه برگ تولید کنید و آن را با گواهینامه واسط امضا کنید. کلید و گواهی امضاشده را در keystore ذخیره کنید. مثال در زیر:
    
    # Generate Leaf key and csr
    openssl req -newkey rsa:2048 -keyout cass-node1.key -out cass-node1-req.pem -sha256 -days 365 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=yourip/emailAddress=cassnode1@yourorg.com"
    
    # leaf cert signed by intermediate
    openssl x509 -req -in cass-node1-req.pem -CAkey intermediate.key -CA intermediate-cert.pem -days 365 -CAcreateserial -out cass-node1-cert.pem
    
    # keystore packaging leaf key and cert
    openssl pkcs12 -export -clcerts -in cass-node1-cert.pem -inkey cass-node1.key -out cass-node1-keystore.pfx -name nativemtls -password pass:keystorepass

    فایل‌های keystore و truststore را در مکان خاصی در گره قرار دهید و مطمئن شوید که برای کاربر apigee قابل‌دسترسی هستند

    cp cass-node1-keystore.pfx /opt/apigee/customer/application/
    cp truststore.pfx /opt/apigee/customer/application/
    
    chown apigee:apigee /opt/apigee/customer/application/cass-node1-keystore.pfx
    chown apigee:apigee /opt/apigee/customer/application/truststore.pfx

  3. فایل /opt/apigee/customer/application/cassandra.properties را ایجاد یا ویرایش کنید. محتوای زیر را به این فایل اضافه کنید:
    ### Enable Cassandra TLS on CQL connections
    conf_cassandra_client_encryption_enabled=true
    
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=true
    
    ### Keystore details
    conf_cassandra_client_encryption_keystore=/opt/apigee/customer/application/cass-node1-keystore.pfx
    conf_cassandra_client_encryption_keystore_password=keystorepass
    conf_cassandra_server_encryption_store_type=PKCS12
    
    ### Whether to enable 2-way TLS (or mTLS) - true or false
    conf_cassandra_client_encryption_require_client_auth=true
    
    ### When 2-way TLS is enabled, client certificate details need to be provided via a truststore
    conf_cassandra_client_encryption_truststore=/opt/apigee/customer/application/truststore.pfx
    conf_cassandra_client_encryption_truststore_password=trustpass
    conf_cassandra_client_encryption_store_type=PKCS12
    

    مطمئن شوید که فایل متعلق به کاربر apigee است و توسط او قابل‌خواندن است:

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
  4. پیکربندی و بازراه‌اندازی گره Cassandra
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  5. مراحل بالا را در هر گره Cassandra به‌صورت یک‌به‌یک تکرار کنید

پیکربندی برنامه‌های کارخواه

این بخش برای مؤلفه‌های مشتری زیر که به Cassandra متصل می‌شوند کاربرد دارد:

  • edge-management-server
  • edge-message-processor
  • edge-router

  1. انتخاب یک عنصر کارخواه
  2. یک جفت گواهینامه و کلید برگ تولید کنید و آن را با گواهینامه واسط امضا کنید. کلید و گواهی امضاشده را در یک انبار کلید ذخیره کنید. مثال زیر:
    
    # Generate Leaf key and csr
    openssl req -newkey rsa:2048 -keyout mgmt-node1.key -out mgmt-node1-req.pem -sha256 -days 365 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=yourip/emailAddress=mgmtnode1@yourorg.com"
    
    # leaf cert signed by intermediate
    openssl x509 -req -in mgmt-node1-req.pem -CAkey intermediate.key -CA intermediate-cert.pem -days 365 -CAcreateserial -out mgmt-node1-cert.pem
    
    # keystore packaging leaf key and cert
    openssl pkcs12 -export -clcerts -in mgmt-node1-cert.pem -inkey mgmt-node1.key -out mgmt-node1-keystore.pfx -name nativemtls -password pass:keystorepass
    

    فایل‌های keystore و truststore را در مکان خاصی در گره قرار دهید و مطمئن شوید که کاربر apigee به آن‌ها دسترسی دارد

    cp mgmt-node1-keystore.pfx /opt/apigee/customer/application/
    cp truststore.pfx /opt/apigee/customer/application/
    
    chown apigee:apigee /opt/apigee/customer/application/mgmt-node1-keystore.pfx
    chown apigee:apigee /opt/apigee/customer/application/truststore.pfx

  3. ایجاد و ویرایش فایل پیکربندی براساس برنامه‌ای که پیکربندی می‌کنید
    برنامه فایل پیکربندی
    سرور مدیریت /opt/apigee/customer/application/management-server.properties
    پردازنده مدیریت /opt/apigee/customer/application/message-processor.properties
    رهیاب /opt/apigee/customer/application/router.properties

    پیکربندی‌های زیر را به فایل اضافه کنید:

    ### Enable TLS on CQL connections
    conf_cassandra_sslconfig.enable.tls=true
    conf_cassandra_sslconfig.enable.mtls=true
    
    ### Keystore Details
    conf_cassandra_sslconfig.keystore.path=/opt/apigee/customer/application/mgmt-node1-keystore.pfx
    conf_cassandra_sslconfig.keystore.password=keystorepass
    conf_cassandra_sslconfig.keystore.type=PKCS12
    
    ### Truststore Details
    conf_cassandra_sslconfig.truststore.path=/opt/apigee/customer/application/truststore.pfx
    conf_cassandra_sslconfig.truststore.password=trustpass
    conf_cassandra_sslconfig.truststore.type=PKCS12
    

    مطمئن شوید که فایل پیکربندی متعلق به کاربر apigee است و قابل‌خواندن است

    chown apigee:apigee configuration file
    
    ### Example:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    

  4. بازراه‌اندازی برنامه کلاینت
    # Configure and restart service:
    apigee-service component configure
    apigee-service component restart
    # Example, to configure and restart message processor application
    apigee-service edge-message-processor configure
    apigee-service edge-message-processor restart
    
  5. با جستجوی گزارش‌های زیر در گزارش سیستم برنامه مناسب، می‌توانید تأیید کنید که SSL به‌درستی در برنامه مشتری پیکربندی شده است:

    گزینه‌های SSL به اتصال cassandra اضافه شد

  6. مراحل بالا را برای هر برنامه کارخواه به‌صورت جداگانه تکرار کنید

عملیات و پیکربندی‌ها

اجرای mTLS

وقتی mTLS در Cassandra اجرا نمی‌شود، Cassandra یا اتصال‌های متن ساده از کارخواه‌ها را می‌پذیرد یا کارخواه‌هایی را که می‌تواند با آن‌ها دست‌دهی TLS دوطرفه موفقیت‌آمیز انجام دهد. برای اینکه اجرای mTLS کار کند، mTLS باید ابتدا در Cassandra پیکربندی شود. با دنبال کردن مراحل زیر می‌توانید اجرای mTLS را در Cassandra تنظیم کنید:

  1. یک گره Cassandra را انتخاب کنید
  2. فایل /opt/apigee/customer/application/cassandra.properties را ایجاد یا ویرایش کنید. ویژگی زیر را در این فایل اضافه یا ویرایش کنید:
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=false
    

    مطمئن شوید که فایل متعلق به کاربر apigee است و توسط او قابل‌خواندن است

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    
  3. پیکربندی و بازراه‌اندازی گره Cassandra
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  4. مراحل بالا را در هر گره Cassandra یکی‌یکی تکرار کنید

پس‌از اینکه mTLS در Cassandra اجرا شد، ابزار پُرسمان استاندارد Cassandra به‌نام cqlsh نمی‌تواند مستقیماً به Cassandra متصل شود. برای پیکربندی cqlsh برای SSL، کلید و گواهینامه جدیدی تولید کنید (مشابه کلید و گواهینامه برای برنامه‌های کارخواه) و کارهای زیر را انجام دهید:

  1. ایجاد یا ویرایش فایل $HOME/.cassandra/cqlshrc
  2. محتوای زیر را به فایل اضافه کنید:
    [ssl]
    certfile = /home/admin-user/certs/inter-root.pem
    validate = false
    userkey = /home/admin-user/certs/cqlsh1.key
    usercert = /home/admin-user/certs/cqlsh1-cert.pem
    
    • certfile - فایل گواهی حاوی زنجیره گواهی ریشه و واسط
    • ‫userkey - کلید کارخواه برای استفاده توسط cqlsh. این باید جفت کلید/گواهینامه برگی باشد که می‌توانید با گواهینامه واسط تولید و امضا کنید.
    • ‫usercert - گواهینامه کارخواهی که cqlsh استفاده می‌کند. این باید کلید/گواهی برگی باشد که می‌توانید با گواهینامه واسط تولید و امضا کنید.
  3. فرمان cqlsh را مثل همیشه اجرا کنید و درعین‌حال متغیر مستقل --ssl را ارائه دهید. به عنوان مثال:
    $  /opt/apigee/apigee-cassandra/bin/cqlsh --ssl X.X.X.X
    Connected to Apigee at X.X.X.X:9042
    [cqlsh 6.0.0 | Cassandra 4.0.13 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    cqlsh>
    

غیرفعال کردن اجرای mTLS در Cassandra

برای غیرفعال کردن اجرای mTLS در Cassandra، مراحل زیر را دنبال کنید:

  1. انتخاب یک گره Cassandra
  2. فایل /opt/apigee/customer/application/cassandra.properties را ایجاد یا ویرایش کنید. ویژگی زیر را در این فایل اضافه یا ویرایش کنید:
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=true
    

    مطمئن شوید که فایل متعلق به کاربر apigee است و توسط او قابل‌خواندن است

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    
  3. پیکربندی و بازراه‌اندازی گره Cassandra
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  4. مراحل بالا را در هر گره Cassandra یکی‌یکی تکرار کنید

غیرفعال کردن mTLS بومی

غیرفعال کردن mTLS بومی فرایندی چندمرحله‌ای است، مشابه فعال کردن mTLS بومی. مراحل سطح بالا عبارتند از:

  1. غیرفعال کردن اجرای mTLS در Cassandra (درصورت اجرا)
  2. ‫mTLS را در همه گره‌های برنامه‌های مشتری زیر یکی‌یکی غیرفعال کنید:
    • edge-management-server
    • edge-message-processor
    • edge-router
    1. فایل پیکربندی را براساس برنامه‌ای که پیکربندی می‌کنید ایجاد و ویرایش کنید:
      برنامه فایل پیکربندی
      سرور مدیریت /opt/apigee/customer/application/management-server.properties
      پردازنده مدیریت /opt/apigee/customer/application/message-processor.properties
      رهیاب /opt/apigee/customer/application/router.properties
    2. خصوصیات زیر را در فایل پیکربندی اضافه یا ویرایش کنید:
      ### TLS on CQL connections
      conf_cassandra_sslconfig.enable.tls=false
      conf_cassandra_sslconfig.enable.mtls=false
      
    3. مطمئن شوید که فایل پیکربندی متعلق به کاربر apigee است و توسط او قابل‌خواندن است:
      chown apigee:apigee configuration file
      
      ### Example:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. برنامه کلاینت را بازراه‌اندازی کنید:
      
      # Configure and restart service:
      apigee-service component configure
      apigee-service component restart
      
      # Example, to configure and restart message processor application
      apigee-service edge-message-processor configure
      apigee-service edge-message-processor restart
      
    5. مراحل #a تا #d را در هر برنامه کلاینت، یکی پس‌از دیگری، تکرار کنید.
  3. mTLS را در همه گره‌های Cassandra یکی‌یکی غیرفعال کنید:
    1. یک گره Cassandra را انتخاب کنید.
    2. فایل /opt/apigee/customer/application/cassandra.properties را ایجاد یا ویرایش کنید. ویژگی زیر را در این فایل اضافه یا ویرایش کنید:
      ### Cassandra TLS on CQL connections
      conf_cassandra_client_encryption_enabled=false
      

      مطمئن شوید که فایل متعلق به کاربر apigee است و کاربر apigee می‌تواند آن را بخواند

      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
      
    3. پیکربندی و بازراه‌اندازی گره Cassandra
    4. apigee-service apigee-cassandra configure
      apigee-service apigee-cassandra restart
      
    5. مراحل #a تا #c را روی هر گره Cassandra، یکی‌یکی، تکرار کنید.

چرخش گواهینامه

گردش فقط برای گواهینامه‌های برگ (حفظ گواهینامه‌های میانجی و ریشه یکسان)

مراحل مشابه پیکربندی برنامه‌های کارخواه را می‌توانید دنبال کنید:

  1. تولید گواهینامه/کلید برگ جدید برای یک برنامه بااستفاده از همان گواهینامه/کلید واسطه
  2. مسیر کلید/گواهی برگ جدید را در برنامه به‌همراه گذرواژه و نوع keystore پیکربندی کنید
  3. بازراه‌اندازی برنامه
گردش برای گواهینامه‌های ریشه یا واسط

اگر قصد دارید گواهینامه میانی یا ریشه را بچرخانید، توصیه می‌شود این کار را به‌عنوان فرایندی چندمرحله‌ای انجام دهید:

  1. غیرفعال کردن mTLS بومی Cassandra در سراسر خوشه‌تان.
  2. از گواهینامه‌های ریشه و واسطه جدید برای تولید گواهینامه‌های برگ یا برنامه جدید استفاده کنید.
  3. مراحل فعال کردن mTLS بومی Cassandra را بااستفاده از مجموعه جدید کلیدها و گواهی‌ها دنبال کنید.

عملیات عمومی Apigee

برای انجام عملیات عمومی Apigee مانند ارتقای نرم‌افزار Apigee، افزودن یا حذف گره‌های Cassandra، افزودن یا حذف مراکز داده، فعال یا غیرفعال کردن اصالت‌سنجی Cassandra، و غیره، مطمئن شوید که mTLS در Cassandra اعمال نشده باشد. اگر mTLS را اجباری کرده‌اید، قبل‌از ادامه این عملیات، اجرای اجباری را غیرفعال کنید.

ضمیمه ۱

مراحل این پیوست را می‌توان برای تولید یک جفت کلید/گواهی ریشه و واسطه خودامضاشده و افزودن این زنجیره گواهی به یک مخزن اعتماد دنبال کرد.

تولید گواهینامه‌های واسط و ریشه خودامضا

# Create self-signed root key and cert
openssl req -x509 -newkey rsa:2048 -keyout root.key -out root-cert.pem -sha256 -days 3650 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=root.yourorg.com/emailAddress=apigeeroot@yourorg.com"

# Create intermediate key and cert (signed by root)
openssl req -newkey rsa:2048 -keyout intermediate.key -out intermediate-req.pem -sha256 -days 3650 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=inter.yourorg.com/emailAddress=apigeeinter@yourorg.com"

openssl x509 -req -in intermediate-req.pem -CAkey root.key -CA root-cert.pem -days 3650 -CAcreateserial -out intermediate-cert.pem

تولید کردن مخزن اعتماد

# Merge root and intermediate cert into 1 file
cat intermediate-cert.pem > inter-root.pem
cat root-cert.pem >> inter-root.pem

# Create truststore to be used everywhere
keytool -keystore truststore.pfx -storetype PKCS12 -importcert -file inter-root.pem -keypass trustpass -storepass trustpass -alias nativemtls -noprompt

پیوست ۲: تنظیمات زنجیره گواهینامه جایگزین

درحالی‌که این مقاله راه‌اندازی زنجیره گواهی خاصی را توصیه می‌کند که امنیت و سهولت عملیات را متعادل می‌کند، گزینه‌های جایگزینی وجود دارد که در زیر شرح داده شده است. اکثر اصول کلی برای روش‌های دیگر نیز اعمال می‌شود، مانند:

  1. داشتن کلیدها و گواهی‌های برگ مستقیم برای هر گره Cassandra یا برنامه کارخواه (بدون هیچ‌گونه گواهی ریشه یا واسطه امضاکننده). این کار احتمالاً چرخش گواهینامه را پیچیده می‌کند.
  2. داشتن چندین مجموعه ریشه و واسطه برای موارد استفاده مختلف. برای مثال، گره‌های Cassandra دارای ۱ مجموعه گواهینامه ریشه‌ای/واسط هستند که بااستفاده از آن همه گواهینامه‌های نهایی Cassandra امضا می‌شوند. به‌طور مشابه، همه برنامه‌های کارخواه ممکن است یک مجموعه ریشه/واسط جداگانه برای امضای گواهینامه‌های نهایی برنامه داشته باشند. چنین تنظیماتی قابل‌اجرا هستند اما مستلزم افزودن زنجیره گواهینامه ریشه/واسط به مخزن اعتماد مناسب هستند. در این مثال، truststoreهای Cassandra باید حاوی گواهینامه‌های ریشه/واسط کارخواه باشند و برنامه‌های کارخواه باید زنجیره ریشه/واسط گره‌های Cassandra را در truststore خود داشته باشند.
  3. مشابه بالا، می‌توانید چندین مجموعه گواهینامه ریشه و واسط برای مناطق مختلف داشته باشید اما همه کارخواه‌ها در همه مناطق و همه سرورها در همه مناطق باید با افزودن همه آن‌ها در مخزن اعتماد پیکربندی‌شده از همه زنجیره‌های ریشه و واسط مطلع شوند.