web-dev-qa-db-ja.com

サーバーとクライアントの両方としてTLS証明書を使用しますか?

ドメインベースのIDを持つフェデレーションサーバー間プロトコルの場合、認証メカニズムとしてTLSクライアント証明書を使用することを考えています。各ピアのTLSサーバー証明書を他のピアと接続するためのクライアント証明書として再利用することが、これを実装するための最も簡単なアプローチであると私は考えました。

ただし、この単一のTLS証明書の二重使用が安全であると見なすことができるかどうかはわかりません。署名と暗号化の両方に秘密鍵を使用することが問題となるのと同様に、サーバー証明書とクライアント証明書の両方として単一の証明書を使用することから特別なリスクが発生しますか?単なる利便性から深刻なセキュリティ問題を引き起こさないようにしたいと思います。

1

このスキームは、sendmail(MTA)とOpenVPNによく使用されます。それはまともです、そして私は今までただ一つの落とし穴を見つけました:

/各サーバーで、次のホワイトリストを携帯する必要があります。

  • 許可されたCA(おそらく、しかし害はありません)
  • 許可されたクライアント

クライアントを指定する方法は、特定のソフトウェア次第です。 CN(commonName)を指定し、提示された証明書が①そうでなければ良好であり、②指定されたCAによって署名されていることを要求することをお勧めします。

私はこれでSSLクライアント証明書ベースのSMTPリレーを実装しています(一日中いつでもSASLを打ち負かします、IMHO:メーラー(MUA)はローカルホストに送信し、ローカルホストは(公式の)証明書を使用してスマートホストに接続します。中継を許可する証明書)。これを使用したOpenVPNのセットアップはあまり一般的ではありませんが(ほとんどの人は1つの手作りCAをホワイトリストに登録し、それによって署名されたすべての証明書を許可します)、まだ使用されています(つまり、珍しいことでもありません)。

1
mirabilos