java 证书

1 创建

keytool -genkey -alias zendai -keyalg RSA -keysize 1024 -keypass changeit -validity 365 -keystore keystore\zendai.keystore -storepass michaelpwd

  姓氏:uc.zendai.com  (要与访问cas server域名相同,非常重要)

  单位名称:zendai.com

  组织名:zendai

  城市:SH

  身份:SH

  国家:CN

2 导出

keytool -export -alias zendai -keystore keystore\zendai.keystore -file keystore\zendai.crt -storepass changeit

3 删除

keytool -delete -alias zendai -keystore D:\j2ee\jdk1.6.0_30\jre\lib\security\cacerts

pwd:changeit

4 导入

keytool -import -keystore D:\j2ee\jdk1.6.0_30\jre\lib\security\cacerts -file d:\sso\ssodemo.crt -alias ssodemo

pwd:changeit

5 查看所有证书

keytool -list -keystore D:\j2ee\jdk1.6.0_30\jre\lib\security\cacerts

pwd:changeit

 

注意:

CAS 证书制作经常容易出 PKIX path building failed:报错

解决方法:

1 检查导入的JDK是否是系统环境变量默认的JDK。

2 检查设置环境变量的JDK证书是否导入.

3 证书导入成功确认后,确认CAS SERVER 8443路径认证的 证书是否与导入的证书一致.

 

基本都是这三个问题造成的 尤其是前两个会害死人.

Java中进行SSL证书验证,可以使用Java Secure Socket Extension(JSSE)框架提供的工具类来实现。 JSSE提供了一个名为javax.net.ssl.SSLSocketFactory的类,它可以创建SSL连接,并提供了一些方法来验证SSL证书。其中,通过设置javax.net.ssl.TrustManager接口的实现类来进行证书验证。 下面是一个简单的示例代码,用于验证SSL服务器的证书是否有效: ``` import java.io.*; import java.net.*; import javax.net.ssl.*; public class SSLTest { public static void main(String[] args) throws Exception { String host = "example.com"; int port = 443; // 创建SSL连接 SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket socket = (SSLSocket) factory.createSocket(host, port); // 设置证书验证 SSLContext context = SSLContext.getInstance("TLS"); context.init(null, new TrustManager[] { new X509TrustManager() { public void checkClientTrusted(X509Certificate[] chain, String authType) {} public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { // 验证证书是否有效 chain[0].checkValidity(); } public X509Certificate[] getAcceptedIssuers() { return null; } } }, null); socket.startHandshake(); socket.close(); } } ``` 在上面的代码中,我们创建了一个SSLSocket对象,并设置了证书验证,其中X509TrustManager接口的实现类用于验证证书是否有效。在checkServerTrusted方法中,我们检查服务器证书链中的第一个证书是否在有效期内,如果不在有效期内,则会抛出CertificateException异常。 需要注意的是,以上示例中的证书验证并不安全,因为它只是检查服务器证书链中的第一个证书是否在有效期内,并没有验证证书的真实性,因此建议在生产环境中使用更安全的证书验证机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值