2012-10-22 16 views
1

在我當前的基於netty(3.5.2)的服務器I am able to ask the client for a certificate using TLS renegotiation中。根據資源的類型,我希望向客戶請求一組不同的證書。這可以通過發送正確設置的TLS CertificateRequest signal with the certificate_authorities field的服務器完成。兩組資源,我想我的服務器上區分有:在TLS重新協商期間更改TrustManager的接受發佈者

  1. 默認:資源要求客戶證書已經由已知X509TrustManager
  2. 資源的CA簽署,就是想看到任何用戶的證書 - 爲服務,旨在幫助調試客戶端證書,這是非常有用的(給我你有什麼證書,我會告訴你,如果它符合我們所知道的關於這個問題的標準)

在Java受信任CA的列表由X509TrustManager.getAcceptedIssuers()方法設置。但是,一旦設置了SSLContext似乎沒有辦法改變這一點。我期望SSLParameters class有一些選項可用,但是沒有方法可以讓人至少設置空值certificate_authorities列表。

一種令人不滿意的方式是爲空請求的證書頒發機構打開一個新的端口,並通過將資源分離到這些不同的端口來區分資源。有沒有人知道避免開放新港口?

回答

0

您需要安裝自己的TrustManager。有關詳細信息,請參閱JSSE參考指南。

+0

是的,我可以在命令行上將我的TrustManager設置爲[我在RWWPlay wiki頁面上解釋](https://github.com/read-write-web/rww-play#getting-going)(請參閱實現在[NettyServer]中(https://github.com/bblfish/Play20/blob/44d532cadb9fbdcb4c42e20e71de45f1d668fab5/framework/src/play/src/main/scala/play/core/server/NettyServer.scala#L43)class)。這不是問題。問題是這不允許'Servlet'(Play中的'Action')選擇TrustManager。在同一個TLS端口1上,我不能擁有兩個不同的資源,要求提供空cert_auth列表,另一個用於默認值。 –

相關問題