我需要与远程服务器创建Https连接,然后检索并验证证书。
我已经建立好连接:
try {
url = new URL(this.SERVER_URL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
HttpsURLConnection secured = (HttpsURLConnection) con;
secured.connect();
}
但似乎getServerCertificateChain()
方法未由类型定义HttpsURLConnection
。
那么,如何检索服务器证书链?我的理解是getServerCertificateChain()
应该返回一个X509Certificate
对象数组,并且该类具有可用于询问证书的方法。
我需要验证:
我迷路了,非常感谢您的帮助!
您想要的方法是getServerCertificates,而不是getServerCertificateChain
。有一些很好的示例代码在这里。
编辑
添加了一些我自己的示例代码。为您的好起点。不要忘记查看HttpsURLConnection和X509Certificate的Javadocs
。
import java.net.URL;
import java.security.cert.Certificate;
import java.security.cert.CertificateExpiredException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HttpsURLConnection;
public class TestSecuredConnection {
/**
* @param args
*/
public static void main(String[] args) {
TestSecuredConnection tester = new TestSecuredConnection();
try {
tester.testConnectionTo("https://www.google.com");
} catch (Exception e) {
e.printStackTrace();
}
}
public TestSecuredConnection() {
super();
}
public void testConnectionTo(String aURL) throws Exception {
URL destinationURL = new URL(aURL);
HttpsURLConnection conn = (HttpsURLConnection) destinationURL
.openConnection();
conn.connect();
Certificate[] certs = conn.getServerCertificates();
for (Certificate cert : certs) {
System.out.println("Certificate is: " + cert);
if(cert instanceof X509Certificate) {
try {
( (X509Certificate) cert).checkValidity();
System.out.println("Certificate is active for current date");
} catch(CertificateExpiredException cee) {
System.out.println("Certificate is expired");
}
}
}
}
}
我刚刚在Google Cloud上的VM上设置了我的Neo4j服务器,我使用的是企业版4.1.1,并且我已经完成了David Allen关于如何使用LetsEncrypt获得证书的精彩帖子(在这里)。 这一切都工作得很好,我现在有了一个完全安全的Neo4j服务器,我可以通过浏览器()使用我的主机名访问它。但是,我现在在让我的应用程序使用javascript驱动程序连接到服务器时遇到了问题。 我不断
问题内容: 我希望能够以编程方式在Java应用程序中访问所有受信任的根证书。 我当时在看密钥库接口,但我希望获得JRE隐式的受信任根列表。 这可以在任何地方访问吗? 问题答案: 有一个示例显示了如何获取一组根证书,并通过它们进行遍历,这称为在密钥存储区中列出最受信任的证书颁发机构(CA)。这是经过稍微修改的版本,可打印出每个证书(在Windows Vista上测试)。
主要内容:Maven依赖关系,HTTP获取服务器证书示例以下教程演示了如何使用Apache HttpClient 4.5从资源服务器获取证书。 证书用于通过使用SSL / TLS的HTTPS保护客户端和服务器之间的连接。 当您需要有关证书的详细信息时,例如:证书何时到期?谁颁发证书?等等。或者在某些情况下需要读取服务器证书。 在下面的例子中,我们将详细解释如何实现。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apache 版本。 将以
局域网IP地址怎么生成受信任的SSL证书?比如启明星辰的设备ip地址证书就是受信任的。
问题内容: 我正在尝试编写一个使用javax.mail API发送邮件的SSL客户端。我遇到的问题是服务器请求我使用SSL,但是服务器还配置了非标准SSL证书。我发现的网页说我需要将证书安装到信任库中。我不想这样做(我没有必要的权限。) 有没有办法让Java忽略证书错误并接受它? 失败了,有没有办法让信任库在我的程序中是本地的,而不是在整个JVM中都安装? 问题答案: 您需要创建一个伪造的Trus
这不是此帖子的副本。我试过那里的解决方案,但在我的情况下没有任何效果。 我使用的是Windows和Python 3.6.5。我有一个用于TLS客户端的python脚本。我需要连接到的服务器使用自签名证书。当我尝试使用我的脚本连接到它时,我得到以下错误: