Creé un balanceador de carga en GCP para usar HTTPS para reenviarlo al grupo de back-end de HTTPS. He configurado la Instancia para usar HTTPS mediante la creación de un certificado en la instancia y cuando curvo desde la propia instancia obtengo lo siguiente
curl https://localhost curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above. root@instance:/var/log/apache2# curl https://localhost -k <WebPage content>Revisé la documentación de GCP sobre Cifrado desde el balanceador de carga hasta los backends y configuré el backend y la verificación de estado como se indicó.
Sin embargo, la verificación de estado muestra UNHEALTHY, y el registro de verificación de salud muestra
healthCheckProbeResult: { connectLatency: "0.000651s" detailedHealthState: "TIMEOUT" healthCheckProtocol: "HTTPS" healthState: "UNHEALTHY" ipAddress: "10.8.1.4" previousDetailedHealthState: "UNKNOWN" previousHealthState: "UNHEALTHY" probeCompletionTimestamp: "2021-08-11T07:46:06.973978919Z" probeRequest: "/user" probeResultText: "HTTP response: , Error: Protocol error" probeSourceIp: "35.191.1.154" responseLatency: "0.002054s" targetIp: "<internal IP>" targetPort: 443 }Cuando solo uso HTTP, al cambiar las configuraciones de apache y backend, el sitio funciona bien.
No puedo depurar cuál es el problema real aquí.
Quiero que haya encriptación entre el balanceador de carga y el backend. Así que cualquier otro método será bienvenido.
El error de verificación de estado es TIMEOUT . Esto significa que su backend aceptó una conexión en el puerto 443.
Su pregunta no detalla cómo Apache/Nginx? está configurado.
Compruebe que ha configurado un puerto de escucha 443 en su servidor web.
Compruebe si ha habilitado una regla de firewall de VPC para el puerto 443.
La regla de firewall de VPC predeterminada default-all-https permite el tráfico en el puerto 443. Opcionalmente, puede aplicar la etiqueta de red denominada https-server a la instancia de VM.
Siempre que el servicio web backend se esté ejecutando y escuchando en el puerto 443, el siguiente comando habilitará la regla de firewall predeterminada para el puerto HTTPS 443.
Aplica la etiqueta de red del servidor https a una instancia de VM de Compute Engine:
gcloud compute instances add-tags [INSTANCE_NAME] \ --zone [INSTANCE_ZONE] \ --tags="https-server"Enumera tus instancias de VM de Compute Engine y revisa las etiquetas:
gcloud compute instances list --format="table(name,status,tags.list())"Nota: Los pasos anteriores son buenos para la depuración. Sin embargo, eso permitirá que todo Internet se conecte a su backend. Una mejor solución es crear una regla de cortafuegos que solo permita el tráfico desde el balanceador de carga y el servicio de verificación de estado. Las direcciones a permitir son:
El siguiente comando creará una regla de firewall de VPC que permitirá que todas las instancias reciban tráfico de los servicios de Google Cloud Load Balancers y Health Check. Esta regla se puede ajustar para asignarla a instancias específicas:
gcloud compute firewall-rules create "lb-rule" --allow=tcp:80,tcp:443 \ --source-ranges="10.0.0.0/22,10.0.0.0/14" \ --source-ranges="130.211.0.0/22,35.191.0.0/16" \ --description="Allow traffic from load balancer and health check services"