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.
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.
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
Karşımıza gelen ekranda bilgileri dolduruyoruz. Burada en önemli kısım Common Name kısmı ve FQDN olmalı.
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.
İ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.
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.
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.
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>
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.
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;
1 Response
[…] NSX-T Manager Node ve Cluster Sertifika Değişimi […]