2016-07-08 21 views
1

的/ etc/nginx的/啓用的站點 - /默認EC2(Ubuntu的使用Nginx的)配置電話使用客戶端證書

server { 
    listen 80 default_server; 
    root /var/www/example; 
    index index.php; 
    server_name localhost; 

    location/{ 
     try_files $uri/ /index.php 
    } 
    ... 
} 

這一切正常。我沒有在該實例上安裝SSL。除了來自AWS API-Gateway的調用外,我想阻止訪問我的API(分發到多個EC2實例)。我下創建API網關控制檯(.PEM)的客戶端證書,並添加以下到nginx的配置:

server { 
    listen 443; 
    ssl on; 
    ssl_client_certificate /etc/nginx/ssl/cert.pem; 
    ssl_trusted_certificate /etc/nginx/ssl/cert.pem; 
    ssl_verify_client on; 

    root /var/www/example 
    index index.php; 
    server_name localhost; 

    location/{ 
     try_files $uri /index.php 
    } 

    ... 
} 

錯誤日誌說:「沒有ssl_certificate在/ etc爲‘SSL’指令定義/ nginx/sites-enabled/default:24'。好,可以。我嘗試了nginx文檔中的其他一些技巧,但沒有運氣。那麼繞過認證並添加if-then到nginx config只接受來自API網關的流量呢?如何做呢?在你看來,最好的方式是在不需要SSL的情況下做到這一點。

回答

-1

由於您使用客戶端證書來保護您的端點,因此API網關需要HTTPs協議。 API網關服務不信任任何沒有有效證書的集成端點。此外,還有一個關於how to setup Client side certificate auth in Nginx的非常明確的文檔。你可能也想看看。

+1

自簽名證書不適用於Aws Api網關服務。 [link](http://stackoverflow.com/questions/32828670/client-certificates-with-aws-api-gateway)陳述「...截至2015年9月28日,aws api網關需要一個由a可信認證機構「 – evansgambit