首先,我知道以前有人问过这个问题,但我尝试了提出的解决方案,但没有结果。
我正在尝试用java开发一个简单的程序,它连接到一个网站,并从那里托管的文本文件中读取。一开始我以为证书会造成问题,因为在没有收到警告的情况下,我无法在firefox上打开网站。Internet explorer不会产生任何问题。代码如下:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.*;
public class insig
{
public static void main(String[] args) throws IOException
{
URL fpath = new URL("website/test.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fpath.openStream()));
String Reader = null;
while((Reader = br.readLine()) != null)
{
System.out.println(Reader);
}
}
}
我尝试的第一件事是Java提供的解决方案:sun.security.provider.CertPath.SunCertPathBuilderException:无法找到请求目标的有效认证路径,但没有成功。试着调试,虽然我对此并不是很了解,但在http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/readdebug.html的帮助下,我能够理解,在找到可信证书部分之前,所有的事情都是相应的。已经检查了是否将证书添加到正确版本的jre中,但仍然存在同样的问题。
这个问题可以和网站所有者一起解决吗?它只是因为这不会只在我的PC上运行,所以它不方便配置每一个运行的PC上的一切。
再说一遍,有三种方式:
>
在JRE存储中添加证书链(使用keytool命令为yes)。
创建您自己的存储(再次使用keytool)并随程序提供它,并将其设置为-d属性。
正如我给你的链接中所说的,请看我的评论:
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
//Vadim: here is the place to check client certs and throw an exception if certs are wrong. When there is nothing all certs accepted.
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
//Vadim: here is the place to check server certs and throw an exception if certs are wrong. When there is nothing all certs accepted.
}
} };
// Install the all-trusting trust manager
final SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// Create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
// Here is the palce to check host name against to certificate owner
return true;
}
};
// Install the all-trusting host verifier
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
URL url = new URL("https://www.google.com");
如果您将按原样使用它,那么将不会有任何证书验证--所有证书和所有主机都被接受。
我试图访问我的应用程序中的网址,但我得到了这个错误。 我尝试应用所有这些修复,但没有成功:http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/ 很快,它需要运行InstallCert应用程序(j
我最近为我的maven repo(Apache代理背后的人工制品)切换到了letsencrypt证书。通过浏览器访问回购协议工作正常,证书没有问题(下面的屏幕截图)。 如果我手动将证书导入到java密钥库中,它也可以工作。 但是根据这个SO问题,Java应该接受以8u101开头的lets加密证书。 我总是遇到这样的例外:
我正在使用WSO2 API管理器和Keyclope服务器进行API网关和用户身份验证。两者都在Openshift 3.11上运行。在浏览器上,尝试重定向到wso2 apim上的存储页面时出现以下错误。此外,我正在为这两个服务器使用一个使用keytool生成的自签名证书,它还分别导入到JVM cacerts中。Open JDK版本为1.8。 我在使用javax时遇到了致命的问题。网ssl。SSLEx
我在Glassfish上有一个使用GoDaddy SSL证书的JAVA EE webapp。HTTP侦听器重定向到HTTPS侦听器。 我正在尝试让从Googlebot爬虫的网络应用程序中获取页面。该代码在未启用SSL的暂存服务器上按预期工作。但是,在具有GoDaddy SSL证书的实时服务器上,当尝试获取网页时,我会收到以下错误。 我已经尝试了这里指定的解决方法(http://www.mkyong
连接Ex:javax.net.ssl.sslHandShakeException:Sun.Security.Validator.ValidatoreXception:PKIX路径构建失败:Sun.Security.Provider.CertPath.SunCertPathBuilderException:找不到请求目标的有效证书路径 代码:
我正在尝试使用twitter4j库为我的Java项目获取tweets,该项目使用(可以在stack trace中看到)。在第一次运行时,我收到一个关于证书和的错误。然后我通过以下方式添加了twitter证书: 但没有成功。下面是获取Tweets的程序: 这里有一个错误: