Ca-certificate Mac OS X

Мне нужно установить offlineimap и mu4e на emacs. Проблема заключается в конфигурации. Когда я запускаю offlineimap, я получаю:

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

Это мой .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 #??

Существует проблема с установкой python и с сертификатом CA. В точке нет пакета curl-ca-bundle brew. Есть ли другой способ установить сертификат?

Ответы

Ответ 1

У меня была аналогичная проблема (в MacOS 10.10.2, openssl 1.0.2 и offlineimap 6.5.5 как из доморощенного), так и не удалось получить решение для фиктивного сертификата. Тем не менее, я нашел файл certfile, который отключает функцию offlineimap в /usr/local/etc/openssl/cert.pem (который помещается туда во время установки openssl через homebrew, brew info openssl говорит мне). Предостережение: я не знаю, является ли это хорошим или безопасным способом для этого.

Ответ 2

Обычно в OS X нет пакета сертификатов CA, потому что библиотеки SSL обычно используют Apple Security Framework для внутреннего использования и получают сертификаты из Keychain.

Вы можете создать свой собственный пакет из сертификатов Цепочки для ключей, хотя: Откройте Цепочку для ключей, перейдите к категории "Сертификаты" в цепочке ключей "Корни системы" и нажмите Ctrl + Shift + E ("Экспорт элементов"), чтобы сохранить все сертификаты. Я думаю, что Python может обрабатывать формат PEM, поэтому обязательно выберите его.

В качестве альтернативы, в OS X 10.6 и более поздних версиях система Python построена на основе версии OpenSSL, которая также всегда рассматривает Keychain. Следовательно, вы можете создать фиктивный пакет, который содержит только фиктивную самозаверяющую сертификацию, и использовать ее в своей конфигурации для отключения OfflineIMAP. В любом случае, он изучит сертификаты цепочки для ключей.

См. Https://www.mercurial-scm.org/wiki/CACertificates#Mac_OS_X_10.6_and_higher для получения подробной информации.

Ответ 3

Простым способом является использование набора сертификатов завитка. Я использую MacPorts, поэтому это было получено с помощью

sudo port install curl-ca-bundle

Затем вы можете запустить port contents curl-ca-bundle, чтобы увидеть, что он установил, а затем добавьте следующее в ~/.offlineimaprc в разделе для вашей удаленной учетной записи

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

Обратите внимание, что это также добавит ссылку на эти сертификаты как /opt/local/etc/openssl/cert.pem.

Ответ 4

Я добился успеха на Mac с 10.6, где я предпочитаю экосистему Homebrew, используя ответ @patrick-sanan, а затем символическую ссылку в экосистемной версии Macports cert.pem:

sudo rm /usr/local/etc/openssl
sudo ln -s /opt/local/etc/openssl/cert.pem /usr/local/etc/openssl

Ответ 5

Это может произойти, если у вас есть несколько установок openssl (скажем, v1.0.2 и 1.1.1). Если они оба были установлены brew в какой-то момент времени, вам придется удалить их обоих, чтобы устранить конфликт

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

И переустановить один из них, как

brew install [email protected]

Надеюсь, это работает!

Ответ 6

Я выполнил указанную выше команду, заданную @wood-guardian, а затем побежал, чтобы решить проблему.

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

экспортировать результат вышеприведенного оператора в переменную env SSL_CERT_FILE

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