NSX-T Manager Node ve Cluster Sertifika Değişimi

Merhaba, önceki yazımızda NSX-T Manager Cluster‘ı incelemiştik. Bu yazımızda cluster kurulduktan sonra node ve cluster sertifikasının değiştirilme adımlarına değineceğiz. 

NSX-T Manager Node ve Cluster Sertifika Değişimi için iki seçenek mevcut durumda, birincisi self-signed ki self-signed sertifika üretim ve imzalama işlemini direkt olarak UI’dan yapmak mümkün. İkinci seçenek ise Custom bir sertifika kullanmak. Burada custom sertifika kullanarak NSX Manager Node ve Cluster VIP sertifikalarını değişiyor olacağız. Belirtmek isterim ki sertifika aktivasyonu henüz UI üzerinden mümkün değil ilerleyen versiyonlarda gelecektir. Mevcut durumda işlemi yapabilmek için PostMan API client kullanıyor olacağım. Konuyu daha net anlatmak adına ortam bilgilerini de burada paylaşıyorum.

Ortam bilgisi

Node FQDN IP ADDRESS
NSX Manager 1 netsecx1.corp.local 192.168.17.199
NSX Manager 2 netsecx2.corp.local 192.168.17.198
NSX Manager 3 netsecx3.corp.local 192.168.17.197
NSX VIP netsecx.corp.local 192.168.17.196

Postman Gereksinimleri ve NSX-T authentication

API ile çalışmaya başlamadan önce Postman clientda SSL verification’ı kapatmanız gerekiyor. Bunun için File > Settings > General altında sarı ile işaretlediğim bölümü off yapmanız yeterli. 

postman-ssl-verification

 

NSX-T Manager’a API call yapabilmek için authentication method olarak basic seçeneğini kullanmak mümkün. Bu noktada UI girişi yaptığım admin ve pass bilgileri ile giriş yapabiliriz. 

API yolunuzun dogru olması durumunda istediğiniz 200 (OK) response’u ile gelecektir.-nsxt-postman-authentication

Sertifika Oluşturma Adımları

Sertifika oluşturma için bir kaç seçenek olduğunu belirtmek isterim. NSX-T için kullanacağımız sertifikayı aşağıdaki yollardan hızlıca yapabiliriz. Başka ek yollarda olduğuna eminim ancak bizim konumuz değil. 

  • NSX UI’dan Generate CSR
  • OpenSSL

NSX UI Yöntemi;

NSX Manager’a login olduktan sonra görseldeki adımları izliyoruz. System > Certificates > CSRs > Generate CSR

Generate-CSR-NSXT

Karşımıza gelen ekranda bilgileri dolduruyoruz. Burada en önemli kısım Common Name kısmı ve FQDN olmalı.

generate-csr

Sertifika için sign requestimiz hazır. Şimdi bu sertifikayı direkt olarak NSX Managerda imzalayabilir veya herkesin güvenebileceği bir authority’e imzalatabiliriz. Bu noktadan sonra yaptığım işlem Windows certification authority kullanarak CSR’ı imzalamak oluyor. 

cert-content
sign-cert-windows-ca

İmzalama işleminden sonra cert’i base 64 olarak indirip içeriğini kopyalıyorum. Burada aynı zamanda imza attığınız CA’e de ihtiyaç bulunmakta. İmzalanan sertifikayı import ederken şu şekilde import ederseniz değişimde sorun yaşamazsınız;

—BEGIN CERT—-
CERT
—END CERT—-
—BEGIN CERT—-
CA
—END CERT—-

Bu noktadan sonraki adımımız elde edilen sertifikayı aktifleştirmek. Ancak şunu belirtmek istiyorum. NSX Manager UI’dan oluşturulan CSR’da SAN kısmı bulunmamakta yani oluşturduğunuz her sertifika bir fqdn için geçerli olacak. Bununla birlikte Mozilla Firefox, Chrome gibi browser’lar sertifika içerisinde SAN yoksa untrusted olarak kabul ediyor enteresan bir şekilde. Bu yüzden kendi LAB’ımda ve müşterilerimde OpenSSL yöntemini daha çok tercih ediyorum.

import-cert-for-csr

OpenSSL Yöntemi

