[Resuelto] [Pregunta]: Saber si hay un certificado SSL en mi pagina web

Iniciado por Leguim, 16 Enero 2020, 18:31 PM

0 Miembros y 2 Visitantes están viendo este tema.

Leguim

Buenos días,

¿Como puedo saber si mi aplicación web cuenta con un certificado SSL? y ¿Como puedo saber si un usuario está usando el protocolo HTTP?

Para meterlos un poco en contexto estoy tratando de hacer un pequeño algoritmo que detecte primero si hay un SSL instalado y en el caso de que esto sea así preguntar si el usuario esta navegando a través de el protocolo HTTP siendo así lo redireccione hacía la misma pagina pero con el protocolo seguro HTTPS.

Uso PHP.

engel lex

eso hoy dia no se pregunta, se forza... busca como forzar siempre https en tu pagina... sobre si tienes ssl instalado, eso no le corresponde al script, te corresponde a ti... para saberlo es simple, abre tu pagina con https , y has click en el candadito de la barra de direcciones para ver las caracteristicas

recuerda el principio de programacion... tu eres el programador y sabes lo que estas haciendo... a menos que sea un sistema para vender a gente con poco conocimiento, estas haciendo pasos de mas...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Leguim

#2
No me referia eso, si haber es lógico pensar que cuando tenga un ssl voy a forzar la navegación para ese protocolo seguro pero yo lo que quería era un sistema más dinámico... generalmente no me gusta andar adaptando las cosas una vez pasen.. en este caso cuando compre un certificado ssl... mi aplicación no va a empezar con un protocolo https voy a ir poco a poco (más allá que ya se que es algo necesario por la seguridad) pero ya quiero todo listo para cuando las cosas pasen, el día que compré un certificado ssl quiero que automáticamente mi aplicación entienda que hay un ssl y que se puede usar el protocolo https.

engel lex

1- no tienes que comprarlo, hay gratuitos como let's encrip
2- puedes usar uno autogenerado, te da un error de seguridad al inicio, pero igual sirve

no hay sentido para hacer lo que quieres sinceramente... no tiene ningun punto escalar y gastar tiempo de procesamiento para algo estatico...

lo mas probable es que si lo haces te detecte uno, porque usualmente los servidores traen uno autogenerado para hacer pruebas...

eso que haces es un error de programador novato... "generalmente no me gusta andar adaptando las cosas una vez pasen" no tienes que hacerlo... se hace un sistema definitivo y listo... por otro lado, adaptar... bueno, eso no va a cambiar nada en tu codigo, eso está a nivel de apache...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Leguim

Es que si soy novato, no hay mucha ciencia pregunto 3 preguntas por día regularmente  :xD
Lo que me refiero es, si puedo hacer un sistema dinámico donde yo no tenga que estar diciendo cuando haga esto voy a tener que cambiar esto... un ejemplo muy sencillito sería

si tengo en el pie de pagina algo como "Pagina (copyright) 2020" lo voy a hacer usando PHP para obtener ese año "2020" y cuando sea el 2021 se va a cambiar automáticamente a 2021 y no voy a tener que estar esperando a que llegue ese año para que yo manualmente escriba en el html el 2021... a eso me refiero cuando no quiero adaptar las cosas cuando pasen... igual me estoy llendo por las ramas... voy a ver eso del let's encript

Gracias.

@XSStringManolo

Si necesitas ayuda con el cert, yo lo puse el de let's encrypt hace menos de 1 semana. Siempre usaba otro pero en el hosting nuevo en el que tengo la web no sirven las comprobaciones de los dominios por las autoridades certificadoras, asique metí let's encrypt que me permite meterlo sin validar el dominio y así establecer un canal de comunicación más fiable que el http.
https://stringmanolo.ml/ Si te vas al candado y le das a ver el certificado y ver los datos, ya ves que usa Let's Encrypt. Es gratuito. Si miras el de aquí del foro, ves que está el certificado verificado por cloudflare. Es una buena opción utilizar cloudflare para validar tu dominio y utilizar el certificado. En concreto el de Let's Encrypt puedes comprobar en mi sitio que me lo emitieron el 10 de enero y que es válido hasta dentro de 4 meses. Asique hay que renovarlo eventualmente.

Como comenta Engel Lex, no se comprueba, se ajusta dinámicamente o se cambia. Simplemente se fuerza. Y esto no es solo por comodidad. También por seguridad. Si tu sirves tu página por http, por mucho que después cambies a https, ya serviste la página por un canal inseguro. Esto posibilita SUPLANTACIÓN completa del sitio web, inyecciones, etc. Para algo existen tecnologías como hsts.

En general creo que te has metido en un proyecto que se te queda muy grande. Por qué? Porque cuando lo consigas acabar, habrá pasado tanto tiempo desde que hiciste la base del sistema, que ya no te va a acordar como repetirlo tal cual. Es decir, has hecho las cosas una vez de forma correcta, siguiendo los pasos que te han dado, pero no le has dedicado el tiempo suficiente para asimilar, ampliar y aprender a trabajar con esas tecnologías. Lo normal es hacer las cosas de menos a más. Repetirlas varias veces, asimilarlas, leer mucho sobre ellas, y en base a ello encontrar soluciones que se adapten A UN PROYECTO GLOBAL. Hay mucha gente que se mete puertas blindadas de 3.000$ y la pared de al lado es de ladrillo. Literal. Esto es un poco lo que pasa cuando vas metiendo trozito a trozito piezas que funcionan. Que se te quedan huecos en medio. Cuando alguien golpea una de las piezas, el agujero tira todo el sistema.


