2014-07-10 5 views
15

J'ai besoin d'installer offlineimap et mu4e sur emacs. Le problème est la configuration. Quand je lance offlineimap je reçois:ca-certificates Mac OS X

OfflineIMAP 6.5.5 
Licensed under the GNU GPL v2+ (v2 or any later version) 
Thread 'Account sync Gmail' terminated with exception: 
Traceback (most recent call last): 
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/threadutil.py", line 158, in run 
Thread.run(self) 
File "/anaconda/lib/python2.7/threading.py", line 763, in run 
self.__target(*self.__args, **self.__kwargs) 
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/accounts.py", line 226, in syncrunner 
self.remoterepos = Repository(self, 'remote') 
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/repository/__init__.py", line 78, in __new__ 
return repo(name, account) 
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/repository/Gmail.py", line 37, in __init__ 
IMAPRepository.__init__(self, reposname, account) 
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/repository/IMAP.py", line 34, in __init__ 
self.imapserver = imapserver.IMAPServer(self) 
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/imapserver.py", line 83, in __init__ 
self.sslcacertfile = repos.getsslcacertfile() 
File "/usr/local/Cellar/offline-imap/6.5.6/libexec/offlineimap/repository/IMAP.py", line 211, in getsslcacertfile 
% (self.name, cacertfile)) 
SyntaxWarning: CA certfile for repository 'Remote' could not be found. No such file: '/usr/share/curl/ca-bundle.crt.original' 


Last 2 debug messages logged for Account sync Gmail prior to exception: 
thread: Register new thread 'Account sync Gmail' (account 'Gmail') 
imap: Using authentication mechanisms ['GSSAPI', 'CRAM-MD5', 'PLAIN', 'LOGIN'] 

Ceci est mon .offlineimaprc

[general] 
accounts = Gmail 
maxsyncaccounts = 1 
pythonfile = ~/.offlineimap.py 

[Account Gmail] 
localrepository = Local 
remoterepository = Remote 

[Repository Local] 
type = Maildir 
localfolders = ~/Maildir 

[Repository Remote] 
type = Gmail 
remoteuser = [email protected] 
remotepasseval = get_password_emacs("imap.gmail.com", "[email protected]", "993") 
realdelete = no 

folderfilter = lambda foldername: foldername not in ['[Gmail]/Spam', '[Gmail]/All Mail', '[Gmail]/Starred', '[Gmail]/Important'] 

holdconnectionopen = true 
keepalive = 60 
sslcacertfile = /usr/share/curl/ca-bundle.crt.original #?? 

Il y a un problème avec python installer et un avec le certificat CA. Point est là aucun paquet d'infusion curl-ca-bundle. Y at-il un autre moyen d'installer un certificat?

Répondre

8

Il n'y a généralement pas de regroupement de certificats CA sur OS X, car les bibliothèques SSL utilisent généralement le cadre de sécurité d'Apple en interne et obtiennent des certificats du trousseau. Vous pouvez créer votre propre ensemble à partir des certificats Keychain, bien que: Open Keychain, accédez à la catégorie "Certificats" dans le trousseau "System Roots" et appuyez sur Commande + Maj + E ("Exporter des éléments"), pour enregistrer tous les certificats. Je pense que Python peut gérer le format PEM, alors assurez-vous de le sélectionner.

Alternativement, sur OS X 10.6 et plus récent, le système Python est construit par rapport à une version OpenSSL qui toujours s'intéresse également à Keychain. Par conséquent, vous pouvez créer un ensemble factice qui ne contient qu'une certification auto-signée fictive et l'utiliser dans votre configuration pour désactiver la fonction OfflineIMAP. Ça va regarder dans les certificats Keychain quand même.

Voir https://www.mercurial-scm.org/wiki/CACertificates#Mac_OS_X_10.6_and_higher pour plus de détails.

+0

Oui Je gère le répertoire de pointage vers le ca-cert dans Mercurial. Maintenant OK. Merci –

+0

Cela n'a pas fonctionné pour moi quand j'ai utilisé "System Roots", mais a fonctionné quand j'ai créé un fichier Certificates.pem en exportant (select-all, ctrl-click export ...) Porte-clés = "Système" et Catégorie = "Certificates", et concaténé avec le contenu de /usr/local/etc/openssl/cert.pem. Nous avons un environnement étrange où l'organisation a son propre certificat et intercepte et renifle tout le trafic SSL à des fins de sécurité, et ce cert était dans les certificats du système; tous les autres étaient dans /usr/local/etc/openssl/cert.pem. –

22

J'ai eu un problème similaire (sur MacOS 10.10.2, openssl 1.0.2 et offlineimap 6.5.5 à la fois de homebrew) et je n'ai pas réussi à faire fonctionner la solution du certificat fictif. Cependant, j'ai trouvé un certfile qui fait que offlineimap cesse de se plaindre dans /usr/local/etc/openssl/cert.pem (qui est mis là lors de l'installation d'openssl via homebrew, brew info openssl me dit). Avertissement: Je ne sais pas si c'est une bonne façon de le faire.

+1

Cela fonctionne si vous avez installé 'openssl' via homebrew. Parce qu'il s'agit en fait d'une exportation de tous les certificats installés dans votre Keychain, il devrait également être un moyen sûr de le faire. –

+0

Merci @ rudolfo.christ - J'ai mis à jour la réponse. Le '/ usr/local' dans le chemin du certfile aurait du me dire qu'il vient de homebrew ... – user1248490

+0

Cela a fonctionné pour moi quand rien d'autre ne le ferait! – incandescentman

6

Une manière simple de procéder consiste à utiliser le groupe de certificats curl. J'utilise MacPorts, cela a donc été obtenu avec

sudo port install curl-ca-bundle 

Vous pouvez ensuite exécuter port contents curl-ca-bundle pour voir ce qu'il est installé, puis ajoutez ce qui suit à ~/.offlineimaprc dans la section de votre compte à distance

sslcacertfile =/opt/local/share/curl/curl-ca-bundle.crt 

Note que cela mettra également un lien vers ces certificats comme /opt/local/etc/openssl/cert.pem.