Alıştırma - İstemci sertifikalarını kullanarak API'ye erişimi güvenli hale getirme
Gelen ilkelerini kullanarak API Management'ı istemci sertifikalarını kabul edecek şekilde yapılandırırsınız.
Hava durumu şirketinizin, diğer sistemlerde zaten sertifika kimlik doğrulaması kullanan belirli istemciler için sertifika kimlik doğrulaması aracılığıyla API'sini güvenli bir şekilde kullanmaya karar verdiği varsayılmıştır. Bu kurulum, bu istemcilerin API Management ağ geçidinde kimliklerini doğrulamak için mevcut sertifikaları kullanmalarına olanak tanır.
Bu ünitede şunları yapacaksınız:
- Otomatik olarak imzalanan sertifika oluşturma
- Ağ geçidini istemci sertifikaları isteyecek şekilde yapılandırma
- Sertifikanın parmak izini alma
- Gelen ilkesini düzenleyerek yalnızca isteklerinde belirtilen sertifika bulunan istemcilere izin verme
- API Management ağ geçidini çağırma
curl
kullanarak sertifikayı geçirme
Not
Bu alıştırmada, önceki alıştırmada ayarladığınız kaynaklar kullanılır.
Kendinden imzalı sertifika oluştur
İlk olarak Cloud Shell'i kullanarak otomatik olarak imzalanan bir sertifika oluşturun. Bu sertifikayı istemci ile API Management ağ geçidi arasında kimlik doğrulaması için kullanacaksınız.
Özel anahtarı ve sertifikayı oluşturmak için Cloud Shell'de aşağıdaki komutları çalıştırın.
pwd='<Enter a secure password here>' pfxFilePath='selfsigncert.pfx' openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out selfsigncert.crt -subj /CN=localhost
Bu örneği izlemeyi kolaylaştırmak için, yukarıdaki komutlar özel anahtarın güvenliğini sağlamak için kullanılan parolayı içerir. Kendi kullanımınız için özel anahtar oluşturduğunuzda, güvenli bir parola oluşturduğunuzdan ve erişimi uygun şekilde denetlediğinizden emin olun.
Şimdi şu komutları çalıştırarak sertifikayı aracın kullanabileceği PEM biçimine
curl
dönüştürün:openssl pkcs12 -export -out $pfxFilePath -inkey privateKey.key -in selfsigncert.crt -password pass:$pwd openssl pkcs12 -in selfsigncert.pfx -out selfsigncert.pem -nodes
İstendiğinde, güvenli parolanızı girin ve Enter tuşuna basın.
Ağ geçidini istemci sertifikaları isteyecek şekilde yapılandırma
API Management için Tüketim katmanını kullandığınızdan, ağ geçidini istemci sertifikalarını kabul etmek üzere yapılandırmanız gerekir. Buradaki adımları izleyin.
Zaten açık olan Azure portalından API Management hizmetinizi (apim-WeatherDataNNNN) seçin.
Sol menü bölmesindeki Dağıtım ve altyapı'nın altında Özel etki alanları'nı seçin. API Management hizmetiniz için Özel etki alanları bölmesi görüntülenir.
*İstemci sertifikası iste için Evet'i seçin ve üst menü çubuğunda Kaydet'i seçin.
Sertifikanın parmak izini alma
Bu bölümde API Management'ı yalnızca belirli parmak izi (parmak izi) olan bir sertifikaya sahipse isteği kabul edecek şekilde yapılandıracaksınız. Sertifikadan parmak izini alalım.
Not
SSL sertifikası parmak izi, SSL sertifikası parmak izi olarak da bilinir.
Cloud Shell'de aşağıdaki kodu çalıştırın.
Fingerprint="$(openssl x509 -in selfsigncert.pem -noout -fingerprint)" Fingerprint="${Fingerprint//:}" echo ${Fingerprint#*=}
Çıktının tamamını (onaltılık dize) kopyalayın ve bu parmak izi değerini bir metin dosyasına yapıştırın.
Yalnızca geçerli sertifikaya sahip isteklere izin verecek şekilde gelen ilkesini düzenleme
Şimdi API Management ağ geçidinde kimlik doğrulama ilkesini oluşturun.
Azure portalında API Management hizmetinizi seçin. Gerekirse, Azure kaynak menüsünde veya giriş sayfasında Tüm kaynaklar'ı ve ardından API Management hizmetinizi seçin.
Sol menü bölmesindeki API'ler'in altında API'ler'i seçin. API Management hizmetinizin API'ler bölmesi görüntülenir.
İkincil menüde Hava Durumu Verileri'ni seçin.
Gelen işleme kutusunda/> simgesini seçerek< İlkeler kod düzenleyicisini açın. İlkeler düğümü için HTML kodu görüntülenir.
İlke dosyasının
<inbound>
düğümünü aşağıdaki XML ile değiştirin ve yer tutucu içindesired-fingerprint
daha önce kopyaladığınız parmak izini yazın:<inbound> <choose> <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "desired-fingerprint")" > <return-response> <set-status code="403" reason="Invalid client certificate" /> </return-response> </when> </choose> <base /> </inbound>
Kaydet'i seçin.
Ağ geçidini çağırma ve istemci sertifikasını geçirme
Artık sertifikayla ve sertifika olmadan yeni kimlik doğrulama ilkesini test edebilirsiniz.
API'yi sertifika olmadan test etmek için Cloud Shell'de aşağıdaki komutu çalıştırın ve yer tutucu değerlerini API ağ geçidi adınız ve abonelik anahtarınız ile değiştirin.
curl -X -v GET https://[api-gateway-name].azure-api.net/api/Weather/53/-1 \ -H 'Ocp-Apim-Subscription-Key: [Subscription Key]'
Bu komut 403 İstemci sertifikası hatası döndürmelidir ve hiçbir veri döndürülmemelidir.
Cloud Shell'de API'yi sertifikayla test etmek için, ilk alıştırmadaki birincil abonelik anahtarını kullanarak aşağıdaki cURL komutunu kopyalayıp yapıştırın (bu birincil anahtarı WeatherData API Management hizmetinizin Abonelikler bölmesinden de alabilirsiniz). API ağ geçidi adınızı eklemeyi unutmayın.
curl -X GET https://[api-gateway-name].azure-api.net/api/Weather/53/-1 \ -H 'Ocp-Apim-Subscription-Key: [subscription-key]' \ --cert-type pem \ --cert selfsigncert.pem
Bu komut, aşağıdakine benzer hava durumu verilerinin başarılı bir şekilde görüntülenmesine neden olmalıdır.
{"mainOutlook":{"temperature":32,"humidity":34},"wind":{"speed":11,"direction":239.0},"date":"2019-05-16T00:00:00+00:00","latitude":53.0,"longitude":-1.0}