Te aconsejo que conjuntamente con el proyecto, te pares a analizar cada una de esas piezas que vas metiendo, para ponerle un poco de masilla y formar una aplicación más robusta. Por ejemplo ahora que estás con el tema HTTPS. Deberías saber exactamente que es https. Como funciona https, para que se utiliza, por qué se utiliza, como se implementa. Ataques pasados. Ataques recientes. Ataques que ahora mismo, en este momento, son posibles. Que se le añadió para arreglar eses fallos. Que tipo de cifrados se usan. Como funcionan. Que se le metió a los navegadores para mejorar la seguridad. Etc.

También deberías bajar más abajo. Si estás usando cifrados y confiando tu seguridad en ellos, estaría bien saber como funcionan en vez de confiar a ciegas en ellos porque la mayoría los utiliza. Si estás usando javascript, deberías saber de donde sale, por qué se usa javascript, como ha mejorado, a que fallos se exponen la aplicaciones que lo utilizan, etc. Cuando optas por usar Jquery, deberías consultar las críticas a la librerías, como afecta al tipo de clientes que esperas que utilicen tus servicios, como afecta a a seguridad de tus aplicaciones, que te aporta sobre un proyecto que utilice otras alternativas... Por ejemplo si estás desarrollando un versión de una aplicación bancaria para dispositivos móviles con baja velocidad de conexión que van a utilizar una cadena privada de proxies, quizás añadir una versión antigua y pesada de Jquery, va exactmente por el lado opuesto de las carcterísticas que buscas en tu aplicación, que serían seguridad, integridad, velocidad y disponibilidad.

Por otro lado, este tipo de proyectos, puede que te interese hacerlos open source (que no es opuesto de privativo, ni sinónimo de freeware) para que gente más experimentada te ayude en la seguridad y optimzación para poder aprender y mejorar la aplicación final.

También deberías pensar en como detectar y reaccionar correctamente a los fallos de seguridad en la aplicación. Deberías leer sobre la obscuración y la filosofía y opinión de expertos en ciberseguridad y criptografía al respecto.



engel lex

CitarEn general creo que te has metido en un proyecto que se te queda muy grande. Por qué?

yo no queria decirlo porque saben bien que soy un poco arrogante y no iba a sonar bien XD

pero es cierto... y no solo  lo que dice random string (si, ahora te llamaré asi) sino que tambien cuando veas tu codigo base verás todas las malas practicas y te puedes encerrar en el ciclo vicioso de muchos programadores: hacen algo, aprenden en el proceso, ven sus errores, borran todo y repiten --- ad infinitum

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MinusFour

Tu script puede hacer una petición HTTPS para verificar si existe por HTTPS. Sin embargo, no tiene caso estar realizando la verificación constantemente ya que es muy ineficiente. Lo podrías agregar como parte de un script de instalación o algún otro script que tenga como proposito escribir configuración. Podría ser conveniente porque hay veces en las que el usuario no tiene acceso a la configuración más que a través de una interfaz web y hacer cambios manuales sin verificación a menudo lleva a tener el sitio inaccesible.

Por lo general no se espera que los scripts deduzcan el mejor protocolo de manera dinámica. La configuración también es tipicamente manual pero no veo porque no agregar verificaciones en la asistencia de configuración (si eso es lo que estás haciendo).

@XSStringManolo

Cita de: engel lex en 16 Enero 2020, 21:41 PM
yo no queria decirlo porque saben bien que soy un poco arrogante y no iba a sonar bien XD
Hay algo muy típico y es que se le suele tener más apego a los profesores que más te exigían que a los más "buenos". Y es que si te dicen que todo está bien, te vas con una sonrisa y al cabo del tiempo te la pegas. En cambio si te tiras horas y horas y entregas un trabajo que piensas que está jodidamente perfecto y no lo podías mejor, y te dan un 5... Me pasa mucho de decir, joder, esto pensé que era imposible, o que jamás entendería esto. Y ahora lo ves y dices, como podía ser tan mentalmente negado para algo tan exageradamente trivial? [/quote] Te prometo que a veces pagaría por críticas lo más duras y realistas posibles. Eso que sé que no las encajo bien.

Cita de: engel lex en 16 Enero 2020, 21:41 PMpero es cierto... y no solo  lo que dice random string (si, ahora te llamaré asi) sino que tambien cuando veas tu codigo base verás todas las malas practicas y te puedes encerrar en el ciclo vicioso de muchos programadores: hacen algo, aprenden en el proceso, ven sus errores, borran todo y repiten --- ad infinitum
Hasta el proyecto más tonto se puede hacer mejor xD

Leguim

Cita de: MinusFour en 16 Enero 2020, 22:19 PM
Tu script puede hacer una petición HTTPS para verificar si existe por HTTPS. Sin embargo, no tiene caso estar realizando la verificación constantemente ya que es muy ineficiente. Lo podrías agregar como parte de un script de instalación o algún otro script que tenga como proposito escribir configuración. Podría ser conveniente porque hay veces en las que el usuario no tiene acceso a la configuración más que a través de una interfaz web y hacer cambios manuales sin verificación a menudo lleva a tener el sitio inaccesible.

Por lo general no se espera que los scripts deduzcan el mejor protocolo de manera dinámica. La configuración también es tipicamente manual pero no veo porque no agregar verificaciones en la asistencia de configuración (si eso es lo que estás haciendo).

Tenias razón "isset ($_SERVER['HTTPS'])

Perdon x la tardanza.. gracias!