Rails 3: OpenSSL :: SSL :: SSLError: le nom d’hôte ne correspond pas au certificate du serveur

Lorsque je tente de délivrer un courrier électronique via la console, je reçois cette erreur:

OpenSSL::SSL::SSLError: hostname was not match with the server certificatee 

La chose est que je ne sais vraiment pas beaucoup sur les certificates et autres, ou vraiment comment commencer à résoudre ce problème, j’ai essayé de faire quelques recherches avec openssl et voici le certificate qui est retourné.

Je ne sais pas si c’est un problème avec Postfix qui s’exécute sur le serveur, ou mon application rails, toute aide ou tout indice est vraiment apprécié.

 ~% openssl s_client -connect mail.myhostname.com:25 -starttls smtp CONNECTED(00000003) depth=0 /CN=myhostname verify error:num=18:self signed certificatee verify return:1 depth=0 /CN=myhostname verify return:1 --- Certificate chain 0 s:/CN=myhostname i:/CN=myhostname --- Server certificatee -----BEGIN CERTIFICATE----- [...redacted...] -----END CERTIFICATE----- subject=/CN=myhostname issuer=/CN=myhostname --- No client certificatee CA names sent --- SSL handshake has read 1203 bytes and written 360 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA Server public key is 1024 bit Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : DHE-RSA-AES256-SHA Session-ID: 1AA4B8BFAAA85DA9ED4755194C50311670E57C35B8C51F9C2749936DA11918E4 Session-ID-ctx: Master-Key: 9B432F1DE9F3580DCC6208C76F96631DC5A4BC517BDBADD5F514414DCF34AC526C30687B96C5C4742E9583555A118232 Key-Arg : None Start Time: 1292985376 Timeout : 300 (sec) Verify return code: 18 (self signed certificatee) --- 250 DSN 

Une solution infiniment meilleure (en termes de sécurité) que la réponse acceptée serait:

 ActionMailer::Base.smtp_settings = { :address => "mail.foo.com", :port => 587, :domain => "foo.com", :user_name => "[email protected]", :password => "foofoo", :authentication => "plain", :enable_starttls_auto => true, :openssl_verify_mode => 'none' } 

De cette façon, vous utiliserez toujours le chiffrement, mais la validation du certificate sera désactivée (et vous ne recevrez aucune erreur).

EDIT: Cette réponse n’est plus la meilleure solution et peut ne plus fonctionner . Voir cette réponse qui est plus sécurisée.

Le nom sur le certificate doit correspondre à l’URL sur laquelle vous exécutez votre application

Pas utile … Je reçois cette erreur avec dreamhost, où je n’ai aucune option pour changer le certificate ssl. (bon, je le fais, mais ça coute.)

Une option consiste à désactiver tls. J’espère que vous avez quelque chose comme ça dans vos initialiseurs:

 ActionMailer::Base.smtp_settings = { :address => "mail.foo.com", :port => 587, :domain => "foo.com", :user_name => "[email protected]", :password => "foofoo", :authentication => "plain", :enable_starttls_auto => true } 

Modifiez l’option automatique de starttls en false (ou ajoutez-la si elle n’est pas présente).

Attention: cela désactivera le chiffrement, ce qui signifie que votre nom d’utilisateur et votre mot de passe traverseront Internet en texte brut

Je ne vois pas de meilleure façon de le faire, alors je serais intéressé par des réponses.

Si vous utilisez la bibliothèque de courrier ruby ​​comme je le fais, voici la configuration de la pop

 pop = Net::POP3.new(mail_server, mail_port) pop.enable_ssl(0) #(default is on, if you want turn it off set it to 0 ) pop.start(mail_username, mail_pwd) 

Comme beaucoup de personnes discutant de cette question ont mentionné dreamhost, il y a une meilleure réponse spécifique à Dreamhost à cette question.

Votre logiciel de courrier électronique, au cours des dernières années, a probablement commencé à devenir plus agressif envers vous pour avoir utilisé des noms de service incorrects sur vos certificates. En guise de réponse, Dreamhost recommande désormais d’utiliser leur nom de domaine plutôt que le vôtre lors de la configuration de votre compte de messagerie.

Vous devez trouver le cluster de messagerie auquel votre compte est assigné, votre configuration sera la suivante:

 ActionMailer::Base.smtp_settings = { :address => "mail.foo.com", :port => 587, :domain => "subX.mail.dreamhost.com" # instead of "foo.com", :user_name => "[email protected]", :password => "foofoo", :authentication => "plain", :enable_starttls_auto => true, # :openssl_verify_mode => 'none' # hopefully, no longer needed } 

subX est le sous-domaine sur subX votre cluster de messagerie est subX . Actuellement, cela se trouve sur votre panneau Dreamhost dans Panel > Support > Data Centers

Plus de détails sont disponibles sur la page de configuration de leur client de messagerie: https://help.dreamhost.com/hc/en-us/articles/214918038-Email-client-configuration-overview