के साथ एपी गेटवे कनेक्शन मैं लोचदार बीनस्टॉक में एपी गेटवे को अपने एपीआई से जोड़ने की कोशिश कर रहा हूं। मैं एपी गेटवे द्वारा केवल एपीआई को एक्सेसिबल करना चाहता हूं और इसके लिए मैं बैकएंड में क्लाइंट-साइड एसएसएल प्रमाणपत्र प्राधिकरण का उपयोग करता हूं (जैसे प्रकाशन प्रकाशन: http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/getting-started-client-side-ssl-authentication.html)। है nginx और रूबीलोचदार बीनस्टॉक (क्लाइंट-साइड एसएसएल सर्टिफिकेट)
एपीआई GATEWAY-> लचीला लोड BALANCER-> EC2 (लोचदार बीनस्टॉक)
मेरे EC2 मशीन: तो मेरी arquitecture इस तरह है।
कनेक्शन इस तरह काम करते हैं:
एपीआई गेटवे -> (80 पोर्ट) -> लचीला लोड बैलेंसर -> (443 पोर्ट) -> nginx -> रूबी
मैं में ग्राहक प्रमाणन कर रहा हूँ nginx। जब मैं ब्राउज़र का उपयोग करके लोचदार लोड बैलेंसर तक पहुंचता हूं, तो यह 400 खराब अनुरोध दिखाता है - एनजीआईएनएक्स त्रुटि: कोई आवश्यक SSL प्रमाणपत्र नहीं भेजा गया था (यह सही है क्योंकि मैं प्रमाणपत्र नहीं भेज रहा हूं)। लेकिन जब मैं एपी गेटवे का उपयोग करके और क्लाइंट सर्टिफिकेट भेजता हूं तो मुझे एक ही त्रुटि मिलती है (मुझे समझ में नहीं आता क्यों)।
जब मैं nginx में SSL कनेक्शन कॉन्फ़िगर करते हैं, मैं मेरे द्वारा हस्ताक्षर किए गए (शायद इस समस्या है?) SSL प्रमाणपत्र मेरी समस्या के लिए
अन्य posible के कारण है लचीला लोड बैलेंसर में बंदरगाह विन्यास (में उपयोग कर रहा हूँ चित्र)। मेरे पास बैकएंड प्रमाणीकरण है: अक्षम। क्या ये एक दिक्कत है? Pictura Port Config ELB
मेरे nginx विन्यास है:
upstream my_app {
server unix:///var/run/puma/my_app.sock;
}
log_format healthd '$msec"$uri"'
'$status"$request_time"$upstream_response_time"'
'$http_x_forwarded_for';
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name localhost;
root /usr/share/nginx/html;
ssl on;
ssl_certificate /etc/nginx/ssl/dev.crt;
ssl_certificate_key /etc/nginx/ssl/dev.key;
ssl_trusted_certificate /etc/nginx/ssl/api-gateway.pem;
ssl_client_certificate /etc/nginx/ssl/api-gateway.pem;
ssl_verify_client on;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
if ($ssl_client_verify = FAILED) {
return 495;
}
if ($ssl_client_verify = NONE) {
return 402;
}
if ($ssl_client_verify != SUCCESS) {
return 403;
}
try_files $uri/index.html $uri @my_app;
location @my_app {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header Client-IP $remote_addr;
proxy_pass http://my_app;
proxy_set_header X-Client-Verify $ssl_client_verify;
}
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location/{
proxy_pass http://my_app; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header gonzalo1 $ssl_client_verify;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
डॉक लिंक एपीआई जीटीडब्ल्यू को क्लाइंट सर्टिफ के साथ कॉल करने के बारे में है जो आपके बीनस्टॉक को एपी जीटीडब्ल्यू क्लाइंट सर्टिफ के साथ कॉल करने के बारे में नहीं है। क्या मुझे कुछ याद आया? आप जानते हैं कि एपी जीटीडब्ल्यू क्लाइंट सर्टिफिकेट एपी जीटीडब्ल्यू को एपी जीटीडब्ल्यू के साथ दूसरी बात नहीं बुलाए जाने के लिए यहां हैं! – fsenart
@fsenart, जो मैं समझता हूं, उसके अनुसार प्रमाण पत्र एपी गेटवे से पीछे के अंत तक कॉल करने के लिए है, और प्रमाण पत्र के साथ पिछला अंत यह स्वीकार कर सकता है कि अनुरोध एपी गेटवे से है। लिंक के पहले पैराग्राफ में बहुत स्पष्ट है। –
नहीं, @fsenart, क्लाइंट प्रमाणपत्र का उपयोग एपीआई गेटवे द्वारा ऐप सर्वर पर प्रमाणित करने के लिए किया जाता है। –