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支持的最全的参考文档
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
2、 在tomcat的bin目录下 catalina.bat 文件中,添加 -Dfile.encoding=UTF-8 set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%
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