[PYTHON] Que faire si une erreur de connexion SSL (ssl.SSLError: [SSL: DH_KEY_TOO_SMALL]) se produit sur Ubuntu 20.04

Lorsque j'ai essayé la communication SSL à l'aide de l'API tierce de Python sur Ubuntu 20.04, l'erreur suivante s'est produite. Cela semble se produire sur Ubuntu 20.04.

(Caused by SSLError(SSLError(1, '[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1123)')

Je vais résumer la solution en me référant au QA ci-dessous. https://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl-security-level

Modifier openssl.cnf

Vérifiez le répertoire d'emplacement du fichier de configuration openssl avec la commande suivante.

% openssl version -d

D'ailleurs, c'est généralement sous "/ usr / lib / ssl".

Ajoutez la ligne suivante au début du fichier et enregistrez.

openssl_conf = default_conf

Ensuite, ajoutez ce qui suit à la fin du fichier.

[ default_conf ]

ssl_conf = ssl_sect

[ssl_sect]

system_default = system_default_sect

[system_default_sect] MinProtocol = TLSv1.2 CipherString = DEFAULT:@SECLEVEL=1

Cela réduit le niveau de sécurité du cryptage OpenSSL. Cela seul devrait permettre la communication SSL.

Localisation de openssl.cnf

La modification directe du fichier de configuration sous / usr / lib / ssl affecte l'ensemble du système Linux. Si vous souhaitez localiser l'effet lors de la connexion en tant qu'utilisateur spécifique, ajoutez les variables d'environnement suivantes à .bashrc.

export OPENSSL_CONF=/path/to/my/openssl.cnf

Contexte de cette erreur

Il semble que la cause en soit que le paramètre par défaut du type Debine OpenSSL est devenu plus sécurisé. C'est l'arrière-plan qui est devenu sécurisé. (Anglais) https://weakdh.org/

Un bref aperçu révèle une vulnérabilité dans l'algorithme d'échange de clés utilisé par SSL. Une erreur DH_KEY_TOO_SMALL se produit lors de la tentative de communication SSL correspondant à la vulnérabilité.

La solution fondamentale est d'améliorer la sécurité côté serveur, mais cette fois c'est impossible car une API tierce est utilisée. Par conséquent, la méthode de modification du niveau de sécurité décrite ci-dessus a été adoptée.

Recommended Posts

Que faire si une erreur de connexion SSL (ssl.SSLError: [SSL: DH_KEY_TOO_SMALL]) se produit sur Ubuntu 20.04
Que faire lorsqu'une erreur se produit avec import _ssl
Que faire si une erreur se produit lors de l'importation de numpy avec VScode
[OSX] [pyenv] Que faire lorsqu'une erreur SSL se produit dans pip
Que faire si l'installation de pyenv ne se poursuit pas avec une erreur
Que faire si vous obtenez une erreur lors du chargement de mnist
[Django] Que faire lorsqu'une erreur d'intégrité se produit lors de l'enregistrement des données du site de gestion dans la base de données
Que faire si une erreur se produit dans l'importation liée à TensorFlow RNN ou dans la cellule RNN (LSTM) (v 0.11r ~)
Que faire si CERTIFICATE_VERIFY_FAILED se produit lorsque nltk.download () est effectué sur macOS pyhon
[python] Que faire si vous obtenez une erreur avec send_keys dans le chrome sans tête
Que faire lorsqu'une erreur SSL se produit avec pip dans l'environnement Windows10, miniconda, VScode
Que faire si une erreur de codage Unicode se produit dans Sublime Text Python
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
Que faire si une erreur de version se produit dans le pilote Selenium Chrome
Que faire si le support japonais n'est pas complètement installé sur Ubuntu 16.04
Que faire si l'installation de SciPy échoue sur CentOS
Que faire si une erreur se produit lorsque vous chargez un projet Python créé avec de la poésie dans VS Code
[Python] Erreur de type: l'objet 'WebElement' n'est pas itérable Que faire lorsqu'une erreur se produit
Que faire lorsqu'une erreur "service inconnu" est renvoyée par le serveur gRPC
Que faire si vous obtenez "(35, 'Erreur de connexion SSL')" dans pycurl (l'un d'entre eux)
Que faire si vous obtenez une erreur lors de l'importation de matplotlib en Python (Mac)
Que faire si vous obtenez une erreur d'importation lors de l'importation de matplotlib avec Jupyter
Que faire si vous obtenez l'erreur ʻERR_FEATURE_UNAVAILABLE_ON_PLATFORM` lors de l'utilisation de ts-node-dev sous Linux
Que faire si vous exécutez python sur IntelliJ et quittez avec une erreur
Que faire si `pip install matplot lib` échoue sur Mac
Que faire si vous ne pouvez pas utiliser le WiFi sous Linux
Que faire si l'installation de pip mysqlclient échoue sur MacOS
Que faire lorsque vous obtenez une erreur indiquant «Échec temporaire de la résolution du nom» sous Linux
Que faire si vous obtenez une erreur non définie: l'objet 'Module_six_moves_urllib_parse' n'a pas d'attribut 'urlencode' sur MacOS
Que faire si vous obtenez une erreur lors de l'exécution de "certbot renouveler" dans l'environnement CakePHP
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
Que faire si vous obtenez une erreur lors du vagabondage lorsque vous activez public_network ou private_network sur Vagrant + Arch Linux → Installer netctl
Que faire quand Ubuntu plante
Que faire si yum casse
Que faire si Python ne fonctionne pas sur Git pour Windows
Que faire lorsque l'inode est épuisé sur EC2 Linux
Que faire si PyAudio ne peut pas être installé sur Python 3.7, 3.8, 3.9 sous Windows
Que faire si vous obtenez une erreur indiquant que le compilateur C ne peut pas créer d'exécutables dans configure
Que faire lorsque pip --user renvoie une erreur dans un environnement virtuel créé avec pyenv
Que faire si vous obtenez une erreur comme "Qstring" a déjà été défini sur la version 1 en utilisant mne python
Que faire si vous êtes bloqué pendant l'installation d'Anaconda sur Linux
Que faire si PyInstaller3.5 provoque une erreur dans Python3.8 (TypeError: un entier est requis (obtenu les octets de type))
Que faire si vous obtenez une erreur d'autorisation refusée (clé publique) lorsque vous essayez de tirer sur le hub Git
Que faire si une erreur de lien symbolique se produit dans l'importation cv lors de la tentative d'installation d'OpenCV en Python
Que faire après l'installation de Linux (Ubuntu)
Que faire si psycopg2 génère une erreur lorsque pipenv se verrouille dans un environnement Pipenv
Que faire si vous obtenez une erreur en essayant d'envoyer un message dans tasks.loop () immédiatement après le démarrage
Que faire si vous obtenez une erreur "Aucune version trouvée" sur pipenv
Que faire si Scrapy ne fonctionne pas après l'installation de Scrapy avec PIP sur Mac
Solution lorsque Django ne peut pas charger d'images à partir d'un dossier statique
Que faire si pipreqs aboutit à UnicodeDecodeError
Que faire lorsque le shell pipenv devient impossible
Que faire si mod_fcgid ne peut pas résoudre UnicodeEncodeError
Que faire si les rails ne fonctionnent pas
Que faire si pip ne peut pas être installé
Que faire quand une PermissionError dans tempfile.mkstemp se produit