web-dev-qa-db-ja.com

CA証明書Mac OS X

Emacsにofflineimapとmu4eをインストールする必要があります。問題は設定です。 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パッケージがありません。証明書をインストールする他の方法はありますか?

21
Enrico Pirani

同様の問題(MacOS 10.10.2、homesslのopenssl 1.0.2およびofflineimap 6.5.5)があり、ダミーの証明書ソリューションを機能させることができませんでした。しかし、offlineimapが/usr/local/etc/openssl/cert.pem(homesslを介したopensslのインストール中にそこに置かれます、brew info openssl教えてください)。警告:これが良い方法なのか、安全な方法なのかわかりません。

31
user1248490

通常、SSLライブラリは通常Appleのセキュリティフレームワークを内部で使用し、キーチェーンから証明書を取得するため、OS Xには通常CA証明書バンドルはありません。

ただし、キーチェーン証明書から独自のバンドルを作成できます。キーチェーンを開き、「System Roots」キーチェーンの「Certificates」カテゴリに移動し、Command + Shift + E(「アイテムのエクスポート」)を押してすべての証明書を保存します。 PythonはPEM形式を処理できるので、必ず選択してください。

あるいは、OS X 10.6以降では、システムPythonは、alwaysがキーチェーンを調べるOpenSSLバージョンに対してビルドされますしたがって、ダミーの自己署名証明書のみを含むダミーバンドルを作成し、それを構成で使用してOfflineIMAPをシャットダウンすることができます。とにかくキーチェーン証明書を調べます。

詳細については https://www.Mercurial-scm.org/wiki/CACertificates#Mac_OS_X_10.6_and_higher をご覧ください。

13
lunaryorn

続行する簡単な方法は、curl証明書バンドルを使用することです。私は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として配置されることに注意してください。

8
Patrick Sanan

@ wood-guardianが指定した上記のコマンドを実行してから、問題を修正するために実行しました。

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

上記のステートメントの結果をSSL_CERT_FILE環境変数にエクスポートします

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

3
vimal kumar

@ patrick-sananの回答を使用し、cert.pemのMacportsエコシステムバージョンでシンボリックリンクすることにより、Homebrewエコシステムを好む10.6を実行しているMacで成功しました。

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

これは、opensslのインストールが複数ある場合に発生する可能性があります(v1.0.2および1.1.1など)。いずれかの時点で両方がbrewによってインストールされた場合、競合を除去するために両方をアンインストールする必要があります

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

そして、それらの1つを再インストールします

brew install [email protected]

これがうまくいくことを願っています!

0
Wood Guardian