55 votes

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

Lorsque j'essaie d'envoyer un courriel via la console, je reçois cette erreur :

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

Le problème, c'est que je n'y connais pas grand-chose en matière de certificats et autres, et que je ne sais pas vraiment comment commencer à résoudre ce problème. openssl et voici le certificat qui est retourné.

Je ne sais pas si c'est un problème avec Postfix qui fonctionne sur le serveur, ou avec mon application rails, toute aide ou 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 certificate
verify return:1
depth=0 /CN=myhostname
verify return:1
---
Certificate chain
 0 s:/CN=myhostname
   i:/CN=myhostname
---
Server certificate
-----BEGIN CERTIFICATE-----
[...redacted...]
-----END CERTIFICATE-----
subject=/CN=myhostname
issuer=/CN=myhostname
---
No client certificate 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 certificate)
---
250 DSN

136voto

Bozhidar Batsov Points 23298

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

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

De cette façon, vous continuerez à utiliser le cryptage, mais la validation du certificat sera désactivée (et vous n'obtiendrez pas d'erreurs).

25voto

user208769 Points 934

EDIT : Cette réponse n'est plus la meilleure solution, et peut ne plus fonctionner. . Voir cette réponse ce qui est plus sûr.

Le nom du certificat doit correspondre à l'URL sur lequel vous exécutez votre application.

Pas utile... J'obtiens cette erreur avec dreamhost, où je n'ai pas la possibilité de changer le certificat ssl. (enfin, je le fais, mais ça coûte.)

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

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

Changez l'option enable starttls auto à false (ou ajoutez-la si elle n'est pas présente).

Attention : ceci désactivera le cryptage, ce qui signifie que votre nom d'utilisateur et votre mot de passe traverseront l'internet en texte clair.

Je ne vois pas de meilleure façon de procéder, et je serais donc intéressé par toute réponse.

1voto

CharlesC Points 609

Si vous utilisez la bibliothèque ruby mail comme moi, voici les paramètres pour le 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)

0voto

user208769 Points 934

Comme de nombreuses personnes discutant de cette question ont mentionné dreamhost, il existe une meilleure réponse spécifique à dreamhost à cette question.

Ces dernières années, votre logiciel de messagerie a probablement commencé à se montrer plus agressif à votre égard parce que vous avez utilisé des noms de serveur incorrects sur vos certificats. En réponse, Dreamhost recommande maintenant d'utiliser leur nom de domaine plutôt que le vôtre lors de la création de votre compte de messagerie.

Vous devez déterminer à quel cluster de messagerie votre compte est affecté, puis 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            => "addy@foo.com",
  :password             => "foofoo",
  :authentication       => "plain",
  :enable_starttls_auto => true,
  # :openssl_verify_mode  => 'none' # hopefully, no longer needed
}

subX est le sous-domaine sur lequel se trouve votre cluster de messagerie. Actuellement, vous pouvez le trouver sur votre panneau Dreamhost à l'adresse suivante Panel > Support > Data Centers

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X