获取服务端https证书 - Java版

接上篇,用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

与之前是一样的。

时间: 2024-10-28 20:17:53

获取服务端https证书 - Java版的相关文章

关于支付宝app支付服务端的实现-Java版

前言 最近在工作中需要使用支付宝app支付,在初次使用过程中也不可避免的出现了一些问题,那么本次随笔主要是概述支付宝app支付服务端的整个实现过程以及就服务端出现的一些问题做一些总结. 1.准备工作 1.1 入驻蚂蚁金服开放平台 https://open.alipay.com/platform/home.htm 1.2 创建应用 首先需要创建一个应用. 然后需要设置应用公钥. 下载支付宝密钥生成器.生成成功之后将公钥复制到这里. 最后提交审核,等待. 2.Maven依赖 首先需要下载SDK,ht

http的post方式连接服务器,发送数据到服务端,并获取服务端的数据

大概的流程是:客户端填写了用户名和密码,在服务端进行判断,验证密码如果正确,则返回登录成功,如果密码错误,则返回登录失败 客户端是java程序,具体代码如下: package lgx.java.test; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Unsupport

atitit.Atitit. Gui控件and面板-----服务端控件 java struts的实现最佳实践

atitit.Atitit.  Gui控件and面板-----服务端控件 java struts的实现最佳实践 1. 服务器控件的类别 1 1.1. 数据控件:该类控件可细分为两种类型:数据源控件和数据绑定控件. 1 1.2. 站点导航控件: 1 1.3. WebParts控件: 1 1.4. 登录控件: 1 1.5. Ajax 控件 1 2. jsf 2 3. Apache  ecs 2 4. Custom ui control... 2 5. Struts UI Tags display d

linux系统下配置tomcat 服务端https加密

原理:将证书(也可以叫公钥)+私钥转化成 jks类型的keystore文件,在tomcat的server.xml中配置开启踩坑:1.多数文章都是针对自己生成证书,配置双向加密,其过程有生成,合并,导出,配置服务端,配置客户端等等,看的一塌糊涂2.多数文章都是以实验为参考,误以为生成的keystore文件名可以随意命名,直接使用拷贝命令的方式生成了一个tomcat.keystore文件正确的命令方式应该是(证书名.keystore),或者说是生成证书时的CN名称3.clientAuth="true

WCF客户端获取服务端异常[自定义异常]

引言 经过不断的摸索,询问/调试,终于学会了关于WCF客户端与服务端之间异常的处理机制,在此来记录自己的成果,用于记录与分享给需要的伙伴们. 首先感谢[.NET技术群]里群主[轩]的大力帮助,如有需要大家也请欢迎加入[.NET技术群](群号:199281001),一起讨论交流.NET技术(ASP.NET MVC4.MVC5/C#/WPF/WCF),但愿大家在技术上有更多的成就,废话不多说,直接开始分享. 关于WCF服务端的原生抛出异常,我就不多说了,相信大家找到这篇博文的时候,已经尝试过诸多方法

开源IM项目整理(iOS,Android,服务端server,windows版)

最近做IM项目,找了一些IM相关的项目了解,以下是一些开源IM项目,可以借鉴下. 一 蘑菇街开源的IM项目,各个端都有. server: http://download.csdn.net/detail/blackchen2004/8121231 windows: http://download.csdn.net/detail/blackchen2004/8121243 ios: http://download.csdn.net/detail/blackchen2004/8121221 andro

微信支付 获取RSA加密公钥API JAVA版

近做微信支付  企业付款到银行卡,其中收款方银行卡号.收款方用户名需要获取RSA加密公钥API进行加密:本文以windows为例: 微信开发文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_7&index=4 openssl下载地址:http://slproweb.com/products/Win32OpenSSL.html 获取接口: 首先要通过接口获取PKCS#1格式的公钥,再转为PKCS#8格式

JSP通过AJAX获取服务端的时间,在页面上自动更新

1.在页面上引入js <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> <script src="../scripts/jquery.min.js" type="text/javascript">&l

文件上传简单服务端和客户端 Java 实现

背景 楼主最近很悲惨,下载了 Android 的源码,然后 mac 的硬盘空间就没了,而且编译 Android 源码需要将创建一个大小写不敏感的分区,所以需要将源码存在别的地方,最初是使用的硬盘,但是失败了(硬盘用的 exfat 格式), 后来用云盘,笔记,QQ 都不行,要么文件过多不给传,要么要收费,总之就是不行,正当踌躇之际,想起了一句老话,'自己动手,丰衣足食', 所以萌生了自己写个工具的念头,当然,给自己用的,不需要写的那么好,但是写的过程中出现了一些小问题,所以写这篇博客记录一下. 问