HTTPS / SSL Yapılandırması
Private Key ve CA Sertifikası Oluşturma
Öncelikle bir CA için bir private key ve ardından CA sertifikası oluşturalım.
openssl genrsa -out ca.key 4096Private Key Oluşturma
Aşağıdaki CA Sertifikasını oluştururken kırmızı olarak belirttiğim alanları kendinize göre düzenleyin. “registry.fatihsolen.com” olarak belirttiğim alan sunucumun fqdn’i olduğundan siz kurduğunuz sunucunun fqdn’i ile bu alanı güncelleyin.
openssl req -x509 -new -nodes -sha512 -days 3650 -subj “/C=TR/ST=Istanbul/L=Istanbul/O=F Unlimited/OU=Tanzu_LAB/CN=registry.fatihsolen.com” -key ca.key -out ca.crt
Server Sertifikası Oluşturma
Sunucumuz için de private key oluşturuyoruz.
openssl genrsa -out registry.fatihsolen.com.key 4096
Sunucumuz için CSR oluşturuyoruz. Aynı şekilde
openssl req -sha512 -new -subj “/C=TR/ST=Istanbul/L=Istanbul/O=F Unlimited/OU=Tanzu_LAB/CN=registry.fatihsolen.com” -key registry.fatihsolen.com.key -out registry.fatihsolen.com.csr
Şimdi de x509 v3 extension dosyasını oluşturacağız.
cat > sslv3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=registry.fatihsolen.com
DNS.2=registry
DNS.3=harbor.fatihsolen.com
EOF
Yukarıda girdiğimiz alt_names değerleri ile registry.fatihsolen.com, registry, ya da harbor.fatihsolen.com olarak sunucuya eriştiğimde bana ssl hatası vermeyecek. Az önce oluşturduğumuz sslv3.ext isimli extension dosyasını kullanarak sertifikamızı da SAN olarak oluşturalım.
openssl x509 -req -sha512 -days 3650 -extfile sslv3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in registry.fatihsolen.com.csr -out registry.fatihsolen.com.crt
Harbor ve Docker için sertifika tanımları
CA, server sertifikası ve server key dosyasını aşağıdaki şekilde bir klasörde toplayalım.
cp registry.fatihsolen.com.crt /data/cert/
cp registry.fatihsolen.com.key /data/cert/
cp ca.key /data/cert
cp ca.crt /data/cert
Şimdi de Docker’ın kullanabilmesi için crt dosyasını cert formatına dönüştürelim.
openssl x509 -inform PEM -in registry.fatihsolen.com.crt -out registry.fatihsolen.com.cert
Şimdi de sertifikalarımızı docker sertifika klasörüne kopyalayalım;
cp registry.fatihsolen.com.cert /etc/docker/certs.d/registry.fatihsolen.com/
cp registry.fatihsolen.com.key /etc/docker/certs.d/registry.fatihsolen.com/
cp ca.crt /etc/docker/certs.d/registry.fatihsolen.com/
Docker engine’i yeniden başlatalım;
systemctl restart docker
Harbor Konfigürasyonu ve Deployment
Makalenin 1. parçasında indirdiğimiz ve açtığımız arşivin bulunduğu klasöre gidip aşağıdaki komutu çalıştırıyoruz,
./prepare
Çalıştırdığımız bu script sayesinde harbor için nginx https konfigürasyonu yapılmış oluyor. Şimdi docker-compose’u ayağa kaldırıp test edelim;
docker-compose up -d
Şimdi browser kullanarak https ile adresimize gidiyoruz,
https://registry.fatihsolen.com
Eğer browserınızda ssl hatası görüyorsanız CA sertifikanızı erişim yaptığınız makineye yükleyebilirsiniz.
Herşey yolunda görünüyorsa şimdi de docker üzerinden login deneyelim;
docker login https://registry.fatihsolen.com
Eğer bir hata aldıysanız sertifika adımlarını tekrar kontrol edin, eğer almadıysanız aşağıdaki makaleden kuruluma devam edebilirsiniz.