gboat2.base.bridge.util.security
类 CertificateUtil

java.lang.Object
  继承者 gboat2.base.bridge.util.security.CertificateUtil

public class CertificateUtil
extends Object

对加密、解密证书进行操作的工具类。 JDK 中与证书操作相关的命令:

 1. 生成keyStroe文件: 
 keytool -genkey -validity 36000 -alias www.glodon.com -keyalg RSA -keystore D:/glodon.keystore
 其中
     -genkey 表示生成密钥 
     -validity 指定证书有效期,这里是 36000 天 
     -alias 指定别名,这里是 www.glodon.com 
     -keyalg 指定算法,这里是 RSA 
     -keystore 指定存储位置,这里是 D:/glodon.keystore 
 控制台输出:
     输入keystore密码:  
     再次输入新密码:  
     您的名字与姓氏是什么?  
       [Unknown]:  www.glodon.com  
     您的组织单位名称是什么?  
       [Unknown]:  glodon  
     您的组织名称是什么?  
       [Unknown]:  glodon  
     您所在的城市或区域名称是什么?  
       [Unknown]:  BeiJing  
     您所在的州或省份名称是什么?  
       [Unknown]:  BeiJing  
     该单位的两字母国家代码是什么  
       [Unknown]:  CN  
     CN=www.glodon.com, OU=glodon, O=glodon, L=BeiJing, ST=BeiJing, C=CN 正确吗?  
       [否]:  Y  
       
     输入 <tomcat> 的主密码  
             (如果和 keystore 密码相同,按回车):  
     再次输入新密码:  
 这时,在 D 盘下会生成一个 glodon.keystore 的文件。 
 
 2. 生成自签名证书 ,光有keyStore文件是不够的,还需要证书文件,证书才是直接提供给外界使用的公钥凭证。 
 导出证书: 
 keytool -export -keystore d:\glodon.keystore -alias www.glodon.com -file D:/glodon.cer -rfc
 其中 
     -export 指定为导出操作 
     -keystore 指定 keystore 文件 
     -alias 指定导出 keystore 文件中的别名 
     -file 指向导出路径 
     -rfc 以文本格式输出,也就是以 BASE64 编码输出 
 控制台输出:
     输入keystore密码:  
     保存在文件中的认证 
     
 普及一下使用 JarSigner 对代码进行签名的小知识: 
 jarsigner -storetype jks -keystore glodon.keystore -verbose glodon-example.jar www.glodon.com
 控制台输出:
     输入密钥库的口令短语:  
      正在更新: META-INF/WWW_GLODON.SF  
      正在更新: META-INF/WWW_GLODON.RSA  
       正在签名: org/glodon/security/Security.class  
       正在签名: org/glodon/example/Main$1.class  
       正在签名: org/glodon/example/Main$2.class  
       正在签名: org/glodon/example/Main.class  
       
     警告:  
     签名者证书将在六个月内过期。  
 
 签名完成后,还可以使用 JarSigner 对签名后的 jar 进行校验: 
 jarsigner -verify -verbose -certs glodon-example.jar
 控制台输出:
               402 Sat Jun 20 16:25:14 CST 2009 META-INF/MANIFEST.MF  
               532 Sat Jun 20 16:25:14 CST 2009 META-INF/WWW_GLODON.SF  
               889 Sat Jun 20 16:25:14 CST 2009 META-INF/WWW_GLODON.RSA  
      sm       590 Wed Dec 10 13:03:42 CST 2014 org/glodon/security/Security.class  
        
            X.509, CN=www.glodon.com, OU=glodon, O=glodon, L=BeiJing, ST=BeiJing, C=CN  
            [证书将在 09-9-18 下午3:27 到期]  
        
      sm       705 Tue Dec 16 18:00:56 CST 2014 org/glodon/example/Main$1.class  
        
            X.509, CN=www.glodon.com, OU=glodon, O=glodon, L=BeiJing, ST=BeiJing, C=CN  
            [证书将在 09-9-18 下午3:27 到期]  
        
      sm       779 Tue Dec 16 18:00:56 CST 2014 org/glodon/example/Main$2.class  
        
            X.509, CN=www.glodon.com, OU=glodon, O=glodon, L=BeiJing, ST=BeiJing, C=CN  
            [证书将在 09-9-18 下午3:27 到期]  
        
      sm     12672 Tue Dec 16 18:00:56 CST 2014 org/glodon/example/Main.class  
        
            X.509, CN=www.glodon.com, OU=glodon, O=glodon, L=BeiJing, ST=BeiJing, C=CN  
            [证书将在 09-9-18 下午3:27 到期]  
        
        
        s = 已验证签名  
        m = 在清单中列出条目  
        k = 在密钥库中至少找到了一个证书  
        i = 在身份作用域内至少找到了一个证书  
        
      jar 已验证。  
        
      警告:  
      此 jar 包含签名者证书将在六个月内过期的条目。  
 