CSR oluşturmak için bir linux OS kullanacağım ve burada bir CSR config’e ihtiyacım var. Aşağıda paylaşmış olduğum config NSX-T 3.0 için minimum tüm gereksinimleri karşılamakta. Burada subjectAltName kısmına VIP için belirlemiş olduğum FQDN ve tüm node’ların FQDN DNS olarak giriyorum. Bu sayede tek bir sertifikayı tüm Node’lar için kullanabileceğim. Burada wildcard neden kullanmıyoruz derseniz. VMware vCloud Director dışındaki ürünlerde wildcard kullanımını desteklemiyor.

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
encrypt_key = no
prompt = no
string_mask = nombstr
req_extensions = v3_req

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment, dataEncipherment, nonRepudiation
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = DNS:netsecx.corp.local,DNS:netsecx1.corp.local,DNS:netsecx2.corp.local,DNS:netsecx3.corp.local

[ req_distinguished_name ]
countryName = TR
stateOrProvinceName = TR
localityName = Istanbul
0.organizationName = NetworkSecurity
organizationalUnitName = Engineering
commonName = netsecx.corp.local

Yukarıdaki içeriği cert.cfg isimli bir dosya yaratarak içerisine kopyalıyorum ve kaydediyorum. Sonrasında aşağıdaki komutla CSR’ı oluşturuyorum. 

Komut çalıştığında cert.cfg ile birlikte elimizde üç adet dosya oluyor. netsecx.csr , netsecx.key ve cert.cfg. Buradan sonra netsecx.csr’ı CA’de imzalamamız gerekiyor.

openssl req -days 3650 -nodes -newkey rsa:2048 -keyout netsecx.key -config cert.cfg -out netsecx.csr

netsecx.csr içeriğini kopyalayarak imzalıyorum ve NSX Manager UI’dan import ediyorum. NSX-UI yöntemi gibi burada da certificate contents kısmında önce imzalanan sertifika – varsa intermediate – CA içeriği yapıştırılmalı. Private key kısmına da openssl komutu sonrası oluşan netsecx.key içeriğini kopyalıyorum. Service Certificate kısmı aktifse deaktif yaparak devam ediyorum.

import-ca-cert

Sertifika Aktivasyonu

CA sertifikamızı NSX-T UI’dan import CA cert ile import ediyorum. Custom CA kullanıyorsak bu adımı atlamamak önemli. System > Certificates altında bu işlemi yapıyoruz.

Artık serfikamızı aktifleştirmek için hazırız. Bunu UI’dan yapmak şuan için ne yazık ki mümkün değil. Postman’ı bu noktada kullanıyor olacağım. Ancak öncesinde UI’dan certificate ID’yi edinmem gerekiyor iki basit adımla ID’yi kopyalıyorum.

 

cert-activation-1

Postman ile Sertifika doğrulamak ve değiştirmek için kullanacağım üç adet API call var. Öncelikle yüklemiş olduğum sertifikayı doğrulama ile başlıyorum.

Sertifika Doğrulamak için;
GET https://<nsx-mgr>/api/v1/trust-management/certificates/<certificate-id>?action=validate

CLUSTER VIP değişimi için;
POST https://<nsx-mgr-vip>/api/v1/cluster/api-certificate?action=set_cluster_certificate&certificate_id=<certificate-id>

Node sertifika değişimi için;
POST https://<nsx-mgr>/api/v1/node/services/http?action=apply_certificate&certificate_id=<certificate-id>
nsx-validate-certificate

Validation adımı status OK dönüyorsa bir sorun yok devam edebiliriz. Cluster VIP ve her bir node’a toplamda dört sorgu göndererek aktivasyon sürecini tamamlıyorum. İkinci resimde adres bar için sırayla her bir node’u tekrarlıyoruz. 

Cluster ve Her bir node için aktivasyon tamamlandı. Kontrol ederek devam edelim. Burada gördüğümüz üzere artık cluster FQDN için sertifika güvenli ve değişmiş durumda. Aynı şekilde her bir node FQDN’i yazarak kontrol edebiliriz aynı sonucu verecektir.

NSX-T Sertifika
NSX-T Sertifika

Sonuç ve Yorumlar

NSX-T installation ve Clustering her ne kadar deploy ovf next-next-finish tarzı olsa da NSX-T sertifika işleri zaman zaman kafa karıştırıcı olabiliyor. Bugün bu konuya olabildiğince açıklık getirmeye çalıştım. Umarım faydalı olacaktır.  

Görsel;

self-signed

Tolgahan Yılmaz

👋 Hi, I’m @tylmz. A virtualization and Software Defined Networking Expert interested in Cloud Computing, virtualization, performance tuning of distributed systems and Process Automation 🌱 Currently learning python and shell 💞️ Looking to collaborate on DevOps and process automation 📫 How to reach me; tolgahan_y [at] yahoo.com.tr.

You may also like...

1 Response

  1. 13 Haziran 2020

    […] NSX-T Manager Node ve Cluster Sertifika Değişimi […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.