web-dev-qa-db-ja.com

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

このブログ から。

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

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

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

OS Xで信頼される中間CAを明示的に信頼解除する方法を書くのは良い機会だと思いました。ルートCAが新しい中間体を同じ組織に渡すのを止めることはありませんが、何もしないよりはましです。

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

18
raphael

物事を難しくするために、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を削除する以外に何もできませんトラストアンカーストア(最終的にインターネットの半分を信用しないため、シマンテックルートCAだとはばかげているでしょう)に対して、NSSに依存するアプリケーションは、Blue Coat証明書を含むチェーンを信用しないように、より詳細に設定できます。 。

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

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

8
garethTheRed

まだコメントできないので、ここでコメントする必要があります。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

0
Diagon