web-dev-qa-db-fra.com

certificats ca Mac OS X

J'ai besoin d'installer offlineimap et mu4e sur emacs. Le problème est la configuration. Lorsque je lance offlineimap, je reçois:

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']

C'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 d'installation avec python et un problème avec le certificat de l'autorité de certification Le point est-il pas de tout emballage de brassage curl-ca-bundle. Y at-il un autre moyen d'installer un certificat?

18
Enrico Pirani

J'ai eu un problème similaire (sur MacOS 10.10.2, openssl 1.0.2 et offlineimap 6.5.5 de Homebrew) et je n’ai pas pu faire fonctionner la solution de certificat factice. Cependant, j'ai trouvé un fichier de certification qui permettait à offlineimap de cesser de se plaindre dans /usr/local/etc/openssl/cert.pem (qui y est placé lors de l'installation d'OpenSL via homebrew, brew info openssl me dit). Mise en garde: Je ne sais pas si c'est un bon moyen ou un moyen sûr de le faire.

29
user1248490

Il n’existe généralement aucun ensemble de certificats d’autorité de certification sous OS X, car les bibliothèques SSL utilisent généralement Security Framework d’Apple en interne et obtiennent des certificats auprès de Keychain.

Vous pouvez créer votre propre ensemble à partir de certificats de trousseau: ouvrez le trousseau, accédez à la catégorie «Certificats» du trousseau «Racines système» et appuyez sur Commande + Maj + E («Éléments d'exportation») pour enregistrer tous les certificats. Je pense que Python peut gérer le format PEM, assurez-vous donc de le sélectionner.

Autrement, sous OS X 10.6 et plus récent, le système Python est construit sur une version OpenSSL qui always examine également le trousseau. Par conséquent, vous pouvez créer un bundle factice contenant uniquement une certification factice auto-signée et l'utiliser dans votre configuration pour arrêter OfflineIMAP. De toute façon, il examinera les certificats de trousseau.

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

12
lunaryorn

Une façon simple de procéder consiste à utiliser le paquet de certificats curl. J'utilise MacPorts, donc cela a été obtenu avec

Sudo port install curl-ca-bundle

Vous pouvez ensuite exécuter port contents curl-ca-bundle pour voir ce qu’il a installé, .__, puis ajouter les éléments suivants à ~/.offlineimaprc dans la section relative à votre compte distant.

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

Notez que cela mettra également un lien vers ces certificats en tant que /opt/local/etc/openssl/cert.pem.

6
Patrick Sanan

J'ai exécuté la commande ci-dessus donnée par @ wood-guardian, puis j'ai couru pour résoudre le problème.

Ruby -ropenssl -e "p OpenSSL :: X509 :: DEFAULT_CERT_FILE"

exporter le résultat de l'instruction ci-dessus vers la variable env SSL_CERT_FILE

export SSL_CERT_FILE =/usr/local/etc/openssl/cert.pem

1
vimal kumar

J'ai eu du succès sur un Mac fonctionnant sous la version 10.6, où je préfère l'écosystème Homebrew en utilisant la réponse de @ patrick-sanan, puis en créant une liaison symbolique dans la version de Cert.pem de l'écosystème Macports:

Sudo rm /usr/local/etc/openssl
Sudo ln -s /opt/local/etc/openssl/cert.pem /usr/local/etc/openssl
0
Parochial Dremel

Cela peut arriver si vous avez plusieurs installations d’openssl (par exemple, v1.0.2 et 1.1.1). S'ils ont tous deux été installés par brew à un moment donné, vous devrez les désinstaller tous les deux pour éliminer le conflit.

brew uninstall --ignore-dependencies --force [email protected]
brew uninstall --ignore-dependencies --force openssl

Et le réinstaller l'un, comme

brew install [email protected]

J'espère que ça marche!

0
Wood Guardian