簡體   English   中英

Restlet發送客戶端證書

[英]Restlet sending client certificate

我正在使用restlet創建具有服務器和客戶端認證的HTTPS通道。 我對服務器進行證書沒有問題(即讓服務器公開證書並從客戶端信任它),但是我不知道如何發送客戶端證書。 下面是服務器的重要代碼:

Server server = component.getServers().add(Protocol.HTTPS, config.getInt("server.port"));
        Series<Parameter> parameters = server.getContext().getParameters();
        parameters.add("keystorePath", config.getString("keystore.path"));
        parameters.add("keystorePassword", config.getString("keystore.password"));
        parameters.add("keyPassword", config.getString("key.password"));
        parameters.add("keystoreType",config.getString("keystore.type"));
        /* true */
        parameters.add("needClientAuthentication", config.getString("need.client.authentication"));

客戶端配置如下:

if(config.getBoolean("truststore.use")){
            Series<Parameter> parameters = client.getContext().getParameters();
            parameters.add("truststorePath", config.getString("truststore.path"));
            parameters.add("truststorePassword", config.getString("truststore.password"));
            // parameters.add("trustPassword", "password");
            parameters.add("truststoreType", config.getString("truststore.type"));
        parameters.add("keystorePath", config.getString("keystore.path"));
        parameters.add("keystorePassword", config.getString("keystore.password"));
        parameters.add("keyPassword", config.getString("key.password"));
        parameters.add("keystoreType",config.getString("keystore.type"));

        }

直到needClientAuthentication為false為止,一切正常。 通過將needClientAuthentication設置為true,它將開始失敗,並且由於我沒有發送客戶端證書,所以可以預期。 引發的異常具有followint消息:

Software caused connection abort: recv failed

但我不知道,也沒有找到有關如何發送客戶端證書的示例。

我什至在客戶端上添加了密鑰庫信息,並將服務器上的約束放寬到wantClientAuthentication ,但是似乎沒有證書來自服務器。

我發現了麻煩。 顯然,直到服務器上也配置了信任存儲后,服務器才開始向客戶端請求證書。 通過配置信任庫,可以正確進行相互認證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM