2016-05-05 57 views
3

tls.ConfigClientCAsClientAuthのオプションを使用して、Go HTTPアプリケーションで証明書ベースのクライアント認証を行っています。クライアントCRLを提供されたCRLと照合することも可能ですか?私はx509パッケージにCRLの周りのいくつかの機能がありますが、私はそれらを使用するようにHTTPサーバを設定する方法がわかりません(つまり、CRLをも引き起こすようなtls.Configのオプションはないようです中古)。GolangのCRLに対するクライアント証明書を確認するにはどうすればよいですか?

答えて

6

クライアント証明書を指定されたCRLと照合することもできますか。

はい、あなたの質問に正しく記載されているように、crypto/x509パッケージに含まれている機能によって可能です。しかし、crypto/tls.Config(消費されるnet/http)のような高レベルのインターフェイスはそれを提供しません。おそらく、CRLに対する検査を実施する良い機会は、net/http.Request.TLS.PeerCertificatesを調べることです。

少し背景:crypto/tls is maintained by security expert Adam Langleyopinion on revocation checking(元のソースはhis blog)です。私には証拠はありませんが、これは意図的な意思決定であると考えられます。

+0

@flowloありがとうございました。あなたが提案したPeerCertificatesオプションについて詳しく説明します。アダムのCRLに関する記事については、クライアント側の視点から彼が何を言っているのかを知ることができます。ただし、サーバー側の認証にcertsを使用する場合、CRLは依然として重要です。 – Bryan

+1

ピア証明書を手動で検証することは有効なアプローチです。サーバーコールスタックのどこかでミドルウェアとして実行するだけで済むでしょう。将来の参考として、https://github.com/cloudflare/cfssl/blob/master/revoke/revoke.goのコードには、実際にピア証明書をCRLと比較する良い例がいくつかあります。 – Bryan

関連する問題