La Renégociation sécurisée n'est pas pris en charge OpenSSL problème
J'ai besoin de se connecter à un serveur Microsoft Dynamics CRM à partir d'un serveur Linux RedHat. L'adresse est xxx.api.crm4.dynamics.com. Le serveur accepte TLSv1 mais pas de 1,1 ou 1,2 et n'offre pas de renégociation. Afin de maintenir mon serveur RedHat avec la plus à jour des patchs en particulier autour de Heartbleed j'ai besoin de mettre à niveau vers une version plus récente d'OpenSSL. Cependant, cela permet ensuite de TLSv1.2 sur le serveur RedHat.
Est-il un moyen de configurer OpenSSL pour ne pas utiliser TLSv1.2 et TLSv1.1 dans les communications sortantes?
Vous devez vous connecter pour publier un commentaire.
La version du protocole est négocié, à la fois entrant et sortant. Il fait partie de la
ClientHello
. Alors qu'un serveur peut utiliser une moindre protocol version que le client fait de la publicité, vous ne pouvez pas mélanger et assortir.OpenSSL permet de définir
OPENSSL_NO_TLS1
, mais je crois que tue toutes les TLS, et pas seulement TLS 1.1 et TLS 1.2.Certaines distributions de Linux désactiver le protocole TLS 1.2 sur le client par défaut. Par exemple, Ubuntu ne ce pour les 12 et 13. Ils le font via OpenSSL est
OPENSSL_NO_TLS1_2_CLIENT
:C'est votre question du titre, et c'est une question distincte. Quelle est votre question?
MODIFIER (de commentaires):
Je ne pense pas que cela a à voir avec la renégociation sécurisée (mais je peux me tromper).
Voici comment le faire par programmation. Vous n'aurez pas besoin de compiler OpenSSL de nouveau. Mais vous aurez besoin de compiler votre à nouveau le programme.
Voici comment le faire avec un
method
(notez l'utilisation deTLSv1_method()
):Ou, vous pouvez le faire avec des drapeaux:
Je préfère les drapeaux de la méthode afin que je puisse désactiver cassé protocoles (comme SSLv2) et cassé fonctionnalités (comme la compression). Les drapeaux méthode me permet aussi de spécifier "TLS 1.0 et supérieures" (c'est à dire,
SSLv23_method()
avecSSL_OP_NO_*
), plutôt que de simplement le protocole TLS 1.0 (c'est à dire, à l'aide deTLS1_method()
).Au cas où je me trompe, voici comment la renégociation sécurisée œuvres: une pseudo-suite de chiffrement est inséré dans le
ClientHello
. Un régulier de la suite de chiffrement est commeTLS_RSA_WITH_AES_256_CBC_SHA
. La pseudo suite utilisé estTLS_EMPTY_RENEGOTIATION_INFO_SCSV
.Si le serveur ne peut pas traiter
TLS_EMPTY_RENEGOTIATION_INFO_SCSV
, alors je crois que le serveur doit être mis à niveau.Je ne sais pas si il y a une option du client pour le travail (comme un
SSL_OP_*
drapeau) autour de parce que je refuse de travailler avec cassée serveurs. Je pense vous pouvez revenir à OpenSSL 0.9.8, mais je ne le recommande pas.