Respuestas:
Pregunta interesante, depende del uso en mi opinión. Todavía está protegido en términos de que la sesión está encriptada, pero no tiene forma de saber si es el certificado SSL correcto que se le presenta a menos que distribuya su certificado raíz de CA a usuarios / clientes. Para pruebas internas / proyectos de desarrollo, esto funcionaría muy bien, usted genera un certificado de CA raíz que utiliza para distribuir a sus usuarios (se puede hacer a través de la Política de grupo en Windows y a través de la línea de comando openssl en Linux / BSD) y luego usa ese certificado raíz para firmando sus CSR's. Los usuarios no verán una advertencia ni nada y usted sabe que el certificado está firmado por su CA interna.
Para los sitios externos en los que no puede asegurar esto, todavía diría que un certificado autofirmado es mejor que ningún SSL si envía contraseñas u otra información confidencial a través de la conexión.
Sin embargo, en el lado positivo, hay muchos emisores de certificados "comerciales" muy baratos, GoDaddy es uno de ellos. Puede obtener un certificado por unos 40 euros por año. GoDaddy incluso ofrece certificados gratuitos para los sitios web de proyectos OpenSource.
Voy a estar en desacuerdo, una vez por razones técnicas limitadas, y una vez por razones generales.
El fundamento técnico estrecho es que el OP preguntó acerca de los certificados autofirmados, y varias otras respuestas se refieren a los certificados firmados por CA privadas, lo cual es un problema ligeramente diferente. Pero no es muy diferente, así que eso es realmente solo una nota de pasada.
La principal objeción es que creo que mientras los certificados firmados comercialmente sean más que un gasto trivial, y $ 40 al año no es un gasto trivial para muchas personas en este planeta, los certificados autofirmados tienen un papel importante que desempeñar en seguridad de internet, siempre que se reconozcan sus limitaciones .
Un certificado autofirmado es como una clave ssh de mi known_hosts
archivo. Sin verificación independiente, no puede asegurarme que estoy hablando con el sistema que creo que soy; pero puede asegurarme que el sistema con el que estoy hablando ahora es el mismo sistema con el que hablé la última vez que pensé que estaba teniendo una conversación con él. Guardamos en caché las claves ssh todo el tiempo, y nunca he conocido a un administrador del sistema que verifique independientemente más de una fracción de las claves públicas en su known_hosts
archivo.
Los certificados autofirmados (y, para el caso, los certificados firmados por CA no generalmente válidas) son mucho mejores que ningún SSL, siempre y cuando las personas se den cuenta de que, a menos que los verifiquen, solo aseguran la comunicación para ellos mismos, el servidor en el otro extremo del registro DNS, y cualquier hombre en el medio actualmente en la línea. Si verifican independientemente el certificado, la autenticación y el cifrado son al menos tan fuertes como los proporcionados por un certificado firmado por una CA reconocida.
Por otra parte, aquellos que deseen presentar el uso de certificados firmados por una autoridad reconocida como el uno y única panacea de seguridad de Internet puede tener que pensar mucho sobre cuestiones tales como la inclusión de CA firmante del Gobierno chino en el paquete estándar de Mozilla , y el certificados SSL fraudulentos firmados por Comodo .
known_hosts
@MadHatter está haciendo referencia.
Para los sitios externos, donde los usuarios no tienen instalado su certificado de CA (que es el caso más común), sí, un certificado autofirmado da una falsa sensación de seguridad y, por lo tanto, es peor que inútil:
Primero, sin un certificado de CA preinstalado, ¿cómo verifica el usuario que el certificado realmente proviene de usted y no de un atacante? Al hacer coincidir los campos del certificado (CN, huellas digitales, etc.), por supuesto, pero ¿contra qué? Así que ahora necesita un canal lateral para verificar el certificado, y en los pocos casos que he visto eso, los operadores de la línea de soporte (que deberían haber servido como canal lateral para la verificación) no tienen idea de lo que se supone que significa; Además, operar dicho canal lateral es mucho más costoso que obtener un certificado firmado por CA de confianza, por lo que el usuario debe confiar ciegamente en usted.
En segundo lugar, la alerta de miedo que recibe el usuario da miedo por una buena razón: dado que el usuario no puede / no verificará el certificado presentado, es posible que esté transmitiendo datos de forma segura al Elbonian Haxx0r D00dz.
Tercero, y lo peor de todo, está insensibilizando a los usuarios : "bueno, me dijeron que debería ignorar esa advertencia en https://mysite.example.com/ , y un yunque no cayó sobre mi cabeza, y mi el pez dorado tampoco murió; muuuy, eso significa que es solo otro cuadro de alerta sin ningún significado real, por lo que puedo ignorar este cuadro cada vez que lo encuentro; de todos modos, obtengo ese bonito ícono de candado, y eso es importante ".
En otras palabras, el nivel de protección es comparable al HTTP simple (a excepción del rastreo en el cable: aunque los datos están encriptados en tránsito, esa es una característica bastante anémica sin verificación de punto final), pero la sensación de protección es irrazonablemente alta . Mala analogía del automóvil: "Tengo ABS, así que ahora puedo conducir de manera más segura en malas condiciones", excepto que el ABS solo existe en el folleto de ventas del automóvil, sin estar realmente presente en el automóvil.
Lectura sugerida: OWASP SSL Mejores prácticas
TL; DR: Al usar certificados autofirmados en sitios públicos, está haciendo de la Red un lugar peor, un usuario despistado a la vez.
Depende Si cree que lo hace más seguro, entonces aumenta su riesgo al elegir hacer cosas más riesgosas con su falsa sensación de seguridad. Si lo trata funcionalmente equivalente a HTTP, entonces diría que es un poco más seguro.
Sin SSL / HTTPS, cualquier persona con wireshark en su red (o la red local de cualquier persona que inicie sesión) puede escuchar trivialmente y capturar nombres de usuario / contraseñas enviados como texto sin formato.
Con SSL autofirmado no pueden simplemente escuchar, sino que ahora deben falsificar su sitio, potencialmente alterar el DNS para hacer un ataque man it the middle (MITM). Esto sigue siendo una amenaza, pero es significativamente más difícil de lograr para ellos.
El otro problema con el uso de SSL autofirmado es que muchos navegadores tratan los certificados autofirmados como una amenaza de seguridad importante y le advierten antes de ingresar (por ejemplo, Chrome) con una página roja gigante. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Esto podría ser un gran inconveniente.
Entonces, la conclusión es: si ejecuta algo que no necesita ser particularmente seguro (por ejemplo, sin datos de tarjeta de crédito, sin números de seguro social) y no puede permitirse un certificado adecuado, un certificado autofirmado podría tener sentido (por ejemplo, evitar que otros usuarios de la red puedan rastrear fácilmente su información de inicio de sesión).
Depende de lo que quiera decir con "seguridad", y cuál es el alcance.
Por ejemplo, su navegador viene con un conjunto de CA aceptado por defecto. Esto significa que cualquier certificado emitido por esta CA es aceptado por su navegador (hasta que coincida con el nombre DNS). Ahora, imagine que algún gobierno malvado posee una CA, o puede obligar a la CA a emitir un certificado para el sitio que está visitando. Entonces, hacer un MITM es muy fácil: pueden hacer proxy de su conexión, enviando a su navegador el certificado que tienen, y su navegador lo aceptará, ya que proviene de una CA "confiable". Hasta que sean transparentes a DNS (que es la base para MITM), está bien.
Entonces, la "lista de AC aceptadas" es básicamente un gran agujero de seguridad, hasta que una de estas AC coopere con algún gobierno malvado. Tener tu propia CA es mucho mejor.
Por supuesto, puede hacerlo en su empresa o en su servidor doméstico, porque puede instalar su propio certificado de CA en el cliente, que también controla. En un servidor público, no puede tratar con ningún usuario, pidiéndole que agregue una excepción o que agregue su certificado.
Por lo tanto, depende de lo que quiera decir para "seguridad" y del alcance. SI posee los clientes, SEGURO, el autofirmado es más seguro, hasta que instale en el propio cliente el certificado de su propia CA.
Por supuesto, no puede hacerlo en un sitio web público ya que no posee todos los clientes. Entonces, correrá el riesgo de comportamientos diferentes, lo que no es seguro.