Estoy tratando de hacer un proxy inverso de un servidor http a través de nginx. El servicio está escuchando en el puerto 8123 y quiero enviarlo por proxy al 443. Creé un certificado autofirmado como este:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365Aquí está la configuración completa de nginx:
events { worker_connections 768; } http { server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /home/mcmsadm/cert.pem; ssl_certificate_key /home/mcmsadm/key.pem; location / { proxy_pass http://localhost:8123; } } }Cuando intento conectarme al servidor usando Firefox, dice PR_END_OF_FILE_ERROR.
¿Qué estoy haciendo mal? ¡Gracias!
EDITAR: encontré el mensaje de error de nginx en los registros (no lo pensé):
SSL_CTX_use_PrivateKey_file("/home/mcmsadm/key.pem") failed (SSL: error:2807106B:UI routines:UI_process:processing error:while reading strings error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0907B068:PEM routines:PEM_read_bio_PrivateKey:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib) Creé el certificado con una contraseña, pero nginx lo solicita cuando lo reinicio a través de nginx -s reload . Para resolver esto temporalmente, escribí la contraseña en un archivo y agregué esta línea a mi nginx.conf :
ssl_password_file /etc/nginx/pass;¿Hay alguna forma de evitar escribir la contraseña en un archivo?
Para cualquier otra persona con este problema ... también puede suceder si olvidó agregar ssl a las directivas de escucha. Chrome muestra ERR_SSL_PROTOCOL_ERROR mientras que Firefox muestra PR_END_OF_FILE_ERROR .
server { listen 443 ssl http2; listen [::]:443 ssl http2; ... }El error a menudo no está relacionado con el navegador. En nuestro caso tampoco fue una configuración de nginx, sino una configuración incorrecta del firewall. Entonces, lógicamente, cuando digo que a menudo no tiene nada que ver con el navegador, del lado del servidor y no del lado del cliente. En consecuencia, no era un proxy o VPN.
Nota para mí :-d
Falta la configuración de default_server (con ssl o/y sin ssl) en una de las definiciones de host virtual, así:
server { listen 80 default_server; listen 443 default_server; ...