在Windows 7上运行的Java 1.7应用程序中,我正在尝试使用服务器进行双向SSL(智能卡令牌通过openSC提供我的客户端证书).服务器的证书正在由客户端验证,但客户端不响应服务器的证书请求.我相信这是因为客户端无法从我的证书链接到服务器请求的链(即使存在这样的链).
这是服务器证书请求的SSL调试和客户端空响应:
*** CertificateRequest
Cert Types: RSA, DSS, ECDSA
Cert Authorities:
<CN=c4isuite-SDNI-DC02-CA, DC=c4isuite, DC=local>
<CN=DoD Root CA 2, OU=PKI, OU=DoD, O=U.S. Government, C=US>
...
*** ServerHelloDone
*** Certificate chain
***
Run Code Online (Sandbox Code Playgroud)
我的客户证书如下:
found key for : Certificate for PIV Authentication
chain [0] = [
[
Version: V3
Subject: CN=<...>, OU=CONTRACTOR, OU=PKI, OU=DoD, O=U.S. Government, C=US
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 2048 bits
Issuer: CN=DOD CA-30, OU=PKI, OU=DoD, O=U.S. Government, C=US
SerialNumber: [ 05bf13] …Run Code Online (Sandbox Code Playgroud) 我正在尝试在使用SSL加密(https)和NTLM身份验证的Sharepoint 2010服务器上进行简单的REST调用。当服务器设置为不需要SSL(仅出于测试目的,服务器将在生产中要求SSL)时,我的NTLM身份验证和后续的REST调用可以使用HttpClient正常运行。但是,启用SSL后,身份验证将不再起作用。
这是SSL处理的代码(设置为接受所有证书):
SSLContext sslContext = SSLContext.getInstance("TLS");
// set up a TrustManager that trusts everything
sslContext.init(null, new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs,
String authType) { }
public void checkServerTrusted(X509Certificate[] certs,
String authType) { }
} }, new SecureRandom());
SSLSocketFactory sf = new SSLSocketFactory(sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme httpsScheme = new Scheme("https", 443, sf);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(httpsScheme);
ClientConnectionManager cm = new SingleClientConnManager(schemeRegistry);
Run Code Online (Sandbox Code Playgroud)
接下来是执行NTML和HTTP GET调用的代码:
HttpParams params = new BasicHttpParams(); …Run Code Online (Sandbox Code Playgroud) 我的设置:
apt-get install也可以以下是我到目前为止配置代理所做的工作:
/etc/profile.d/proxy.sh:
export http_proxy="http://<my_proxy>:<my_port>"
export https_proxy="http://<my_proxy>:<my_port>"
export ftp_proxy="http://<my_proxy>:<my_port>"
Run Code Online (Sandbox Code Playgroud)
为了获得工作能力,修改了/etc/apt/apt.conf.d/01proxy:
Acquire::http::Proxy “http://<my_proxy>:<my_port>"
Run Code Online (Sandbox Code Playgroud)
要在使用sudo时保持env变量,修改/etc/sudoers.d/proxy:
Defaults env_keep += "http_proxy https_proxy ftp_proxy"
Run Code Online (Sandbox Code Playgroud)
我还在设置 - >网络 - >网络代理中设置了HTTP/HTTPS/FTP代理设置,然后单击"应用系统范围".
问题是,当我尝试pip install(有或没有sudo)时,它失败并出现错误:
$ pip -vv install git-review
Downloading/unpacking git-review
Getting page http://pypi.python.org/simple/git-review
Could not fetch URL http://pypi.python.org/simple/git-review: <urlopen error [Errno -2] Name or service not known>
Will skip URL http://pypi.python.org/simple/git-review when looking for download links for git-review
Getting page …Run Code Online (Sandbox Code Playgroud) 看似简单,但我不能让它工作.我想要做的是获取放置在"from"路径中的任何文件,修改其内容,并将修改后的文件放在"to"路径中(扩展名为.txt).这就是我所拥有的:
this.context.addRoutes(new RouteBuilder() {
public void configure() {
from( "file:" + getFromPath() + getOptions() )
.to( "file:" + getToPath() + "?fileName=${file:name.noext}.txt")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
String name = (String) exchange.getIn().getHeader("CamelFileName");
File body = exchange.getIn().getBody(File.class);
String parsedText = modifyFile(body);
exchange.getOut().setBody(parsedText);
}
})
;}
});
Run Code Online (Sandbox Code Playgroud)
输出文件正在创建,但内容与输入文件完全相同.即,文件未被修改.我确认"modifyFile"方法正在返回我想要的内容,但无法将它们写入输出("to")路径.
谢谢您的帮助!