keytool list -rfc -keystore 查看证书信息

               

如果直接把证书放在客户端感觉不安全,可以采用如下的形式,或者从服务器端返回的形式实现

C:\Users\DELL\Desktop>keytool -list -rfc -keystore C:\Users\DELL\Desktop\coffee.keystore输入密钥库口令:密钥库类型: JKS密钥库提供方: SUN您的密钥库包含 1 个条目别名: tomcat创建日期: 2017-1-3条目类型: PrivateKeyEntry证书链长度: 1证书[1]:-----BEGIN CERTIFICATE-----MIIDqDCCApCgAwIBAgIEJVYh6DANBgkqhkiG9w0BAQsFADB8MRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMSAwHgYDVQQDExctZXh0IFNBTj1pcDoxMC4xMDAuMC43MTAeFw0xNzAxMDMwMjI5MjhaFw0xNzA0MDMwMjI5MjhaMHwxEDAOBgNVBAYTB1Vua25vd24xEDAOBgNVBAgTB1Vua25vd24xEDAOBgNVBAcTB1Vua25vd24xEDAOBgNVBAoTB1Vua25vd24xEDAOBgNVBAsTB1Vua25vd24xIDAeBgNVBAMTFy1leHQgU0FOPWlwOjEwLjEwMC4wLjcxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0xwKsYrfXlT+ipLnfTxq9yLc2Jga7yV0dzRkcbYO4DUS1jTvGbjN4vZkQMfAGJ26UQU1/91T3Ik5FEhSooXfg8GDn3rav09MHkW3zIt/C5hiUjubqkXUbvsxreua8DM+89lWeNqPHnzyX6c49AaTUMdnhFuQO9Sl+ps6yRhj/BQGvhlwzemDAkhPQiupLTSJ+Hlw/VJiyhgQdhfaFpmrBaTfSeH2LuZVYHXukv798Cv0EXRq1I9erc78JzLQtRgx7j4+M6av/oJQNqv2Eex5xNGBqR6O14bVdnIlI8nMBbqqpAvrj27ZPXqj7RnutE45EgobRMwJKKxD1oH17CTvVQIDAQABozIwMDAPBgNVHREECDAGhwQKZABHMB0GA1UdDgQWBBRs4FL5PHZDufIq3ZrtoYtcb2PlGjANBgkqhkiG9w0BAQsFAAOCAQEAO1LV9wLu+cvNwitITB22EsSXlkBDDBIa19AUr4mtOdpVKPioG94LOO/j9NinUbGj1sw/Bsj847II11M33KCEOM7XOrkIrB1FeWEbFP0B7mi65X/Vh4UCpB4ObRgNXdqTL/yegxnRrbOmf7q+K1iwK8pINKUTiX40L/7hz8MSMr9q51XpXJeON10s+Wm8Da5KpMnU6IE+W+aM7XtzYEk3Z4qKKFbrvm1RuyS4+Ks46XH01JuaktrTutGxtmxEZn1AQVnylpIAJljJ3fyU71BXTgcXotmPgxdxQanZ5fo/ImjrOi279P7qS/dMI2wlSmThr00/QamOEEnl8Mq5DGmT5g==-----END CERTIFICATE-----**************************************************************************************

注意创建证书的时候 不能包含-----BEGIN CERTIFICATE-----  -----END CERTIFICATE----- 字符串


/**  * 信任所有的证书  */ static class MyX509TrustManager2 implements X509TrustManager {  // 证书  private X509Certificate certificate;  public MyX509TrustManager2() {   try {    String data = // "-----BEGIN CERTIFICATE-----" + //    "MIIDrDCCApSgAwIBAgIEN/LGmzANBgkqhkiG9w0BAQsFADB+MRAwDgYDVQQGEwdVbmtub3duMRAw" + //      "DgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYD" + //      "VQQLEwdVbmtub3duMSIwIAYDVQQDExktZXh0IFNBTj1pcDoxOTIuMTY4LjEuMTAwMB4XDTE3MDEw" + //      "MTEyMDg1M1oXDTE3MDQwMTEyMDg1M1owfjEQMA4GA1UEBhMHVW5rbm93bjEQMA4GA1UECBMHVW5r" + //      "bm93bjEQMA4GA1UEBxMHVW5rbm93bjEQMA4GA1UEChMHVW5rbm93bjEQMA4GA1UECxMHVW5rbm93" + //      "bjEiMCAGA1UEAxMZLWV4dCBTQU49aXA6MTkyLjE2OC4xLjEwMDCCASIwDQYJKoZIhvcNAQEBBQAD" + //      "ggEPADCCAQoCggEBAJknPBkBGO2hNwXH12/WnN3bqnGTMstTb2RswLHRnMW4PHtGu2SEIfjgR/Oa" + //      "GiB+CqLeI8Uycljxfz6Rmd4/izCkUTuxkZaaKM6xxI8wC4HpfEjWGhFJJNFCJWkpZW9P6uCZxsBd" + //      "g/rPDoPd0BxQ3h1CHDeOYE3b/7Po7+6CAD2uwSKqnsjmQEuW+2VE4Aik5wq9Onux04Bv8ORIeGTt" + //      "OhaomaY3ICTidh+823/AWV62Lixa9JVt5ZepLmM4F3Nv61x2XJTX5eMrthbHDXO8LSUj7eCOlerF" + //      "2vZ6o8ZPOlPw2c6jMgUtYOP4NH3h3CsCrWwSj/D3J3xGMacC9uzLMK8CAwEAAaMyMDAwDwYDVR0R" + //      "BAgwBocEwKgBZDAdBgNVHQ4EFgQUcQv0JNB8o2JWLcpHyAjzcXqd7ocwDQYJKoZIhvcNAQELBQAD" + //      "ggEBAAweijP9d+mWWsuIn8Wx7XMNhmsA4HWXwxSlXY/1lzIfmWrGooi8UqoPlw/VZj2e9zvSOaFv" + //      "pqAWdgMSD8tPL2ExTZs54pWaBewEnwN9qht0ka7JjHx1pC8cNpqkhUBWnR4J85go1C8AypZvFSJr" + //      "FtHMSf7KJO4ecTFAZ7/BCsaEzeUF+ToNR/eWlhmabZi9r+MxtJi7538yWuKYAdkIv0BtpdEnOWf7" + //      "L76mWOnifZ/uM7l9ef9uqv4Uc2CW7iR0zm+J7czXGF+XYCl2qmDWyl0JKHHM8PUTBkoj5oXMHdiF" + //      "5GI9+5CDKiujKZIncTeuSjrx2706a0wdSf981tqeae8="; //    // "-----END CERTIFICATE-----";    byte[] byteData = new sun.misc.BASE64Decoder().decodeBuffer(data);    InputStream fin = new ByteArrayInputStream(byteData);    CertificateFactory cf = CertificateFactory.getInstance("X.509");    certificate = (X509Certificate) cf.generateCertificate(fin);    fin.close();   } catch (CertificateException e) {    e.printStackTrace();   } catch (IOException e) {    e.printStackTrace();   }  }  @Override  // for server only  public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {   // 我们在客户端只做服务器端证书校验。  }  @Override  // only trust the given certificate or certificate issued by it  public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {   // 确认服务器端证书的 Intermediate CRT 和代码中 hard code 的 CRT 证书主体一致。   if (!chain[0].getIssuerDN().equals(certificate.getSubjectDN())) {    throw new CertificateException("Parent certificate of server was different than expected signing certificate");   }   try {    // 确认服务器端证书被代码中 hard code 的 Intermediate CRT 证书的公钥签名。    chain[0].verify(certificate.getPublicKey());    // 确认服务器端证书没有过期    chain[0].checkValidity();   } catch (Exception e) {    throw new CertificateException("Parent certificate of server was different than expected signing certificate");   }  }  @Override  public X509Certificate[] getAcceptedIssuers() {   return new X509Certificate[0];  } };


sun.misc.BASE64Decoder
在eclipse中默认是不可访问的, 需要修改 access rules


           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值