从以下版本开始:
3.0
作者:
何明旺
另请参见:
RSAUtil, RSASignUtil

字段摘要
static String KEY_STORE
          Java密钥库(Java 密钥库,JKS)KEY_STORE
static String PKCS12
           
static String X509
           
 
构造方法摘要
CertificateUtil()
           
 
方法摘要
static Certificate getCertificate(String certificatePath)
          获得证书
static Certificate getCertificate(String keyStorePath, String alias, String password)
          根据密钥库获得证书
static KeyStore getKeyStore(String keyStorePath, String password)
          获得密钥库
static PrivateKey getPrivateKey(String keyStorePath, String alias, String password)
          根据密钥库获得私钥
static PublicKey getPublicKey(String certificatePath)
          根据证书获得公钥
static String getSigAlgName(String keyStorePath, String alias, String password)
          根据密钥库获取其签名算法
static boolean verifyCertificate(Date date, String keyStorePath, String alias, String password)
          验证密钥库对应的数字证书是在给定的日期是否有效
static boolean verifyCertificate(String certificatePath)
          验证数字证书当前是否有效
static boolean verifyCertificate(String certificatePath, Date date)
          验证数字证书是在给定的日期是否有效
static boolean verifyCertificate(String keyStorePath, String alias, String password)
          验证密钥库对应的数字证书当前是否有效
static boolean verifyCertificate(X509Certificate certificate)
          校验证书当前是否有效
static boolean verifyCertificate(X509Certificate certificate, Date date)
          验证证书是否过期或无效
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

PKCS12

public static final String PKCS12
另请参见:
常量字段值

KEY_STORE

public static final String KEY_STORE
Java密钥库(Java 密钥库,JKS)KEY_STORE

另请参见:
常量字段值

X509

public static final String X509
另请参见:
常量字段值
构造方法详细信息

CertificateUtil

public CertificateUtil()
方法详细信息

getKeyStore

public static KeyStore getKeyStore(String keyStorePath,
                                   String password)
获得密钥库

参数:
keyStorePath - 密钥库存储路径
password - 密钥库密码
返回:

getPrivateKey

public static PrivateKey getPrivateKey(String keyStorePath,
                                       String alias,
                                       String password)
根据密钥库获得私钥

参数:
keyStorePath - 密钥库存储路径
alias - 密钥库别名
password - 密钥库密码
返回:

getPublicKey

public static PublicKey getPublicKey(String certificatePath)
根据证书获得公钥

参数:
certificatePath - 证书存储路径
返回:

getCertificate

public static Certificate getCertificate(String certificatePath)
获得证书

参数:
certificatePath - 证书存储路径
返回:

getCertificate

public static Certificate getCertificate(String keyStorePath,
                                         String alias,
                                         String password)
根据密钥库获得证书

参数:
keyStorePath - 密钥库存储路径
alias - 密钥库别名
password - 密钥库密码
返回:

verifyCertificate

public static boolean verifyCertificate(String certificatePath)
验证数字证书当前是否有效

参数:
certificatePath - 证书存储路径
返回:

verifyCertificate

public static boolean verifyCertificate(String certificatePath,
                                        Date date)
验证数字证书是在给定的日期是否有效

参数:
date - 日期
certificatePath - 证书存储路径
返回:

verifyCertificate

public static boolean verifyCertificate(X509Certificate certificate)
校验证书当前是否有效

参数:
certificate - 证书
返回:

verifyCertificate

public static boolean verifyCertificate(X509Certificate certificate,
                                        Date date)
验证证书是否过期或无效

参数:
date - 日期
certificate - 证书
返回:

verifyCertificate

public static boolean verifyCertificate(String keyStorePath,
                                        String alias,
                                        String password)
验证密钥库对应的数字证书当前是否有效

参数:
keyStorePath - 密钥库存储路径
alias - 密钥库别名
password - 密钥库密码
返回:

verifyCertificate

public static boolean verifyCertificate(Date date,
                                        String keyStorePath,
                                        String alias,
                                        String password)
验证密钥库对应的数字证书是在给定的日期是否有效

参数:
keyStorePath - 密钥库存储路径
alias - 密钥库别名
password - 密钥库密码
返回:

getSigAlgName

public static String getSigAlgName(String keyStorePath,
                                   String alias,
                                   String password)
根据密钥库获取其签名算法

参数:
keyStorePath - 密钥库存储路径
alias - 密钥库别名
password - 密钥库密码
返回:


Copyright © 2014 广联达软件股份有限公司(Glodon Software Co., Ltd.). All rights reserved.