Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Bu konu, bir Docker container'ında Edge Microgateway'in nasıl çalıştırılacağını açıklamaktadır. Adımlar Docker, Docker komutları ve Edge Microgateway ile ilgili temel bilgilere sahip olduğunuz varsayılır kurulum ve yapılandırma. Örneğin, Daha fazla bilgi için Docker dokümanlarına bakın ve Edge Microgateway'den daha fazlası için kullanılabilir.
Ön koşullar
Bir Docker container'ında Edge Microgateway'i çalıştırmadan önce aşağıdakileri yapmanız gerekir görevler:
Apigee kuruluşunuz/ortamınız için Edge Microgateway'i yapılandırın:
edgemicro configure -o your_org -e your_env -u your_username
Yapılandırma hakkında daha fazla bilgi edinmek için 1. Bölüm: Edge Mikro Ağ Geçidini Yapılandırma bölümüne bakın.
Yapılandırma adımlarını gerçekleştirdikten sonra yapılandırmayı bulun. dosyası olarak kaydedebilirsiniz. Varsayılan konum şu şekildedir:
$HOME/.edgemicro/your_org-your_env-config.yaml
burada
your_org
veyour_env
kuruluştur veedgemicro config
komutunu çalıştırdığınızda kullandığınız ortam hakkında daha fazla bilgi edinin. Şunlar gerekir: bu dosyayıedgemicro config
komutudur. Örneğin:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
Bir Docker container'ında Edge Microgateway'i başlatmadan önce için gerekli Apigee Edge varlıklarını (veya bunları oluşturmuş) kimliği doğrulanmış API proxy çağrıları yapmak için kullanılır. Bu varlıklar, Edge Mikro Ağ Geçidi Uyumlu proxy, API Ürünü, Geliştirici ve Geliştirici Uygulaması olur. Talimatların tamamı için bkz. Apigee Edge'de varlıklar oluşturun.
Edge Micro'yı Docker container'ı olarak çalıştırın
Edge Microgateway için Docker görüntüsünü indirin:
docker pull gcr.io/apigee-microgateway/edgemicro:latest
Sonraki adımlara geçmeden önce Ön koşullar bölümüne gidin.
Edge Microgateway yapılandırma dosyasını base64 olarak kodlamak için aşağıdaki komutu çalıştırın
$HOME/.edgemicro
konumunda bulunuyor:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Burada
your_org
veyour_env
,edgemicro config
komutunu çalıştırdı.Komutun etrafına vurgu işareti (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway'i container olarak çalıştırın. Bu komut, çeşitli ortam değişkenlerini ayarlar Edge Microgateway'i başlatmak için container çalışma zamanı tarafından kullanılan anahtar kelimeleri kullanabilirsiniz:
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro:latest
Parametreler
Parametre Açıklama -P
Açığa çıkan tüm bağlantı noktalarını ana makineye yayınlayın. Ayrıca bkz. Docker çalıştırma referansı. -p
Tek bir bağlantı noktasını veya bağlantı noktası aralığını açık bir şekilde eşleyin. Ayrıca bkz. Docker çalıştırma referansı. -d
Ayrı modda çalıştır. Ayrıca bkz. Docker çalıştırma referansı. -v, --volume
Birim bağlantısını belirtir. Edge Mikro Ağ Geçidi'ni yapılandırırsanız Docker container'ında TLS'yi kullanmak istiyorsanız aşağıdaki bağlantı noktası 8443'ü açığa çıkarmanız gerekir: günlük dosyası dizinini ekleyin. Ayrıca VOLUME [paylaşılan dosya sistemleri] bölümüne de göz atın. Ayrıca bkz. Docker kapsayıcıda TLS kullanma. EDGEMICRO_ORG
Edge Microgateway'i yapılandırmak için kullandığınız Apigee kuruluşunun adı. EDGEMICRO_ENV
Edge Microgateway'i yapılandırmak için kullandığınız Apigee ortamının adı. EDGEMICRO_PROCESSES
Başlatılacak işlem sayısı. EDGEMICRO_KEY
Edge Microgateway'i yapılandırdığınızda döndürülen anahtar. EDGEMICRO_SECRET
Edge Microgateway'i yapılandırdığınızda döndürülen gizli anahtar. EDGEMICRO_CONFIG
Base64 kodlu Edge Microgateway yapılandırma dosyasını içeren bir değişken. SERVICE_NAME
Kubernetes kullanıyorsanız bu parametre otomatik olarak doldurulur. Aksi halde bu ayarı istediğiniz gibi yapabilirsiniz. Hiçbir şey belirtmezseniz hizmet, ad default
olarak ayarlandı.DEBUG
Hata ayıklamayı etkinleştirmek için *
olarak ayarlayın.HTTP_PROXY
HTTPS_PROXY
Edge Mikro ağ geçidi şu durumda kullan: ve ağ geçidi Apigee ile iletişim kuramaz. Kenar. Daha fazla Edge Microgateway'i şirket güvenlik duvarının arkasında kurma başlıklı makaleyi inceleyin. Örneğin:
HTTP_PROXY=http://10.203.0.1:5187/
NO_PROXY
Edge Microgateway'in proxy yapmaması gereken alan adlarının virgülle ayrılmış listesi. Daha fazla bilgi için Bir şirket güvenlik duvarının ardından Edge Microgateway'i kurma başlıklı makaleye bakın. Örneğin:
localhost,127.0.0.1,localaddress,.localdomain.com
NODE_EXTRA_CA_CERTS
(İsteğe bağlı) Güvenilir olmayan bir CA kullanıyorsanız bu parametreyi kullanın varsayılan olarak Node.js tarafından kullanılır. Bu parametrenin değerini PEM biçiminde bir veya daha fazla güvenilen sertifika içeren dosya. Örneğin, TLS sertifikaları başlıklı makaleye göz atın. --security-opt
(İsteğe bağlı) İstenen Docker güvenlik seçeneklerini ayarlar. Docker belgelerindeki Güvenlik yapılandırması bölümüne bakın. --cap-drop
(İsteğe bağlı) Kapsayıcıda izin verilen Linux özelliklerini sınırlar. Docker belgelerinde Çalışma zamanı ayrıcalığı ve Linux özellikleri bölümüne bakın. Örneğin:
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -e EDGEMICRO_PROCESS=1 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro
Container'ın çalışıp çalışmadığını kontrol etmek için:
docker ps
Şuna benzer bir çıkış alırsınız:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b92e082ea9c edgemicro "/tmp/entrypoint.sh" 12 minutes ago Up 12 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:32775->8443/tcp edgemicro
API çağrısı test etme
Container'da Edge Microgateway'i başlattıktan sonra, container'a API çağrıları yapabilirsiniz.
Örneğin, API'nizin temel yolu /hello
ise:
http://localhost:8000/hello
Örnek çıktı:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Bu yanıtı görüyorsanız Edge Mikro Ağ Geçidi başarıyla işlenmiştir. API çağrısı. Bununla birlikte, Edge Microgateway, kimlik doğrulama için varsayılan olarak bir API anahtarı gerektirir. Sonraki bölümde, API'yi geçerli bir API anahtarıyla test edeceksiniz.
Geçerli bir API anahtarıyla API'yi test etme
Edge kullanıcı arayüzünde, daha önce oluşturduğunuz Geliştirici Uygulaması'na gidin. Geliştirici Uygulama sayfasında Tüketici Anahtarı'nı gösterip kopyalayın. Bu değer API anahtarıdır. Şunu kullanacağınız: kimlik doğrulaması yapılmış API çağrıları yapmak için bu anahtarı kullanır.
x-api-key
başlığıyla aşağıdaki gibi API'yi çağırın. Tüketici Anahtarı değeri
API anahtarıdır. Varsayılan olarak Edge Mikro Ağ Geçidi
anahtarı x-api-key
adlı bir üstbilgide iletmenizi bekler:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
Örneğin:
curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"
Edge Microgateway üzerinden kimliği doğrulanmış API çağrıları yapma hakkında daha fazla bilgi edinmek istiyorsanız 4. Bölüm: Güvenli Uç Mikro Ağ Geçidi'ne göz atın.
Edge Mikro Ağ Geçidi Durduruluyor
Edge Microgateway'i durdurmak için aşağıdaki Docker komutunu kullanın:
docker stop edgemicro
Edge Mikro Ağ Geçidi Yeniden Başlatılıyor
Edge Microgateway'i durdurduktan sonra şu Docker komutuyla yeniden başlatabilirsiniz:
docker start edgemicro
Docker container'ında TLS kullanma
Bu bölümde, çalışan Edge Mikro Ağ Geçidi için TLS'nin nasıl yapılandırılacağı açıklanmaktadır inceleyebilirsiniz. Edge Mikro Ağ Geçidi sunucusunu TLS kullanacak şekilde yapılandırabilirsiniz tıklayın (kuzey yönlü yön) tıklayın ve Edge'i yapılandırabilirsiniz. Uç noktalara giden istekler için TLS istemcisi olacak mikro ağ geçidi (güneye doğru).
Sertifika dosyaları nereye yerleştirilir?
Edge Microgateway'i çalıştıran Docker container'ının /opt/apigee/.edgemicro
üzerinde ekleme noktası var.
TLS sertifikalarını kullanacak şekilde Edge Microgateway'i yapılandırdığınızda
bağlantı noktasında mevcut sertifika dosyalarını da kullanabilir ve
Edge Microgateway yapılandırma dosyasıdır. Bu yapılandırma dosyası genellikle $HOME/.edgemicro
konumunda bulunur
olup your_org-your_env-config.yaml
olarak adlandırılır.
Örneğin:
...
edgemicro:
ssl:
key: /opt/apigee/.edgemicro/southbound/tls.key
cert: /opt/apigee/.edgemicro/southbound/tls.crt
...
Node.js tarafından güvenilmeyen bir CA kullanma
Proje yöneticisi tarafından varsayılan olarak güvenilmeyen bir Sertifika Yetkilisi (CA)
Node.js (kendinden imzalı bir sertifikada olduğu gibi)
Kapsayıcıyı çalıştırdığınızda NODE_EXTRA_CA_CERTS
parametresini kullanın.
Bu parametreyi, bir veya daha fazla öğe içeren bir dosyanın yolu olarak belirleyin Güvenilir sertifikaları PEM biçiminde sunar. Bu parametrenin nasıl kullanıldığını görmek için örnekler Kuzeye giden TLS'yi yapılandırma ve Güneye giden TLS'yi yapılandırma.
Örneğin:
chown -R 100:101 ~/.edgemicro/ \
docker run -P -p 8443:8443 -d --name edgemicro \
-v $HOME/.edgemicro:/opt/apigee/.edgemicro \
-v $HOME/.edgemicro:/opt/apigee/logs \
-e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \
-e EDGEMICRO_PORT=8443 \
-e EDGEMICRO_ORG=docs \
-e EDGEMICRO_ENV=test \
-e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
-e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
--link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
Ayrıca bkz. Edge Micro'yı Docker container'ı olarak çalıştırma.
TLS doğrulamasını devre dışı bırakma
Önerilmese de, bazı durumlarda TLS doğrulamasını devre dışı bırakmak isteyebilirsiniz bir container'da çalışan Edge Microgateway'dir. TLS'yi devre dışı bırakma özelliği varsayılan olarak Edge Microgateway Docker container'ına dahil edilmemiştir. Şu hedeflere ulaşmak için: Edge Microgateway için özelleştirilmiş bir Docker görüntüsü oluşturmanız gerekir. Şunun altında: özel görüntü oluşturmaya ve TLS doğrulamasını devre dışı bırakmaya ilişkin genel talimatlardır.
Edge Microgateway kaynak deposunu klonlayın veya şuradan indirin:
https://github.com/apigee-internal/microgateway
Kaynak kodu dizinindeki
microgateway/kubernetes/docker/edgemicro
dizininecd
.Örneğin:
cd $HOME/git/microgateway/kubernetes/docker/edgemicro
entrypoint.sh
dosyasını açın ve kodu,NODE_TLS_REJECT_UNAUTHORIZED
koşullarını kabul edecek şekilde değiştirin. ortam değişkeni Daha sonra, kapsayıcıyı çalıştırdığınızda bu kapsayıcı için bir değer değişkenine eklenmelidir.Docker container'ını oluşturun:
docker build -t edgemicro .
Kapsayıcıyı çalıştırırken
-e NODE_TLS_REJECT_UNAUTHORIZED = 1
seçeneğini belirtin. Örneğin:
chown -R 100:101 ~/.edgemicro/ \
docker run -P -p 8443:8443 -d --name edgemicro \
-v $HOME/.edgemicro:/opt/apigee/.edgemicro \
-v $HOME/.edgemicro:/opt/apigee/logs \
-e NODE_TLS_REJECT_UNAUTHORIZED = 1 \
-e EDGEMICRO_PORT=8443 \
-e EDGEMICRO_ORG=docs \
-e EDGEMICRO_ENV=test \
-e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
-e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
--link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
Örnek: Kuzeye giden TLS nasıl yapılandırılır?
Bu bölümde, Edge Mikro Ağ Geçidi üzerinde kuzeye giden (gelen) bir TLS bağlantısının nasıl kurulacağı açıklanmaktadır sunucu. Northbound TLS, istemcilerin Edge Microgateway'e API çağrıları yaparken HTTPS kullanmasına olanak tanır. Aşağıdaki örnekte kendinden imzalı sertifikalar kullanılmaktadır.
1. Başlangıçta kurulum adımları
- Sisteminizde
openssl.cnf
dosyasını bulun. Örneğin,/etc/ssl/openssl.cnf
. - Düzenlemek için
opensssl.cnf
dosyasını açın. Yapılandırma dosyanızda
req_extensions
bulunduğundan emin olun. Örneğin, dosyanızda aşağıdakine benzer bilgiler bulunmalıdır:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
Doğru SNI özelliklerini oluşturmak için
openssl.cnf
öğesine şu dizeyi ekleyin:[ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1
Örnek
opensssl.cnf
dosyası:[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1
İlk kullanıma hazırlamanızı ve kullanmaya başlamak için Ön koşullar bölümünde verilen adımları Henüz yapmadıysanız Edge Microgateway'i yapılandırın. İşlem tamamlandığında bir API ürünü, geliştirici veya bir API ürünü oluşturmuş olması gerekir. ve Geliştirici Uygulaması. Ayrıca,
edgemicro configure
komutunu çalıştırmanız gerekir. bir anahtar ile gizli bilgi aldı.
2. Kendinden imzalı sertifikalar oluşturma
Ardından, TLS'yi oluşturmak için ihtiyaç duyacağınız sertifikaları ve anahtarları oluşturun:
$HOME/.edgemicro
dizininecd
.Aşağıdaki bash komut dosyasını oluşturun. Onu istediğiniz gibi adlandırabilirsiniz. Örnek:
keygen.sh
#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
Bash dosyasında,
openssl.cnf
dosyasının yolunun doğru olduğundan emin olun.Bash dosyasını yürütün. Sertifika bilgileri girmeniz istenecektir. Şunu kullandığınıza emin olun: Ortak Ad için
localhost
.Aşağıdaki dosyaların oluşturulup oluşturulmadığını kontrol edin:
rootca.key
rootca.pem
tls.key
tls.csr
rootca.srl
tls.crt
3. Edge Microgateway yapılandırma dosyasını düzenleyin
Edge Micro yapılandırma dosyasını bir düzenleyicide açın. Örneğin:
vi $HOME/.edgemicro/myorg-test-config.yaml
edgemicro
dizeyi aşağıdaki gibi düzenleyin. Değişiklik yapmakta olduğunuzu unutmayınport
vessl
özelliklerine:edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...
Edge Microgateway yapılandırma dosyasını base64 olarak kodlamak için aşağıdaki komutu yürütün
$HOME/.edgemicro
konumunda bulunuyor:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Burada
your_org
veyour_env
,edgemicro config
komutunu çalıştırdı.Komutun etrafına vurgu işareti (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Ayrıca bkz. Edge Micro'yı Docker container'ı olarak çalıştırma.
4. Kapsayıcıyı çalıştırın
Docker container'ını Edge Microgateway ile çalıştırmak için aşağıdaki komutu yürütün:
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ gcr.io/apigee-microgateway/edgemicro:latest
Komutta kullanılan aşağıdaki parametreleri not edin: temel ilkelerden farklıdırlar komutuna eklemek için Edge Micro'yı Docker container'ı olarak çalıştırma başlıklı makaleye bakın.
port
,8443
olarak ayarlandı.- Anahtar ve sertifika dosyalarını eklemek için birim bağlantısı kullanılır.
NODE_EXTRA_CA_CERTS
değişkeni, özel bir CA eklemek için kullanılır (durumda gerektiği gibi kullanılabilir.
5. TLS yapılandırmasını test etme
Kurulumu test etmek için aşağıdaki cURL komutunu yürütün. Vekil Basepath ve API anahtarınızı komuta ekleyin. Aşağıdaki örnekte, aşağıdaki örnekte gösterildiği dizinde olduğunuz varsayılmaktadır:
rootca.pem
bulundu ve oluşturduğunuz proxy/hello
temel yoluna sahip:curl -v https://localhost:8443/hello --cacert rootca.pem \ -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
Ayrıntılı cURL çıkışı, TLS el sıkışma. HTTP 200 yanıtı görüyorsanız yapılandırma başarılı olmuş demektir:
* Trying ::1...ey:Az82fdnfONVCOOE4NKhajxAboDgA3FAo" * TCP_NODELAY set * Connected to localhost (::1) port 8443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: rootca.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use http/1.1 * Server certificate: * subject: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * start date: Dec 14 22:35:28 2018 GMT * expire date: Oct 3 22:35:28 2021 GMT * common name: localhost (matched) * issuer: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * SSL certificate verify ok. > GET /hello HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key:Az82fdnfaONVCOE4NKhajxAboDA3FAo > < HTTP/1.1 200 OK < x-powered-by: Apigee < access-control-allow-origin: * < x-frame-options: ALLOW-FROM RESOURCE-URL < x-xss-protection: 1 < x-content-type-options: nosniff < content-type: text/plain; charset=utf-8 < etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw" < date: Fri, 14 Dec 2018 22:43:13 GMT < via: 1.1 google < alt-svc: clear < x-response-time: 1325 < Connection: keep-alive < Transfer-Encoding: chunked < * Connection #0 to host localhost left intact Hello, Guest!
Örnek: Güneye giden TLS nasıl yapılandırılır?
Bu bölümde, Google Analytics 4 ile izlenen Edge Microgateway sunucusu ve arka uç hedef uygulamasıdır. Aşağıdaki örnekte kendinden imzalı sertifikalar.
1. İlk kurulum adımları
- Sisteminizde
openssl.cnf
dosyasını bulun. Örneğin,/etc/ssl/openssl.cnf
. - Düzenlemek için
opensssl.cnf
dosyasını açın. Yapılandırma dosyanızda
req_extensions
bulunduğundan emin olun. Örneğin, dosyanızda aşağıdakine benzer bilgiler bulunmalıdır:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
Doğru SNI özelliklerini oluşturmak için
openssl.cnf
öğesine şu dizeyi ekleyin:[ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1
Örnek
opensssl.cnf
dosyası:[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1
edgemicro configure
komutunu çalıştırın:edgemicro configure -o your_org -e your_env -u your_username
Yapılandırma hakkında daha fazla bilgi edinmek için 1. Bölüm: Edge Mikro Ağ Geçidini Yapılandırma bölümüne bakın.
Şuradan döndürülen anahtar ve gizli kimlik bilgilerini kopyalayın:
edgemicro configure
Kapsayıcıyı çalıştırmak için bu değerlere ihtiyacınız olacaktır. Örneğin:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
2. Node.js hedef uygulaması oluşturma
.edgemicro
dizininecd
.Aşağıdaki bash komut dosyasını oluşturun. Onu istediğiniz gibi adlandırabilirsiniz. Örnek:
keygen.sh
#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
Bash dosyasında,
openssl.cnf
dosyasının yolunun doğru olduğundan emin olun.Bash dosyasını yürütün. Sertifika bilgileri girmeniz istenecektir. Şunu kullandığınıza emin olun: Ortak Ad için
hellworld
.Aşağıdaki dosyaların oluşturulup oluşturulmadığını kontrol edin:
rootca.key
rootca.pem
tls.key
tls.csr
rootca.srl
tls.crt
server.js
adlı yeni bir dosya oluşturun.'use strict'; const express = require('express'); const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync("tls.key"), cert: fs.readFileSync("tls.crt") }; // Constants const PORT = 9443; const HOST = '0.0.0.0'; // App const app = express(); app.get('/', (req, res) => { res.send('Hello world\n'); }); https.createServer(options, app).listen(PORT);
server.js
ile aynı dizinde birpackage.json
dosyası oluşturun. Örneğin:{ "name": "helloworld", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.16.4", "fs": "0.0.1-security", "https": "^1.0.0" } }
Bağımlılıkları almak için
npm install
komutunu çalıştırın.server.js
ile aynı dizinde (WORKDIR
) yeni bir Dockerfile oluşturun. Node.js uygulamanızın köküdür:FROM node:8-alpine WORKDIR path-to-your-node-app COPY package*.json ./ RUN npm install COPY . . EXPOSE 9443 CMD [ "npm", "start" ]
Docker görüntüsünü oluşturun:
docker build -t helloworld .
Örnek uygulamayı başlatın:
docker run -P -p 9443:9443 --name helloworld helloworld
3. Apigee Edge'de varlık oluşturun
Bu ayarlarla Edge Mikro Ağ Geçidi duyarlı bir proxy oluşturun. Daha fazla bilgi için Edge'de Edge Mikro Ağ Geçidi Uyumlu API proxy'si oluşturma başlıklı makaleyi inceleyin.
- Proxy adı:
edgemicro_local
- Düzeltme:
1
- Temel yol:
/local
- Hedef:
https://helloworld:9443
- Proxy adı:
Bir API ürünü oluşturun. Ayrıntılar için Ürün oluşturma başlıklı makaleyi inceleyin.
Geliştirici oluşturun. Ayrıntılar için Geliştirici oluşturma konusuna bakın.
Geliştirici uygulaması oluşturun. Ayrıntılar için Geliştirici uygulaması oluşturma konusuna bakın
4. Kapsayıcıyı çalıştırın
Edge Micro yapılandırma dosyasını bir düzenleyicide açın. Örneğin:
vi $HOME/.edgemicro/myorg-test-config.yaml
edgemicro
dizeyi aşağıdaki gibi düzenleyin. Değişiklik yapmakta olduğunuzu unutmayınport
vessl
özelliklerine:edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...
$HOME/.edgemicro
konumunda bulunan Edge Microgateway yapılandırma dosyasının base64 kodlamasını yapmak için aşağıdaki komutu yürütün:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Burada
your_org
veyour_env
,edgemicro config
komutunu çalıştırdı.Komutun etrafına vurgu işareti (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Docker container'ında Edge Microgateway'i başlatmak için aşağıdaki komutu çalıştırın.
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
5. TLS yapılandırmasını test etme
Kurulumu test etmek için aşağıdaki cURL komutunu yürütün. Vekil mikro ağ geçidine duyarlı proxy'de kullandığınız temel yolunuz ve Apigee Edge'de oluşturduğunuz geliştirici uygulamasından alınan API anahtarı. Örneğin:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
Şu hatayı görürsünüz:
... * subject: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * start date: Dec 10 02:12:22 2018 GMT * expire date: Sep 29 02:12:22 2021 GMT * issuer: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway. > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 502 Bad Gateway < Date: Wed, 12 Dec 2018 05:25:01 GMT < Connection: keep-alive < Content-Length: 93 < * Connection #0 to host localhost left intact {"message":"unable to verify the first certificate","code":"UNABLE_TO_VERIFY_LEAF_SIGNATURE"}
Edge Microgateway'i yeniden çalıştırın ancak bu kez
NODE_EXTRA_CA_CERTS
değişkenini ekleyin.chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
Aşağıdaki cURL komutunu yürütün. Vekil temel yolunuz ve API anahtarınız eskisi gibi. Örneğin:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
Çıkışı kontrol edin. İşlem başarılı olursa HTTP 200 durum yanıtı alırsınız:
... > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 200 OK < x-powered-by: Express < content-type: text/html; charset=utf-8 < etag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0" < date: Wed, 12 Dec 2018 05:49:28 GMT < x-response-time: 421 < Connection: keep-alive < Transfer-Encoding: chunked < Hello world
Özel eklenti ekleme
Özel etiketler yazarak mikro ağ geçidine yeni özellikler ve yetenekler ekleyebilirsiniz: ekleyebilirsiniz. Özel eklentiler, isteklerle programlı bir şekilde etkileşimde bulunmanıza olanak tanır. ve yanıtlarla mikro ağ geçidinden geçtiğini düşünelim.
Eklentileri Edge Mikro Ağ Geçidi'ne dağıtmak için iki seçeneğiniz vardır Docker container'ında çalışan bir örnektir:
Bu bölümün geri kalanında, bildiğinizi belirtmelisiniz. eklentilerine sahip olması gerekir. Yoksa Özel eklentiler geliştirme başlıklı makaleye bakın.
Seçenek A: Eklenti dizinini bir birime ekleme
(Sürüm 2.5.27'de eklendi) Birim bağlantısı aracılığıyla eklenti ekleme adımları şunlardır:
Edge Microgateway'e özel eklenti eklemek için gereken adımlara benzer. Zaman
Docker container'ı çalıştırdığınızda, eklenti dizinini yerel tarayıcınıza ekleyebilirsiniz
/opt/apigee/plugins
olan container ekleme noktasında sistem (hacim) değerini alır.
Ardından Edge Microgateway yapılandırma dosyasında yerel birim dizinini belirtirsiniz.
Aşağıdaki adımlar, özel boyut eklemek için Docker ekleme noktasının nasıl kullanılacağını ekleyebilirsiniz.
Edge Mikro Ağ Geçidi'ni durdurun:
edgemicro stop
Özel eklentileriniz için bir dizin oluşturun. Örneğin,
$HOME/edgemicro/custom/plugins
Özel eklenti dizinini Edge Microgateway yapılandırma dosyasına ekleyin. Örneğin:
plugins: dir: $HOME/edgemicro/custom/plugins sequence: - oauth - response-uppercase ````
Eklentinizi Basit bir eklenti yazma başlıklı makaledeki talimatlara göre yazın ve test edin. Şunları yaptığınızdan emin olun: eklenti kodunuzu doğru dizin yapısına yerleştirin. Örneğin:
custom | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
Docker container'ı aşağıdakine benzer bir komutla çalıştırın. Eklenti dizinini Docker birimine eklemek için
-v
seçeneğini kullanın. aşağıdaki örnek komut, eklenti dizini:$HOME/edgemicro/custom/plugins
(özel eklentinin bulunduğu yer) kapsayıcının ekleme noktası (/opt/apigee/plugins
) ile eşlenir:chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -v $HOME/edgemicro/custom/plugins:/opt/apigee/plugins \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=jdoe \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=39c4b561100cd7f258768d1072f3e1d7c17b5f36a18fe89972bb5c9ce7e58fb \ -e EDGEMICRO_SECRET=f5f9e239a38b4e6cc99c2aa067716a84aebdcff9580a7925fc500e402b1a5fa \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL gcr.io/apigee-microgateway/edgemicro:latest
Eklentiyi test etmek için API'nizi çağırın.
Daha fazla bilgi için VOLUME [paylaşılan dosya sistemleri] bölümüne bakın.
Seçenek B: Eklentileri kapsayıcıda derleme
Bu seçenekte, eklentileri kapsayıcınızda oluşturursunuz.
1. Eklentilerinizi paketleyin
Eklentinizi Basit bir eklenti yazma başlıklı makaledeki talimatlara göre yazın ve test edin.
Eklenti kodunuzu doğru dizin yapısına yerleştirin. Eklenti dizinleri belirli bir yapıya uygun olmalıdır. Aşağıdaki örnekte takip etmeniz gereken yapı gösterilmektedir. Burada
response-uppercase
verequest-headers
, izlemeniz gereken yapıyı ifade etmektedir özel eklenti kodu içeren klasörlerin adları (bu adlar yalnızca örnektir, klasör adlarınız farklı olabilir):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
plugin
klasörünecd
.plugin
klasöründeplugins
klasörünün tamamını sıkıştırın:zip -r plugins.zip plugins/
2. Docker görüntüsü oluşturma
Ardından, eklenti kodunuzu Edge Microgateway görüntüsüne eklemek için bir Dockerfile oluşturun.
- ZIP dosyasının bulunduğu dizinde,
Dockerfile
adında yeni bir dosya oluşturun. Şu kodu
Dockerfile
içine ekleyin ve dosyayı kaydedin:USER root RUN apk update && \ apk upgrade && \ apk add zipapk add zip && \ mkdir /opt/apigee/customplugins && \ chown apigee:apigee /opt/apigee/customplugins COPY plugins.zip /opt/apigee/customplugins RUN su - apigee -c "unzip /opt/apigee/customplugins/plugins.zip -d /opt/apigee/customplugins" EXPOSE 8000 EXPOSE 8443 USER apigee ENTRYPOINT ["entrypoint"]
Eklentilerinizle yeni bir Edge Microgateway Docker görüntüsü oluşturun:
docker build -t image-name .
Örneğin:
docker build -t edgemicroplugins .
3. Edge Microgateway yapılandırmasını güncelleme
Eklentiler paketlendiğine göre şimdi Edge Mikro Ağ Geçidi'ne eklemeniz gerekiyor. yapılandırma dosyası.
Edge Microgateway yapılandırma dosyasını bir düzenleyicide açın:
$HOME/.edgemicro/org-env-config.yaml
Örneğin:
vi $HOME/.edgemicro/myorg-test-config.yaml
Eklenti dizinini yapılandırma dosyasına ekleyin. Aşağıdaki örnekte
dir
özelliği, eklenti kodunun ( inceleyebilirsiniz. Ayrıca, eklenti dizininin adını da belirtmelisiniz. Bu ad, aşağıdaki örnekteresponse-uppercase
geçerlidir.edgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
4. Mikro ağ geçidini başlatma
Son olarak, container'da mikro ağ geçidini başlatmanız gerekir.
Edge Microgateway yapılandırma dosyasını base64 olarak kodlamak için aşağıdaki komutu çalıştırın
$HOME/.edgemicro
konumunda bulunuyor:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
Burada
your_org
veyour_env
,edgemicro config
komutunu çalıştırdı.Komutun etrafına vurgu işareti (`) yerleştirmeyi unutmayın. Örneğin:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
Edge Microgateway'i container olarak çalıştırın. Bu komut, çeşitli ortam değişkenlerini ayarlar Edge Microgateway'i başlatmak için container çalışma zamanı tarafından kullanılan anahtar kelimeleri kullanabilirsiniz:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins image_name
Örneğin:
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins edgemicroplugins
Eklentiyi test etmek için API'nizi çağırın:
API'nizi çağırarak ve çıktısı aşağıdaki gibidir:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
Örneğin,
response-uppercase
eklentisi aşağıdaki gibi bir yanıt döndürebilir:curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz" HELLO, WORLD!