获取服务端https证书 - Java版
2017-12-20 17:54
573 查看
接上篇,用java代码实现一下获取远程服务端证书,还是拿新浪首页测试,上代码:
运行看效果,得到的输出:
与之前是一样的。
package org.test; import java.net.URL; import java.security.MessageDigest; import java.security.cert.Certificate; import java.security.cert.X509Certificate; import javax.net.ssl.HttpsURLConnection; public class Application { public static void main(String[] args) throws Exception { URL url = new URL("https://www.sina.com.cn"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.connect(); Certificate[] certs = conn.getServerCertificates(); //会拿到完整的证书链 X509Certificate cert = (X509Certificate)certs[0]; //cert[0]是证书链的最下层 System.out.println("序号:" + cert.getSerialNumber()); System.out.println("颁发给:" + cert.getSubjectDN().getName()); System.out.println("颁发者:" + cert.getIssuerDN().getName()); System.out.println("起始:" + cert.getNotBefore()); System.out.println("过期:" + cert.getNotAfter()); System.out.println("算法:" + cert.getSigAlgName()); System.out.println("指纹:" + getThumbPrint(cert)); conn.disconnect(); } private static String getThumbPrint(X509Certificate cert) throws Exception { MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] der = cert.getEncoded(); md.update(der); byte[] digest = md.digest(); return bytesToHexString(digest); } private static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } }
运行看效果,得到的输出:
序号:78653003708979598891221754220386804014 颁发给:CN=sina.com, OU="Sina.com Technology(China)Co.,ltd", O="Sina.com Technology(China)Co.,ltd", L=Beijing, ST=Beijing, C=CN 颁发者:CN=GeoTrust SSL CA - G3, O=GeoTrust Inc., C=US 起始:Tue Feb 21 08:00:00 CST 2017 过期:Tue Nov 26 07:59:59 CST 2019 算法:SHA256withRSA 指纹:6ce7b869e4d6f77a31a967af2dc1b904fd059aa3 |
相关文章推荐
- 获取服务端https证书 - Java版
- java 获取https 网站内容(不需要导入证书)
- 获取服务端https证书
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- 获取服务端https证书
- https本地证书实现(安卓-java)
- 利用SSL For Free工具3分钟获取Let's Encrypt免费SSL证书(https免费证书)
- java https 忽略证书 过期方式
- java(13)--配置https加密连接器并生成数字证书
- Https网站中的安全证书导入到java中的cacerts证书库
- Java获取http和https协议返回的json数据
- 关于客户端通过证书获取https接口数据
- HTTPS 客户端验证 服务端证书流程
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
- 如何把Https网站中的安全证书导入到java中的cacerts证书库中?
- java 数字证书信息的获取实例-java学习笔记(2)
- CentOS7&Nginx环境Let`s Encrypt (HTTPS)证书获取
- 使用httpClient连接https时使用服务端证书(self-signed certificate)的方法
- java ssl https 连接详解 生成证书
- android https通过载入pfx证书获取数据