我在一台服务器上有一个Web服务,在另一台服务器上有一个Java客户端。目前所有呼叫都是通过HTTP进行的,但我希望通过HTTPS和基本身份验证使服务更安全,我只希望我的客户端能够进行呼叫。我的Web服务器接收请求是Apache httpd。
我在apache conf中设置了如下指令:
<Location /mypath>
Order Deny,Allow
Deny from all
Allow from all
AuthType Basic
AuthName "My Web Service Login"
AuthBasicProvider file
AuthUserFile "/usr1/apache/passwd/passwords"
Require user myuser
</Location>
密码文件只有一个条目,对于myuser
<IfModule ssl_module>
ServerName www.myserver.com
SSLEngine on
SSLCACertificateFile "/usr1/apache/conf/ssl/myCAList.pem"
SSLCertificateFile "/usr1/apache/conf/ssl/myserver.crt"
SSLCertificateKeyFile "/usr1/apache/conf/ssl/myserver.pem"
SSLVerifyClient require
</IfModule>
我认为我已正确设置服务器(以防万一)。但是,当我可以安全地重启apache时,我无法再测试这一小时。
我需要帮助的是我不确定如何配置客户端。这是一个简单的示例调用(使用httpclient 4.5.1):
HttpClient client = HttpClient.createDefault();
HttpGet httpGet = new HttpGet(URI);
HttpResponse httpRes = client.execute(httpGet);
我知道我需要在URI上指定https而不是http,但我该如何
1)发送基本认证的用户名和密码
2)确保我的客户端服务器信任Web服务服务器的证书
3)客户端服务器上需要哪些证书以及SSL连接
谢谢!