java - 如何打印发送到服务器的 SSL 证书?
问题描述
我正在尝试调试以下错误:
javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
at sun.security.ssl.ClientHandshaker.handshakeAlert
at sun.security.ssl.SSLSocketImpl.recvAlert
(...)
我已经解决了这里描述的 SNI 扩展问题:SSL 握手警报:unrecognized_name error since upgrade to Java 1.7.0
我仍然收到错误,所以我想打印我发送到服务器以进行调试的 SSL 证书。这是我的代码:
URL url = new URL(text);
HttpsURLConnection conn = (HttpsURLConnection)
url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-length", String.valueOf(query.length()));
DataOutputStream os = new DataOutputStream(conn.getOutputStream());
os.writeBytes(query);
Certificate[] certs = conn.getLocalCertificates();
for (int i = 0; i < certs.length; i++) {
System.out.println("########### LocalCertNr " + String.valueOf(i) + " ##############");
System.out.println(certs[i].toString());
}
我的问题是,在我点击os.writeBytes(query)
连接之前尚未打开并且我无法读取证书,但我无法打开它,因为在点击OutputStream
或InputStream
点击帖子开头的错误之后。
如何打印HTTPSURLConnection
要发送的证书?
解决方案
推荐阅读
- javascript - 如何在 JS 中显示当前节点的 HTML 类
- teiid - 当我尝试创建 vdb 时出现 Teiid 12.2.1 ClassCastException
- python - 在 python 中分箱和绘制地理空间数据
- javascript - 一年中的最后一天:适用于任何时区的代码
- r - 根据其他列中的最小值查找列值和名称
- yaml - 未找到错误的实际含义。错误: ”(
): 在第 3 行第 16 列的上下文中不允许映射值" - javascript - 打字稿减速器单元测试
- c# - UWP x:绑定问题 - 无效的绑定路径“dpl”:在类型“DataTemplate”上找不到属性“dpl”
- c# - Gmail API 返回的文本/纯内容编码存在差异
- jquery - 允许 HTML 表格尽可能宽