Meilleur auteur de réponses
Exchange 2010 : Probleme de TLS - Subject Mismatch (Event ID 11005) vers passerelle EXIM

Question
-
Bonjour a tous.
Ayant finalisé le déploiement de notre infra interne Exchange, je réalise les tests de recette de mise en production et je tombe sur un os..
J'ai déployé un connecteur pour l'envoi des messages vers les domaines externe en passant via une passerelle Exim qui est opérationnelle (nous recevons bien les mails en entrant depuis internet), et j'ai installé sur le serveur un certificat GEOTrust.Voici les informations technique relative au connecteur / Certificat :
Connecteur :
CN = email.domain.fr
FQDN : email.domaine.fr
Router vers les hotes : hermes.intra.domaine.fr
Authentification : de Base sur TLS, avec identifiant / mot de Passe fourni et opérationnel sur le serveur exim
Serveur Source : exchcas01 / exchcas02 (fqdn du CasArray : email.domaine.fr, FQDN des machines : exchcas01/02.domaine.fr)
Certificat : email.domaine.fr
OU = Domain Control Validated - GeoTrust(R) SSL Trial
OU = www.geotrust.com/resources/cps
OU = GT64190758
SERIALNUMBER = tfxBIpITE3PepOKk3/eueEOfVnhdapP/
Passerelle Exim :
Nom de la machine : hermes.domaine.fr
Certificat Serveur par defaut : email.intra.domaine.fr
E = internet@domaine.fr
CN = email.intra.domaine.fr
OU = Service Internet
O = Organisation
L = Nantes
S = Loire Atlantique
C = FRComme indiqué dans le sujet, j'ai ce message d'erreur dans l'observateur d’évènement Exchange :
Impossible de valider le certificat TLS de l'hôte actif pour le connecteur Envoi vers Exterieure. L'erreur de validation du certificat est SubjectMismatch. Si le problème persiste, contactez l'administrateur de l'hôte actif pour résoudre le problème.
17:59:02 26535 sender_fullhost = [10.10.20.1]
Et ce log sur Exim :
17:59:02 26535 sender_rcvhost = [10.10.20.1]
17:59:02 26535 Process 26535 is handling incoming connection from [10.10.20.1]
17:59:02 26535 host in host_lookup? no (option unset)
17:59:02 26535 set_process_info: 26535 handling incoming connection from [10.10.20.1]
17:59:02 26535 host in host_reject_connection? no (option unset)
17:59:02 26535 host in sender_unqualified_hosts? no (option unset)
17:59:02 26535 host in recipient_unqualified_hosts? no (option unset)
17:59:02 26535 host in helo_verify_hosts? no (option unset)
17:59:02 26535 host in helo_try_verify_hosts? no (option unset)
17:59:02 26535 host in helo_accept_junk_hosts? no (option unset)
17:59:02 26535 using ACL "acl_connect"
17:59:02 26535 processing "accept"
17:59:02 26535 check hosts = *
17:59:02 26535 host in "*"? yes (matched "*")
17:59:02 26535 accept: condition test succeeded
17:59:02 26535 expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full
17:59:02 26535 result: hermes.domaine.fr ESMTP Exim 4.72 Fri, 04 May 2012 17:59:02 +0200
17:59:02 26535 SMTP>> 220 hermes.domaine.fr ESMTP Exim 4.72 Fri, 04 May 2012 17:59:02 +0200
17:59:02 26535 Process 26535 is ready for new message
17:59:02 26535 smtp_setup_msg entered
17:59:02 26535 SMTP<< EHLO email.domaine.fr
17:59:02 26535 email.domaine.fr in helo_lookup_domains? no (end of list)
17:59:02 26535 sender_fullhost = (email.domaine.fr) [10.10.20.1]
17:59:02 26535 sender_rcvhost = [10.10.20.1] (helo=email.domaine.fr)
17:59:02 26535 set_process_info: 26535 handling incoming connection from (email.domaine.fr) [10.10.20.1]
17:59:02 26535 using ACL "acl_check_helo"
17:59:02 26535 processing "accept"
17:59:02 26535 check hosts = @[] : @
17:59:02 26535 Actual local interface address is 127.0.0.1 (lo)
17:59:02 26535 Actual local interface address is 192.168.44.30 (eth0)
17:59:02 26535 Actual local interface address is ::1 (lo)
17:59:02 26535 Actual local interface address is fe80::250:56ff:feab:6962 (eth0)
17:59:02 26535 gethostbyname2(af=inet6) returned 1 (HOST_NOT_FOUND)
17:59:02 26535 gethostbyname2(af=inet) returned 1 (HOST_NOT_FOUND)
17:59:02 26535 no IP address found for host hermes.domaine.fr (during SMTP connection from (email.domaine.fr) [10.10.20.1])
17:59:02 26535 LOG: host_lookup_failed MAIN
17:59:02 26535 no IP address found for host hermes.domaine.fr (during SMTP connection from (email.domaine.fr) [10.10.20.1])
17:59:02 26535 host in "@[] : @"? no (failed to find IP address for hermes.domaine.fr)
17:59:02 26535 accept: condition test failed
17:59:02 26535 processing "deny"
17:59:02 26535 expanding: $sender_helo_name
17:59:02 26535 result: email.domaine.fr
17:59:02 26535 expanding: $smtp_active_hostname
17:59:02 26535 result: hermes.domaine.fr
17:59:02 26535 expanding: $sender_helo_name
17:59:02 26535 result: email.domaine.fr
17:59:02 26535 expanding: [$interface_address]
17:59:02 26535 result: [192.168.44.30]
17:59:02 26535 condition: or { {match{$sender_helo_name}{$smtp_active_hostname}} {eq{$sender_helo_name}{[$interface_address]}} }
17:59:02 26535 result: false
17:59:02 26535 expanding: true
17:59:02 26535 result: true
17:59:02 26535 skipping: result is not used
17:59:02 26535 expanding: false
17:59:02 26535 result: false
17:59:02 26535 expanding: ${if or { {match{$sender_helo_name}{$smtp_active_hostname}} {eq{$sender_helo_name}{[$interface_address]}} } {true}{false} }
17:59:02 26535 result: false
17:59:02 26535 check condition = ${if or { {match{$sender_helo_name}{$smtp_active_hostname}} {eq{$sender_helo_name}{[$interface_address]}} } {true}{false} }
17:59:02 26535 = false
17:59:02 26535 deny: condition test failed
17:59:02 26535 processing "deny"
17:59:02 26535 expanding: $sender_helo_name
17:59:02 26535 result: email.domaine.fr
17:59:02 26535 condition: isip{$sender_helo_name}
17:59:02 26535 result: false
17:59:02 26535 expanding: ${if isip{$sender_helo_name}}
17:59:02 26535 result:
17:59:02 26535 check condition = ${if isip{$sender_helo_name}}
17:59:02 26535 =
17:59:02 26535 deny: condition test failed
17:59:02 26535 processing "deny"
17:59:02 26535 expanding: $sender_helo_name
17:59:02 26535 result: email.domaine.fr
17:59:02 26535 expanding: +local_domains
17:59:02 26535 result: +local_domains
17:59:02 26535 search_open: lsearch "/etc/exim4/domaine/domains"
17:59:02 26535 search_find: file="/etc/exim4/domaine/domains"
17:59:02 26535 key="email.domaine.fr" partial=-1 affix=NULL starflags=0
17:59:02 26535 LRU list:
17:59:02 26535 :/etc/exim4/domaine/domains
17:59:02 26535 End
17:59:02 26535 internal_search_find: file="/etc/exim4/domaine/domains"
17:59:02 26535 type=lsearch key="email.domaine.fr"
17:59:02 26535 file lookup required for email.domaine.fr
17:59:02 26535 in /etc/exim4/domaine/domains
17:59:02 26535 lookup failed
17:59:02 26535 email.domaine.fr in "lsearch;/etc/exim4/domaine/domains"? no (end of list)
17:59:02 26535 email.domaine.fr in "+local_domains"? no (end of list)
17:59:02 26535 condition: match_domain{$sender_helo_name}{+local_domains}
17:59:02 26535 result: false
17:59:02 26535 expanding: true
17:59:02 26535 result: true
17:59:02 26535 skipping: result is not used
17:59:02 26535 expanding: false
17:59:02 26535 result: false
17:59:02 26535 expanding: ${if match_domain{$sender_helo_name}{+local_domains}{true}{false}}
17:59:02 26535 result: false
17:59:02 26535 check condition = ${if match_domain{$sender_helo_name}{+local_domains}{true}{false}}
17:59:02 26535 = false
17:59:02 26535 deny: condition test failed
17:59:02 26535 processing "accept"
17:59:02 26535 accept: condition test succeeded
17:59:02 26535 host in pipelining_advertise_hosts? yes (matched "*")
17:59:02 26535 host in auth_advertise_hosts? yes (matched "*")
17:59:02 26535 host in tls_advertise_hosts? yes (matched "*")
17:59:02 26535 SMTP>> 250-hermes.domaine.fr Hello email.domaine.fr [10.10.20.1]
17:59:02 26535 250-SIZE 52428800
17:59:02 26535 250-PIPELINING
17:59:02 26535 250-STARTTLS
17:59:02 26535 250 HELP
17:59:02 26535 SMTP<< STARTTLS
17:59:02 26535 initializing GnuTLS as a server
17:59:02 26535 read D-H parameters from file
17:59:02 26535 initialized D-H parameters
17:59:02 26535 certificate file = /etc/exim4/exim.crt
17:59:02 26535 key file = /etc/exim4/exim.key
17:59:02 26535 expanding: /etc/ssl/certs/ca-certificates.crt
17:59:02 26535 result: /etc/ssl/certs/ca-certificates.crt
17:59:02 26535 condition: exists{/etc/ssl/certs/ca-certificates.crt}
17:59:02 26535 result: true
17:59:02 26535 expanding: /etc/ssl/certs/ca-certificates.crt
17:59:02 26535 result: /etc/ssl/certs/ca-certificates.crt
17:59:02 26535 expanding: /dev/null
17:59:02 26535 result: /dev/null
17:59:02 26535 skipping: result is not used
17:59:02 26535 expanding: ${if exists{/etc/ssl/certs/ca-certificates.crt}{/etc/ssl/certs/ca-certificates.crt}{/dev/null}}
17:59:02 26535 result: /etc/ssl/certs/ca-certificates.crt
17:59:02 26535 verify certificates = /etc/ssl/certs/ca-certificates.crt size=47765
17:59:02 26535 initialized certificate stuff
17:59:02 26535 host in tls_verify_hosts? no (option unset)
17:59:02 26535 host in tls_try_verify_hosts? yes (matched "*")
17:59:02 26535 adjusted cipher priorities: 5 4 3 2
17:59:02 26535 initialized GnuTLS session
17:59:02 26535 SMTP>> 220 TLS go ahead
17:59:03 26535 gnutls_handshake was successful
17:59:03 26535 TLS certificate verified: peerdn=serialNumber=tfxBIpITE3PepOKk3/eueEOfVnhdapP/,OU=GT64190758,OU=www.geotrust.com/resources/cps,OU=Domain Control Validated - GeoTrust(R) SSL Trial,CN=email.domaine.fr
17:59:03 26535 cipher: TLS1.0:RSA_AES_128_CBC_SHA1:16
17:59:03 26535 sender_fullhost = [10.10.20.1]
17:59:03 26535 sender_rcvhost = [10.10.20.1]
17:59:03 26535 set_process_info: 26535 handling incoming TLS connection from [10.10.20.1]
17:59:03 26535 TLS active
17:59:03 26535 Calling gnutls_record_recv(1434340, 1435cb0, 4096)
17:59:03 26535 SMTP<< QUIT
17:59:03 26535 SMTP>> 221 hermes.domaine.fr closing connection
17:59:03 26535 tls_do_write(13f75a0, 41)
17:59:03 26535 gnutls_record_send(SSL, 13f75a0, 41)
17:59:03 26535 outbytes=41
17:59:03 26535 tls_close(): shutting down TLS
17:59:03 26535 LOG: smtp_connection MAIN
17:59:03 26535 SMTP connection from [10.10.20.1] closed by QUIT
17:59:03 26535 search_tidyup called
17:59:03 25527 child 26535 ended: status=0x0
17:59:03 25527 0 SMTP accept processes now running
17:59:03 25527 Listening...
Est ce que quelqu'un pourrait me mettre sur la piste à savoir quel nom FQDN n'est pas le bon sur le certificat ?
Merci d'avance
PS : A savoir, lors de la mise en production, nous aurons un certificat wildcard : *.domaine.fr
Est ce que cela changerait le comportement sans reconfiguration supplémentaire ?
- Modifié tdldp1 vendredi 4 mai 2012 16:10
Réponses
-
Plus simple là :)
Il suffit de récuperer la chaine de certificats approuvant le certificat "hermes", et de les rajouter dans les magasins de certificat du serveur exchange :
- le top dans les trusted root
- les intermédiaires dans les intermediate certification authority
Attention, en ajoutant ces certificats vous approuvez TOUS les certificats issus par ces autorités, ce qui a un impact en terme de sécurité.
- Proposé comme réponse Florin Ciuca mardi 8 mai 2012 12:54
- Marqué comme réponse tdldp1 mercredi 9 mai 2012 10:31
-
Il ne faut pas oublier qu'un certificat, au dela de la notion de chiffrement des données, assure avant tout l'identité du partenaire. Pour la petite histoire, le chiffrement proprement dit des données se fait en général AES (ou un autre chiffrement symétrique) et non pas sur l'algorithme asymétrique lié au certificat, qui ne sert qu'a transmettre la clé de chiffrement symétrique.
A l'origine 1 certificat = 1 nom, hors on rencontre de plus en plus de sites qui peuvent être accédé par plusieurs noms différents. Il y a deux réponses à ce problème : les certificats wildcard (*.mondomaine.fr) et les SAN : un certificat peut contenir plusieurs noms différents (mail.mondomaine.fr, autodiscover.mondomaine2.fr, etc.). L'avantage du SAN est de ne contenir que les noms souhaités (et pas tout un domaine), et ces noms peuvent représenter des domaines différents.
Dans un SAN vous avez un champs supplémentaire (Subject Alterntive Name), ou vous pouvez rajouter des enregistrement DNS supplémentaires avec les FQDN souhaités.
Si vous avez une autorité interne, elle doit être en 2008 au minimum pour pouvoir délivrer des certificats avec SAN, sinon vous pouvez passer par les sites publics, le prix est supérieur à celui d'un certificat classique.
- Proposé comme réponse Florin Ciuca mardi 8 mai 2012 12:54
- Marqué comme réponse tdldp1 mercredi 9 mai 2012 10:31
-
Bien pour ceux que ca interesserait :
Via MMC, avec le SNAP IN Certificats, ajouter le certificat du serveur de relais de messagerie exim (Meme autosigné) dans Autorité de certification racine de confiance en plus de l'ajouter aux certificats exchange sur les 2 serveurs CAS.Ce probleme est résolu, pour la problématique exposé. Par contre je vais ouvrir un autre sujet relatif au non acheminement des messages sur la passerelle (meme si exchange me dit que le message a été soumis)
Merci encore pour votre aide..
- Marqué comme réponse tdldp1 mercredi 9 mai 2012 10:35
Toutes les réponses
-
Bonsoir,
Il y a beaucoup de noms qui ne correspondent pas, et dont on ne sait pas s'ils sont dans le certificat !
la route "hermes.intra.domaine.fr" ?
email.intra.domaine.fr ?
A noter que le connecteur d'envoi se sert pas pour la réception, comme le nom l'indique!
A suivre...
Thierry DEMAN. Exchange MVP. https://www.mcpvirtualbusinesscard.com/VBCServer/MVPtdeman/profile (69 MCPs) http://base.faqexchange.info
-
SubjectMismatch -> le nom du serveur est différent du nom sur le certificat.
Vous indiquez : Passerelle Exim :
Nom de la machine : hermes.domaine.fr
Certificat Serveur par defaut : email.intra.domaine.fr
E = internet@domaine.fr
CN = email.intra.domaine.fr
OU = Service Internet
O = Organisation
L = Nantes
S = Loire Atlantique
C = FRLe subjectname devrait être de la forme CN=hermes.domaine.fr (avec idéalement les CN,OU,O,L,S,C mais cela n'aura pas forcement d'impact), ou alors un Subject Alternative Name de la forme DNS=hermes.domaine.fr. Je ne suis pas familier d'Exim, mais apparament Exchange renvoi bien son certificat mail.domaine.fr (17:59:03 26535 TLS certificate verified: peerdn=serialNumber=tfxBIpITE3PepOKk3/eueEOfVnhdapP/,OU=GT64190758,OU=www.geotrust.com/resources/cps,OU=Domain Control Validated - GeoTrust(R) SSL Trial,CN=email.domaine.fr)
-
Bonjour et
Merci Thierry et Bruce pour votre temps et les réponses apporté...Donc pour bien comprendre et ne pas me tromper, exchange attend sur le certificat qu'il recoit du serveur que le nom du certificat corresponde au nom de la machine et non à un FQDN de service c'est bien cela ? et donc dans le cas d'exemple mais qui ne sera pas la version en production, hermes.domaine.fr au lieu de email.intra.domaine.fr
(Ce qui va un peu à l'encontre du fonctionnement d'exchange en lui même qui me semble reposer sur des FQDN de services (CasArray, DAG etc..) et non sur celui des machines (enfin pour ce qui est de OWA, ECP, etc..).En ce qui concerne le SAN, je suis pas du tout familier de sa mise en oeuvre, ni de son fonctionnement et son intégration dans exchange.. Vous auriez une documentation "compréhensible" qqpart (meme en anglais) ?
Merci encore et je vous tiens informé des tests avec le changement de CN du serveur exim, voir du passage en certificat wildcard..
Tdldp
- Modifié tdldp1 lundi 7 mai 2012 08:19
-
Il ne faut pas oublier qu'un certificat, au dela de la notion de chiffrement des données, assure avant tout l'identité du partenaire. Pour la petite histoire, le chiffrement proprement dit des données se fait en général AES (ou un autre chiffrement symétrique) et non pas sur l'algorithme asymétrique lié au certificat, qui ne sert qu'a transmettre la clé de chiffrement symétrique.
A l'origine 1 certificat = 1 nom, hors on rencontre de plus en plus de sites qui peuvent être accédé par plusieurs noms différents. Il y a deux réponses à ce problème : les certificats wildcard (*.mondomaine.fr) et les SAN : un certificat peut contenir plusieurs noms différents (mail.mondomaine.fr, autodiscover.mondomaine2.fr, etc.). L'avantage du SAN est de ne contenir que les noms souhaités (et pas tout un domaine), et ces noms peuvent représenter des domaines différents.
Dans un SAN vous avez un champs supplémentaire (Subject Alterntive Name), ou vous pouvez rajouter des enregistrement DNS supplémentaires avec les FQDN souhaités.
Si vous avez une autorité interne, elle doit être en 2008 au minimum pour pouvoir délivrer des certificats avec SAN, sinon vous pouvez passer par les sites publics, le prix est supérieur à celui d'un certificat classique.
- Proposé comme réponse Florin Ciuca mardi 8 mai 2012 12:54
- Marqué comme réponse tdldp1 mercredi 9 mai 2012 10:31
-
En terme de prix, pour le SAN, c'est kif kif avec un wildcard par un site public... (A 20 € pret). Le problème n'est clairement pas d'ordre financier...
Avantage du wildcard (ou inconvénient c'est selon), c'est qu'on peut couvrir plusieurs besoins distinct (ex: exchange (identité), paiement en ligne (SSL), intranet / extranet, etc..) sur autant de serveur que l'on souhaite... Le SAN etant limité en nombre d'installation (de ce que j'en ai lue, mais je peux me tromper)
Je vais aussi regarder du coté de l'autorité interne avec l'exploit, toutefois il me semblait que l'autorité interne n'est pas systématiquement compatible avec tous les outils mobile (de type : Blackberry, Iphone). Comme nous avons une population de commerciaux dont le matériel est particulièrement hétéroclite, je me pose la question du bien-fondé de ce type de certificat (je recherche à ce sujet un retour d’expérience, mais vais aussi parcourir le forum à ce sujet..)
Bref.. Je test ;)
Tdldp
EDIT : Pour le coup, en modifiant le certificat exim sur le fqdn : hermes.domaine.fr j'ai désormais le message:
Impossible de valider le certificat TLS de l'hôte actif pour le connecteur Envoi vers Exterieure. L'erreur de validation du certificat est UntrustedRoot. Si le problème persiste, contactez l'administrateur de l'hôte actif pour résoudre le problème.
- Modifié tdldp1 lundi 7 mai 2012 09:38
-
Plus simple là :)
Il suffit de récuperer la chaine de certificats approuvant le certificat "hermes", et de les rajouter dans les magasins de certificat du serveur exchange :
- le top dans les trusted root
- les intermédiaires dans les intermediate certification authority
Attention, en ajoutant ces certificats vous approuvez TOUS les certificats issus par ces autorités, ce qui a un impact en terme de sécurité.
- Proposé comme réponse Florin Ciuca mardi 8 mai 2012 12:54
- Marqué comme réponse tdldp1 mercredi 9 mai 2012 10:31
-
Bonjour
Juste une question annexe, si le certificat est autosigné en attendant le wildcard, c'est la même procédure ? (Je met le certificat dans le magasin autorité de confiance, intermédiaire de confiance, et editeur aprouvé ?
Mais je crois connaitre déjà la réponse : Pas de self-signed.. ;)
tdldp
Edit : Bon j'ai ajouté le certificat aux magasin des 2 serveurs CAS, ainsi qu'a la console exchange... Il me fait pas d'erreur au moment de l'intégration, mais toujours le untrusted root... A tout hasard faut pas redemarrer les serveurs après l'intégration des certificats ?
- Modifié tdldp1 lundi 7 mai 2012 15:37
-
Bien pour ceux que ca interesserait :
Via MMC, avec le SNAP IN Certificats, ajouter le certificat du serveur de relais de messagerie exim (Meme autosigné) dans Autorité de certification racine de confiance en plus de l'ajouter aux certificats exchange sur les 2 serveurs CAS.Ce probleme est résolu, pour la problématique exposé. Par contre je vais ouvrir un autre sujet relatif au non acheminement des messages sur la passerelle (meme si exchange me dit que le message a été soumis)
Merci encore pour votre aide..
- Marqué comme réponse tdldp1 mercredi 9 mai 2012 10:35