¿Alguien de ustedes sabe, si y si es así, cómo puedo verificar, con el código de mi aplicación, si un servidor tiene ssl habilitado o no?¿Cómo puedo verificar si un servidor tiene ssl enable o no?
Respuesta
"It's easier to ask forgiveness than permission"
Por ejemplo, para leer stackoverflow.com
a través de SSL, no preguntarse si stackoverflow.com
lo soporta, simplemente hazlo. En Python:
>>> import urllib2
>>> urllib2.urlopen('https://stackoverflow.com')
Traceback (most recent call last):
...
urllib2.URLError: <urlopen error (10060, 'Operation timed out')>
>>> html = urllib2.urlopen('http://stackoverflow.com').read()
>>> len(html)
146271
>>>
Muestra que stackoverflow.com
no es compatible con SSL (2008).
Actualización:stackoverflow.com
soporta https ahora.
no está seguro en su idioma de preferencia pero aquí está en C#
public bool IsSecureConnection()
{
return HttpContext.Current.Request.IsSecureConnection ||
HttpContext.Current.Request.Headers["HTTP_X_SSL_REQUEST"].Equals("1");
}
Tenga en cuenta esta cabecera es costumbre, pero creo que se entiende la idea. He visto gente simplemente consultar la solicitud de "https" y, además de ensuciarla, es razonablemente aceptable, depende de su modelo de seguridad.
¿O está preguntando si simplemente está disponible?
I
Thx dove, creo que está en el lado del servidor, quiero saber en el lado del cliente cómo puedo saber si un servidor acepta conexiones SSL. (Si puedo de alguna manera). Creo que puedo hacerlo con un manejo de excepción, si trato de conectarme al servidor con ssl enable y obtengo una excepción, entonces el servidor (probablemente) no tiene ssl habilitado. ¿Pero puedo hacerlo de otra manera? –
Es necesario especificar qué protocolo se está trabajando con - hay versiones SSL de HTTP, IMAP, POP, etc.
asumiendo que es HTTPS que le interesa, usted podría comprobar para ver si hay algo escuchando en el puerto 443 en el servidor e ir de allí ...
Sí, pensé en eso también, pero creo que el puerto del servicio depende de la configuración del servidor, ¿verdad? Por cierto, estoy trabajando con https y smtp, lo siento. Y mi idioma de preferencia es C#, pero acepto cualquier idioma como respuesta, si tengo uno: P. Gracias a los dos;) –
Sí, el puerto depende de la configuración, pero si solo está intentando sitios aleatorios usando HTTPS, eso va a estar en el puerto 443. Si – genehack
No especifica un lenguaje de programación, pero puede hacerlo desde la línea de comandos.
bash-3.2$ echo ^D | telnet www.google.com https
Trying 66.102.11.104...
Connected to www.l.google.com.
Escape character is '^]'.
Connection closed by foreign host.
bash-3.2$ echo ^D | telnet www.stackoverflow.com https
Trying 69.59.196.211...
telnet: connect to address 69.59.196.211: Connection refused
telnet: Unable to connect to remote host
Ahí va ... Google lo hace, StackOverflow no lo hace.
Si está ejecutando código PHP o ASP en un servidor, la respuesta corta es que no. Puede intentar hacer una conexión de socket a la dirección IP no ssl, y ver si obtiene un certificado ssl, y enumerar su nombre común y SubjectAlternativeNames, pero en general, la respuesta simple es que no. Una configuración frecuente (incorrecta) de apache es escuchar en el puerto 443 sin un certificado SSL, por lo que poder hacer la conexión no es garantía de que haya SSL allí. Si no puede establecer la conexión, es posible que su aplicación no tenga privilegios de red. Debido a que la configuración de SSL es un problema, usted sabe si tiene SSL o no, y esa es una decisión de configuración. Es como preguntarse cuántos hijos tienes, debes saber.
Ésta es una prueba # unidad C para llevar a cabo la detección sin tener que estar en el HttpContext derecha:
[TestMethod]
public void DetectSslSupport()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.someinsecuresite.com");
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
//some sites like stackoverflow will perform a service side redirect to the http site before the browser/request can throw an errror.
Assert.IsTrue(response.ResponseUri.Scheme == "https");
}
}
catch (WebException)//"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."}
{
Assert.IsTrue(false);
}
}
- 1. ¿Cómo puedo verificar si una conexión usa ssl?
- 2. ¿Cómo puedo verificar si existe o no un recurso incrustado?
- 3. cómo verificar si div tiene id o no?
- 4. ¿Cómo puedo verificar si hay vulnerabilidades SSL en mi servidor web?
- 5. ¿Cómo puedo verificar si una URL tiene un enlace en botw.org o no?
- 6. Rieles: ¿Cómo puedo verificar si una columna tiene un valor?
- 7. ¿Cómo puedo verificar para ver si PEAR está instalado en mi servidor o no?
- 8. ¿cómo puedo verificar si existe un archivo?
- 9. ¿Cómo puedo verificar si mi programa tiene datos conectados
- 10. ¿Cómo puedo verificar si mi aplicación tiene foco?
- 11. ¿Cómo puedo saber si mi servidor tiene NUMA?
- 12. Mismo servidor, SSL y no SSL
- 13. ¿Cómo verificar si un modelo tiene una determinada columna/atributo?
- 14. ¿Cómo comprobar si curl tiene soporte para ssl?
- 15. cómo saber si un UITextView tiene un foco o no
- 16. ¿Cómo puedo verificar si el servidor puede manejar solicitudes SOAP?
- 17. ¿Cómo verificar si un EditText fue cambiado o no?
- 18. ¿Cómo verificar una cadena si es un ASCII o no?
- 19. Selenium IDE: ¿Cómo verificar si un elemento tiene un foco?
- 20. Cómo verificar si un proceso tiene los derechos administrativos
- 21. ¿Cómo puedo verificar si existe un directorio?
- 22. Cómo verificar si una tabla de datos es nula o no tiene nada
- 23. ¿Cómo puedo verificar si existe un campo o no en MongoDB?
- 24. ¿Cómo puedo determinar si un idioma no tiene contexto o no?
- 25. Detecta si PCRE se construyó sin los --enable-unicode-properties o --enable-utf8 switches de configuración
- 26. ¿Cómo verificar si un descriptor de archivo tiene datos disponibles?
- 27. ¿Cómo verificar un div existe o no?
- 28. ¿Cómo puedo verificar si una cadena de servidor Sql es nula o está vacía?
- 29. ¿Cómo verificar si un servidor proxy está configurado?
- 30. Para verificar si un objeto está vacío o no
Podría dar alguna información. sobre el entorno en el que estás escribiendo esto? –
No puedes. Los servidores no tienen ssl, los sitios web sí. – Kuzgun