JSSE支持数据加密、服务器端身份验证、数据完整性以及可选的客户端身份验证。使用JSSE,能保证采用各种应用层协议(比如HTTP、Telnet和FTP等)的客户程序与服务器程序安全地交换数据。 ---- JSSE API 简介 JSSE封装了底层复杂的安全通信细节,使得开发人员能方便地都它来开发安全的网络应用程序。 com.sun.net.ssl包:包括Oracle公司提供的JSSE的实现类。 JSSE具有以下重要特征: 纯粹用Java语言编写。 可以出口到大多数国家。 提供了支持SSL的JSSE API和JSSE实现。 提供了支持TLS的JSSE API和JSSE实现。 JSSE的具体实现会支持一些常用的加密算法,比如RSA(加密长度2048位)、RC4(密钥长度128位)和DH(密钥长度1024位)。 下面展示了JSSE API的主要类框图。
(JSSESocketFactory.java:398) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore (JSSESocketFactory.java:297) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers (JSSESocketFactory.java:555) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers :440) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java (JSSESocketFactory.java:398) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore
转自:http://www.blogjava.NET/etlan/archive/2006/06/29/55767.html 摘 要 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对 但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点。本文在简要介绍JSSE的基础上提出了两种解决该问题的方法。 本文将在简要介绍JSSE的基础上,详细描述使用JSSE访问HTTPS的方法,主要说明了如何访问带有未经验证证书的HTTPS站点。 JSSE简介 Java安全套接扩展 (Java Secure Socket Extension, JSSE)是实现Internet安全通信的一系列包的集合。 JSSE是一个开放的标准,不只是Sun公司才能实现一个JSSE,事实上其他公司有自己实现的JSSE。
1 背景 Java自身通过JCE和JSSE支持标准的SSL协议,但并不支持国密SSL协议。 本文描述了Java使用国密JCE和国密JSSE开发一个简单的客户端程序,连接国密Web网站,发送HTTP请求,并接收HTTP应答。 2 环境 JRE是jre8。 国密JCE和国密JSSE。下载参https://www.gmssl.cn/gmssl/index.jsp? (), 2); 其中要使用国密SSL来连接 String protocol = cn.gmssl.jsse.provider.GMJSSE.GMSSLv11; String provider = cn.gmssl.jsse.provider.GMJSSE.NAME; SSLContext ctx = SSLContext.getInstance(protocol, provider);
org.apache.tomcat.util.file.ConfigFileLoader.getInputStream(ConfigFileLoader.java:100) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore (JSSESocketFactory.java:470) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java :381) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java: 634) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:574 ) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:519) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket
JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents/Home 注:1.6.0_38-b04-436.jdk目录名字与安装的jdk版本有关 rt.jar、jsse.jar rt.jar已经集成到/Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents/Classes/classes.jar,jsse.jar 也在Classes目录下 建议把classes.jar和jsse.jar建立软连接到/Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents
String mailhost) { this.mailhost = mailhost; properties.setProperty("mail.host", this.mailhost); } } 2.JSSE JSSEProvider extends Provider { public JSSEProvider() { super("HarmonyJSSE", 1.0, "Harmony JSSE { put("SSLContext.TLS", "org.apache.harmony.xnet.provider.jsse.SSLContextImpl put("KeyManagerFactory.X509", "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl put("TrustManagerFactory.X509", "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl
2、修改 catalina.bat 文件 将 set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" 修改为 set "JAVA_OPTS=%JAVA_OPTS % %JSSE_OPTS% -Dfile.encoding=UTF-8" ,如图: ?
SocketInputStream.java:182) at java.net.SocketInputStream.read(SocketInputStream.java:152) at com.ibm.jsse2 at com.ibm.jsse2.as.startHandshake(as.java:454) ... ... www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs /matchsslcontext_tls.html 文档大意是,IBM SDK 系统属性 com.ibm.jsse2.overrideDefaultTLS=[true|false] 有 true 和 false 最终在 Jenkins 的 agent 配置里将 JVM Options 区域加上这句 -Dcom.ibm.jsse2.overrideDefaultTLS=true,断开连接,重新启动 agent,再次执行
5.3处理HTTPS协议 HttpClient提供了对SSL的支持,在使用SSL之前必须安装JSSE。 在Sun提供的1.4以后的版本中,JSSE已经集成到JDK中,如果你使用的是JDK1.4以前的版本则必须安装JSSE。JSSE不同的厂家有不同的实现。 方法1,导入证书 安装JSSE (如果你使用的JDK版本是1.4或者1.4以上就可以跳过这一步)。本文以IBM的JSSE为例子说明。先到IBM网站上下载JSSE的安装包。 出现这个异常可能是因为没有加JSSEProvider,如果用的是IBM的JSSE Provider,在程序中加入这样的一行: if(Security.getProvider("com.ibm.jsse.IBMJSSEProvider 出现这个异常表明你的JSSE应该已经安装正确,但是可能因为你没有把证书导入到当前运行JRE的keystore中,请按照前面介绍的步骤来导入你的证书。
test.ca # openssl_password : changeme # openssl_protocol : -sslv2 -sslv3 # openssl_cipher_suite : # JSSE # jsse_keystore_type : jks # jsse_keystore_file : /etc/resin/keys/server.keystore # jsse_keystore_password cipher-suite> # SSL协议版本 <protocol>tlsv1 tls1.1 tls1.2</protocol> </openssl> </http> # - JSSE SSL协议版本 <protocol>-sslv3</protocol> # 启用客户端验证 <verify-client>required</verify-client> </jsse-ssl - <password>test123</password> - </openssl> - </http> --> <http address="*" port="443"> <jsse-ssl
Either JSSE or OpenSSL style configuration may be used regardless of the SSLImplementation selected JSSE style configuration is used below. --> <! Either JSSE or OpenSSL style configuration may be used.
1.1 Connector on port 8443 This connector uses the BIO implementation that requires the JSSE JSSE style configuration is used below. --> <! Either JSSE or OpenSSL style configuration may be used. JSSE style configuration is used below. --> <! Either JSSE or OpenSSL style configuration may be used.
Either JSSE or OpenSSL style configuration may be used regardless of the SSLImplementation selected JSSE style configuration is used below. --> <! Either JSSE or OpenSSL style configuration may be used.
%\lib\jnet .ja r;%JSSE_HOME%\lib\jsse.jar :noJsse set CLASSPATH=% (JSSE)是否已安装,JSSE_HOME 变量是否设置正确。 如果找到 JSSE_HOME 变量,则将其添加到 CLASSPATH 变量中 if "%JSSE_HOME%" == "" goto noJsse set CLASSPATH=%CLASSPATH%;% JSSE_HOME%\lib\jcert.jar;%JSSE_HOME%\lib\jnet .ja r;%JSSE_HOME%\lib\jsse.jar If JSSE_HOME is not found " ]; then CLASSPATH="$CLASSPATH":"$JSSE_HOME"/lib/jcert.jar:"$JSSE_HOME"/lib/j net .jar:"$JSSE_HOME"/
SSL Customizing the Default Keystores and Truststores, Store Types, and Store Passwords Customizing JSSE ,这个表格列出了一些SSL相关的System Properties Creating a Keystore to Use with JSSE keytool Monitor Java with JMX Java Secure Socket Extension (JSSE) Reference Guide,这是Java对于SSL支持的最全的参考文档
2、 在tomcat的bin目录下 catalina.bat 文件中,添加 -Dfile.encoding=UTF-8 set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%
misconfigured (the out of the box config is wrong since it defaults to the Certicom provider instead of JSSE Assuming there is a retry option where it failed, try making the node manager use JSSE and restart it I can't remember which one, but one of them will make the node manager use JSSE: -Dweblogic.ssl.JSSEEnabled
java\jdk1.8.0_25\jre\lib\jfr.jar;C:\java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\java\jdk1.8.0_25\jre\lib\jsse.jar java\jdk1.8.0_25\jre\lib\jfr.jar;C:\java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\java\jdk1.8.0_25\jre\lib\jsse.jar java\jdk1.8.0_25\jre\lib\jfr.jar;C:\java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\java\jdk1.8.0_25\jre\lib\jsse.jar
rt.jar - C:\Program Files\Java\jre1.8.0_144\lib\sunrsasign.jar - C:\Program Files\Java\jre1.8.0_144\lib\jsse.jar rt.jar - C:\Program Files\Java\jre1.8.0_144\lib\sunrsasign.jar - C:\Program Files\Java\jre1.8.0_144\lib\jsse.jar rt.jar - C:\Program Files\Java\jre1.8.0_144\lib\sunrsasign.jar - C:\Program Files\Java\jre1.8.0_144\lib\jsse.jar rt.jar - C:\Program Files\Java\jre1.8.0_144\lib\sunrsasign.jar - C:\Program Files\Java\jre1.8.0_144\lib\jsse.jar