TLS sertifikaları
bob-ide ve bob-shell istemcilerinin güvenli bir şekilde bağlanabilmesi için şirket içi (on-premises) IBM Bob için harici TLS sertifikalarını yapılandırın.
Bob, API'lerini HTTPS üzerinden sunar. Kullanıcılar bob-ide veya bob-shell kullanarak bağlanmadan önce, endpoint sertifikası geliştirici iş istasyonları tarafından güvenilir kılınmalıdır.
Mümkün olduğunda kurumsal veya genel olarak güvenilen bir sertifika yetkilisi (CA) tarafından düzenlenmiş bir sertifika kullanın. Bu, geliştirici iş istasyonlarına Bob'a özel CA sertifikaları dağıtma ihtiyacını ortadan kaldırır.
İstediğiniz zaman varsayılan kendinden imzalı (self-signed) sertifikaya geri dönmek için bobctl reset-route komutunu çalıştırın. Bu işlem spec.externalCertificate alanını Bob sertifika deposundan kaldırır ve operator harici endpoint'i cert-managera geri döndürür.
Kurumsal bir PKI veya genel olarak güvenilen bir sertifika yetkilisinden alınmış bir sertifika mevcut olduğunda bu yaklaşımı kullanın.
Sertifika talep etmeden veya oluşturmadan önce, Bob tarafından sunulan tüm hostname'leri belirleyin. Tüm hostname'ler sertifikaya Subject Alternative Name (SAN) olarak dahil edilmelidir.
Ingress hostname'lerini alın
Tüm Bob ingress hostname'lerini listelemek için aşağıdaki komutu çalıştırın:
oc get ingress -n <instance-namespace> \
-o jsonpath='{range .items[*]}{range .spec.rules[*]}{.host}{"\n"}{end}{end}'Döndürülen hostname'leri kaydedin — bunlar sertifika talep ederken veya oluştururken gereklidir.
Sertifika gereksinimlerini doğrulayın
Sertifikayı Bob'a uygulamadan önce aşağıdaki gereksinimleri karşıladığından emin olun:
- Özel anahtar (private key) şifrelenmemiştir (unencrypted).
- Sertifika, eksiksiz sertifika zincirini (certificate chain) içerir.
- Tüm Bob ingress hostname'leri SAN girişleri olarak dahil edilmiştir.
- Sertifika ve anahtar PEM formatında sağlanmıştır.
Sertifika secret'ını oluşturun
Sertifikayı ve özel anahtarı içeren bir Kubernetes secret'ı oluşturun:
oc create secret generic my-tls-secret \
--from-file=tls.crt=tls.crt \
--from-file=tls.key=tls.key \
--from-file=ca.crt=ca.crt \
-n <instance-namespace>Mevcut bir secret'ı güncellemek için:
oc create secret generic my-tls-secret \
--from-file=tls.crt=tls.crt \
--from-file=tls.key=tls.key \
--from-file=ca.crt=ca.crt \
-n <instance-namespace> \
--dry-run=client -o yaml | oc apply -f -Sertifikayı uygulayın
Bob'u bu sertifikayı kullanacak şekilde yapılandırın:
./bobctl setup-route --tls-secret my-tls-secret| Parametre | Açıklama |
|---|---|
--tls-secret | Sertifikayı ve özel anahtarı içeren secret'ı belirtir. |
--no-wait | Mutabakat (reconciliation) beklenmeden hemen döner. |
--dry-run | Değişiklikleri uygulamadan yapılandırmayı doğrular. |
Sertifikayı doğrulayın
Beklenen sertifikanın sunulduğunu doğrulayın:
echo | openssl s_client \
-connect <hostname>:443 \
-servername <hostname> 2>/dev/null \
| openssl x509 -noout -issuer -subject -datesŞunları doğrulayın:
- Düzenleyici (issuer) doğrudur.
- Hostname, SAN listesinde mevcuttur.
- Sertifika geçerlilik tarihleri doğrudur.
Harici HTTPS trafiği için özel veya dahili bir sertifika yetkilisi (CA) tarafından imzalanmış bir sertifika oluşturmak ve Bob'u bunu kullanacak şekilde yapılandırmak için bu prosedürü kullanın.
Bir CA sertifikası oluşturun
Sertifika yetkilisi için bir özel anahtar (private key) ve kendinden imzalı (self-signed) sertifika oluşturun:
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes \
-key ca.key \
-sha256 \
-days 365 \
-out ca.crt \
-subj "/CN=<BOB_HOSTNAME> CA"Bu işlem ca.key ve ca.crt dosyalarını oluşturur.
Bob, Kubernetes secret'ına dahil edildiğinde CA sertifikasının adının ca.crt olmasını bekler. Mevcut bir CA sertifikası kullanıyorsanız, secret'ı oluşturmadan önce adını ca.crt olarak değiştirin.
Bir sunucu özel anahtarı oluşturun
Bob endpoint sertifikası için şifrelenmemiş bir özel anahtar oluşturun:
openssl genrsa -out tls.key 4096Eğer özel anahtar bir parola (passphrase) ile şifrelenmişse, devam etmeden önce parolayı kaldırın:
openssl rsa -in encrypted.key -out tls.keyBir SAN yapılandırma dosyası oluşturun
san.cnf adında bir dosya oluşturun ve yer tutucu (placeholder) hostname'leri daha önce aldığınız ingress hostname'leri ile değiştirin:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
CN = <BOB_HOSTNAME_1>
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = <BOB_HOSTNAME_1>
DNS.2 = <BOB_HOSTNAME_2>
DNS.3 = <BOB_HOSTNAME_3>Tüm Bob ingress hostname'lerinin dahil edilmesi için gerektiği kadar DNS.* girişi ekleyin veya kaldırın.
Bir sertifika imzalama isteği oluşturun
openssl req \
-new \
-key tls.key \
-out tls.csr \
-config san.cnfSertifikayı imzalayın
openssl x509 \
-req \
-in tls.csr \
-CA ca.crt \
-CAkey ca.key \
-CAcreateserial \
-out tls.crt \
-days 365 \
-extensions v3_req \
-extfile san.cnfTLS secret'ını oluşturun
Özel veya kurumsal bir sertifika yetkilisi tarafından düzenlenen sertifikalar için:
oc create secret generic my-tls-secret \
--from-file=tls.crt=/path/to/tls.crt \
--from-file=tls.key=/path/to/tls.key \
--from-file=ca.crt=/path/to/ca.crt \
-n <instance-namespace>Genel olarak güvenilen sertifikalar için:
oc create secret tls my-tls-secret \
--cert=/path/to/tls.crt \
--key=/path/to/tls.key \
-n <instance-namespace>Sertifikayı uygulayın
Bob'u bu TLS secret'ını kullanacak şekilde yapılandırın:
./bobctl setup-route --tls-secret my-tls-secretbobctl secret'ı doğrular, Bob yapılandırmasını günceller ve mutabakatın (reconciliation) tamamlanmasını bekler.
| Parametre | Açıklama |
|---|---|
--tls-secret <secret> | TLS sertifikasını ve özel anahtarı içeren secret'ı belirtir. |
--no-wait | Mutabakatın tamamlanmasını beklemeden hemen döner. |
--dry-run | Değişiklikleri uygulamadan yapılandırmayı doğrular. |
Eğer secret'a ca.crt dahil edilmemişse, bobctl bir uyarı görüntüler. Sertifika, geliştirici iş istasyonları tarafından halihazırda güvenilen bir sertifika yetkilisi tarafından düzenlendiğinde bu beklenen bir durumdur.
Sertifikayı doğrulayın
Bob'un beklenen sertifikayı sunduğunu doğrulayın:
echo | openssl s_client \
-connect <BOB_HOSTNAME_1>:443 \
-servername <BOB_HOSTNAME_1> 2>/dev/null \
| openssl x509 -noout -issuer -subject -datesŞunları doğrulayın:
- Düzenleyici (issuer), beklenen sertifika yetkilisiyle eşleşir.
- Sertifika, beklenen hostname girişlerini içerir.
- Sertifika geçerlilik tarihleri doğrudur.
Düzenleyen sertifika yetkilisine geliştirici iş istasyonları tarafından güvenilmiyorsa, kullanıcılar bob-ide veya bob-shell kullanarak Bob'a bağlanmadan önce CA sertifikasını kullanıcılara dağıtın.
Eğer harici bir sertifika yapılandırılmamışsa, Bob, cert-manager tarafından yönetilen kendinden imzalı (self-signed) bir sertifika kullanır. Bu yapılandırmada, kullanıcılar bağlanmadan önce Bob CA sertifikasına güvenmelidir.
Sertifika yapılandırmasını belirleyin
Bob harici endpoint'inin kendinden imzalı bir sertifika kullanıp kullanmadığını kontrol edin:
oc get secret bob-external-tls -n <instance-namespace> \
-o jsonpath='{.data.tls\.crt}' \
| base64 -d \
| openssl x509 -noout -issuer- Eğer düzenleyici (issuer)
CN=Bob Internal CAise, küme varsayılan kendinden imzalı sertifikayı kullanıyordur. Bir sonraki adımla devam edin. - Eğer düzenleyici kurumsal veya genel olarak güvenilen bir sertifika yetkilisi ise, istemci tarafında herhangi bir sertifika yapılandırmasına gerek yoktur. Bkz. Kullanıcı yönetimi.
CA sertifikasını dışa aktarın
./bobctl get-ca-cert --output bob-ca.crtCA sertifikasını dağıtın
Dışa aktarılan bob-ca.crt dosyasını kullanıcılara sağlayın ve bunu işletim sistemi güven depolarına (trust store) eklemelerini isteyin. Kullanıcılar, Bob CA sertifikasını içe aktardıktan sonra güvenli HTTPS bağlantıları kurabilirler.