https客户端证书.p12maven打包后tomcat启动不正确

本文介绍如何使用keytool生成客户端证书,并通过配置Maven解决证书验证失败的问题。具体步骤包括生成客户端证书库、导出证书文件及配置Maven资源插件。

解决客户端证书验证通不过问题

背景:
      三方https接口提供方需要对我们客户端证书做认证,这是我们服务器里面导入client.p12证书,发给三方一个client.cer公钥验证。

生成客户端证书

1. 生成客户端证书库

keytool -validity 3650 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore /Users/zhengyong/test/client.p12 -dname "CN=client,OU=zhengyong,O= zhengyong,L=HANGZHOU,ST=ZHEJIANG,c=cn" -storepass 123456 -keypass 123456
结果:
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 3,650 天):
CN=client, OU=zhengyong, O=zhengyong, L=HANGZHOU, ST=ZHEJIANG, C=cn
[正在存储/Users/zhengyong/test/client.p12]
2. 生成客户端证书
keytool -export -v -alias client -keystore /Users/zhengyong/test/client.p12 -storetype PKCS12 -storepass 123456 -rfc -file /Users/zhengyong/test/client.cer
结果:
存储在文件 </Users/zhengyong/test/client.cer> 中的证书


调用:

    /**
     * 获取客户端认证文件
     * @return
     */
    public KeyStore getKeyStore() {
    	KeyStore ks = null;
        InputStream in = null;
        URL url = CommonHttpServiceClient.class.getClassLoader().getResource(CERTIFICATION_STORE);
        if(null == url){
        	logger.warn("Loading KeyStore url null {}");
        	return null;
        }
        String address = url.getPath();
		try {
			logger.info("Loading KeyStore {}...", address);
			File file = new File(address);
			in = new FileInputStream(file);
			ks = KeyStore.getInstance(CERTIFICATION_TYPE);
			ks.load(in, CERTIFICATION_PASSWORD.toCharArray());
		} catch (Exception e) {
			logger.error("Loading KeyStore error.", e);
		} finally {
			if (null != in) {
				try {
					in.close();
				} catch (IOException e) {
					logger.error("close Loading KeyStore InputStream error.", e);
				}
			}
		}
		return ks;
	}
            SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(null,
                    new TrustSelfSignedStrategy()).loadKeyMaterial(getKeyStore(), CERTIFICATION_PASSWORD.toCharArray())
                    .build();


如果遇见异常:原因是因为maven打包对证书进行了utf-8编码,导致证书出了问题

javax.net.ssl.SSLKeyException: BAD_CERTIFICATE

解决办法

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <!-- specify UTF-8, ISO-8859-1 or any other file encoding -->
                        <encoding>UTF-8</encoding>
                        <nonFilteredFileExtensions>
                            <nonFilteredFileExtension>p12</nonFilteredFileExtension>
                        </nonFilteredFileExtensions>
                    </configuration>
                </plugin>


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值