Linuxの中間CAを信頼しない?


18

このブログから。

中間CAは、ルートCAによって署名された証明書であり、任意のWebサイトの任意の証明書に署名できます。

ルートCAと同じくらい強力ですが、システムが信頼するものの完全なリストはありません。ルートCAは自由に新しいものを作成でき、システムはそれらを一目で信頼できるからです。CTに何千人もログインしています。

今月、興味深いものがポップアップし、明らかに2015年9月に生成されました。シマンテックが署名した「Blue Coat Public Services Intermediate CA」です。(このCAによって署名された証明書は、これまでにCTログまたはCensysに到達していません。)

そうでなければ、OS Xで信頼される中間CAを明示的に信頼しない方法を書くのは良い機会だと思った。

Ubuntuのブログで手順を試したときに、この証明書https://crt.sh/?id=19538258をダウンロードします。.crtを開くとGnomeキーリングにインポートされますが、インポート後に証明書を「信頼しない」方法を見つけることができませんでした。

回答:


8

物事を難しくするために、Linuxには証明書を操作するための複数のライブラリがあります。

MozillaのNSSを使用している場合は、certutil-t trustargsオプションを使用して、証明書を積極的に信頼できません(その用語)。

$ certutil -d <path to directory containing database> -M -t p -n "Blue Coat Public Services Intermediate CA"

Firefoxの場合、<path to directory containing database>通常はランダムに見える文字が~/.mozilla/firefox/<???>.profileどこにあり<???>ます。(certutilは、例えば、ubuntuのlibnss3-toolsパッケージにあります)

内訳は次のとおりです。

-M データベースを変更するには

-t p 信頼を禁止に設定する

-n 指定された証明書で操作を実行する

NSS内でも、すべてのアプリケーションが同じデータベースを共有するわけではありません。そのため、このプロセスを繰り返す必要があります。たとえば、Chromeで同じことを行うには、をに変更-d <path>-d sql:.pki/nssdb/ます。

$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"

ただし、すべてのアプリケーションがNSSを使用するわけではないため、これは完全なソリューションではありません。たとえば、OpenSSLライブラリを使用してこれを行うことは不可能だと思います。

結果として、OpenSSLを使用して証明書チェーンビルディング(TLS、IPSecなど)を提供するアプリケーションは、Blue Coat証明書を使用してチェーンを信頼し、署名元のルートCAを削除する以外にできることはありません。トラストアンカーストア(インターネットの半分を信頼しなくなるため、Symantec Root CAであると考えるのはばかげています) 。

たとえば、OpenVPNは証明書のライブラリとしてOpenSSLを使用するため、OpenVPNを使用する商用VPNプロバイダーに接続している場合、兄貴は知らないうちにOpenVPNトラフィックを聞いている可能性があります。本当に心配な場合は、商用VPNプロバイダーのルートCAを確認してください。Symantec/ Verisignの場合は、誰か他の人のためにそれらを捨てるべき時でしょうか?

SSHはX509証明書を使用しないため、Blue Coat MITM攻撃を心配することなく、SSHを使用して接続およびトンネリングできることに注意してください。


質問を更新して、証明書をダブルクリックするとgnomeキーリングにインポートされたことを示しました。以下の回答で、Firefoxにインポートする方法を見つけることができました。
ラファエル

OpenSSLの場合、証明書を削除することは、信頼しないことと同じではありませんか?結局は、知っている証明書のみを検証できます。
ブラッチリー

1
@Bratchley-TLSハンドシェイクの一部として疑わしい証明書が(あるべきように)送信された場合はどうなりますか?Mozilla NSS、Windows、OS-X のように、常に信頼できないと主張する方法がない限り、単純に信頼されます。
garethTheRed

@garethTheRed何かが足りないかもしれませんが、ライブラリで証明書の検証が必要な場合、CRLを実行したり、信頼されたルートCAを削除したりしても問題は解決しませんか?クライアント証明書でもサーバー証明書でも、検証が必要です。
ブラッチリー

1
はい。Bluecoatは、中間者デバイスで使用するために、VerisignからCA証明書を発行されました。OPは、この証明書を信頼しない方法を尋ねます。したがって、これは下位証明書を信頼しないことに関するものであり、上位の発行CA(この場合はルート)は、あなたが言うようにルート(Verisign)を信頼しない場合は失効しません。
garethTheRed

0

まだコメントできないので、ここでコメントする必要があります。UbuntuGnome 15.10で@garethTheRedのアプローチを使用すると、次のようになります。

~$ certutil -d ~/.mozilla/firefox/<directory>.default -M -t p -n "Blue Coat Public Services Intermediate CA" 
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_BAD_DATABASE: security library: bad database.

~$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_UNRECOGNIZED_OID: Unrecognized Object Identifier.

「Blue Coat Systems、Inc.」動作しません。

(これはインポートした証明書です:https : //crt.sh/?id=19538258


最初に証明書をダウンロードしてインポートしましたか?
ラファエル

はい、私はこの1つをインポート: crt.sh/?id=19538258。(私は今コメントできるようです!:)
ダイアゴン

自分の答えにしかコメントできないと思います。私はまだ実際に手順を試していません。
ラファエル

以下の私の答えを参照してください
ラファエル

@raphael- 上記リンクでは「-t p」を「禁止(明示的に不信)」と記述していますが、Ubuntu 15.10のマニュアルページでは「p-有効なピア」と記述されています。あなたが間違ったことをしなかったことを願っています。
ダイアゴン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.