Alıştırma - İstemci sertifikalarını kullanarak API'ye erişimi güvenli hale getirme

Tamamlandı

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

Dekont

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.

  1. Özel anahtarı ve sertifikayı oluşturmak için Cloud Shell'de aşağıdaki komutları çalıştırın.

    pwd='Pa$$w0rd'
    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.

  2. Ş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
    

    Parola istendiğinde Pa$$w 0rd yazın 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.

  1. Zaten açık olan Azure portalından API Management hizmetinizi (apim-WeatherDataNNNN) seçin.

  2. 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.

  3. *İstemci sertifikası iste için Evet'i seçin ve üst menü çubuğunda Kaydet'i seçin.

    Configure the gateway to request certificates.

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.

Dekont

SSL sertifikası parmak izi, SSL sertifikası parmak izi olarak da bilinir.

  1. Cloud Shell'de aşağıdaki kodu çalıştırın.

    Fingerprint="$(openssl x509 -in selfsigncert.pem -noout -fingerprint)"
    Fingerprint="${Fingerprint//:}"
    echo ${Fingerprint#*=}
    
  2. Çı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.

  1. 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.

  2. 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.

  3. İkincil menüde Hava Durumu Verileri'ni seçin.

  4. Gelen işleme kutusunda/> simgesini seçerek< İlkeler kod düzenleyicisini açın. İlkeler düğümü için HTML kodu görüntülenir.

    Inbound processing policy button.

  5. İlke dosyasının <inbound> düğümünü aşağıdaki XML ile değiştirin ve yer tutucu için desired-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>
    
  6. 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.

  1. 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.

  2. 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}