web-services delphi https openssl

web services - Uso de OpenSSL en el servicio web Delphi: protocolos y cifras disponibles



web-services https (1)

Puede especificar cifrados disponibles a través de TIdServerIOHandlerSSLOpenSSL.SSLOptions.CipherList (así como de las versiones SSL / TLS a través de TIdServerIOHandlerSSLOpenSSL.SSLOptions.SSLVersions).

Si desea Perfect Forward Secrecy, debe crear claves DHParam utilizando openssl.exe (complete TIdServerIOHandlerSSLOpenSSL.SSLOptions.DHParamsFile por nombre de archivo de resultados). Si no solo desea DHE, sino también las cifras ECDHE, necesita llamar a una API adicional de openssl, consulte un Soporte para Perfect Forward Secrecy en SSL con indy 10, por ejemplo.

Estoy un poco confundido sobre el uso de OpenSSL en mi servicio web Delphi en relación con las cifras disponibles para una conexión HTTPS.

Preparar:

  • Mi servicio web se ejecuta en el servidor de un cliente. OpenSSL está instalado allí. El servicio web utiliza Indy (un TIdHTTPWebBrokerBridge) y los DLL OpenSSL (con TIdServerIOHandlerSSLOpenSSL) para cargar el certificado del cliente
  • Nuestras aplicaciones para Android / iOS se conectan a este servicio web a través de HTTPS
  • El cliente ha configurado un dominio e IP a los que los usuarios de la aplicación se pueden conectar y llegar a mi servicio web. Si probamos ese dominio utilizando, por ejemplo, la prueba de servidor SSLLabs , obtenemos una descripción general de los cifrados y protocolos compatibles (SSLLabs incluso imita los apretones de manos de los dispositivos y navegadores y muestra qué operaciones de cifrado se han negociado).

Pregunta: ¿Hay algo que mi servicio web (en combinación con OpenSSL) tenga que hacer / pueda hacer para influir en las cifras disponibles para el intercambio de información TLS entre la aplicación y el servicio web? ¿Hay algo adicional que deba configurarse con OpenSSL?

Pensé que la respuesta es "no", es decir, que es solo la configuración del servidor lo que (en el apretón de manos con la aplicación a través de Android / iOS) determina qué cifrado usar de los servidores disponibles. ¿Es esta una suposición correcta? ¿O extraño algo?
(De hecho, no estoy interesado en limitar o expandir las cifras disponibles, pero el cliente insiste en que se debe "hacer algo" en / con el servicio web / OpenSSL para que se comunique de forma "segura" con las aplicaciones. La prueba SSLLabs muestra que su dominio solo es compatible con TLS 1.0 y las cifras con el mecanismo de intercambio de claves RSA, por ejemplo, sin Perfect Forward Secrecy. Para mí, eso parece algo que debe corregirse de todos modos).

Notas:

  • Esta pregunta SO sugiere que debo hacer algo, pero no tiene respuestas.

  • Publiqué una pregunta anterior algo relacionada , pero eso no tiene respuestas.

  • Esta publicación de SO declara que OpenSSL respeta la preferencia de cifrado del cliente, no la del servidor, durante el protocolo de enlace SSL , que de nuevo sugiere que hay cosas que puedo hacer.

  • Tenía algunas dudas sobre si esta pregunta está en el lugar adecuado aquí (también porque no somos clientes ), pero como esto puede ser relevante para más programadores, decidí ponerlo en SO.