Acontece que você não pode usar subdomínios multiníveis com ssl no plano gratuito
Eu tenho uma infraestrutura docker que consiste em
1 proxy reverso nginx 1 servidor da web nginx 1 servidor php7.0 fpm
tanto o proxy reverso nginx como o servidor web estão usando a mesma imagem docker mas apenas carregada com confs de site diferentes.
No proxy reverso, ele também serve um SPA de javascript estático, além de reverter o proxy para o servidor da Web que serve a minha API.
para que ambos os contêineres nginx estejam executando o mesmo /etc/nginx/nginx.conf
minhas configurações ssl estão aqui
##
# SSL Settings
##
ssl_stapling off;
ssl_session_timeout 1h;
ssl_session_tickets off;
ssl_stapling_verify off;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
ssl_certificate /srv/ssl/nginx-selfsigned.crt;
ssl_certificate_key /srv/ssl/nginx-selfsigned.key;
ssl_dhparam /srv/ssl/dhparam.pem;
minha configuração do site para o proxy reverso é assim
server {
listen 1025 ssl http2;
listen [::]:1025 ssl http2;
server_name api.site.com;
location / {
#include /etc/nginx/naxsi.rules;
proxy_pass https://td-api:1025;
proxy_buffering on;
proxy_buffers 256 16k;
proxy_buffer_size 128k;
proxy_read_timeout 300;
proxy_intercept_errors on;
proxy_max_temp_file_size 0;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_set_header Host $host;
proxy_set_header Accept-Encoding "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
minha configuração do site para o spa é
server {
listen 1025 ssl http2;
listen [::]:1025 ssl http2;
server_name site.network;
root /srv/agentfree-client/dist;
limit_conn addr 10;
limit_req zone=one burst=15 nodelay;
index index.html;
autoindex off;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.html break;
}
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
minha configuração nginx para o servidor da web da API é
server {
listen 1025 ssl http2 default_server;
listen [::]:1025 ssl http2 default_server;
index index.php;
root /srv/www/public;
server_name api.site.com;
limit_conn addr 10;
limit_req zone=one burst=15 nodelay;
location / {
#include /etc/nginx/naxsi.rules;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass td-api-fpm:9000;
}
}
meu ssl é auto-assinado e gerado como seguido
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /srv/ssl/nginx-selfsigned.key -out /srv/ssl/nginx-selfsigned.crt
openssl dhparam -out /srv/ssl/dhparam.pem 2048
na frente disso, eu executo o cloudflare ssl no modo completo com o tls1.3 beta desativado
Quando eu carrego o site estático, recebo meu site e um https verde agradável no chrome
quando tento e clico em uma rota na minha API, sou apresentado com esse erro
This site can’t provide a secure connection
api.site.com uses an unsupported protocol. ERR_SSL_VERSION_OR_CIPHER_MISMATCH HIDE DETAILS Unsupported protocol The client and server don't support a common SSL protocol version or cipher suite.
Im no ubuntu 16.10, e os contêineres docker executam 16.10 im obtendo isso no chrome 57.0.2987.110 (Build oficial) (64 bits) Eu também testei no firefox na mesma máquina e ipad.
Se eu ignorar o cloudflare para a URL da api, meu site carrega, embora com o aviso ssl auto-assinado.
Alguém pode explicar por que isso está acontecendo, estou executando essa configuração exata para vários aplicativos sem nenhum problema, mas esse servidor de API está me deixando louco
Tags ssl nginx docker https cloudflare