java安全体系之JCA、JCE、JAAS、JSSE及其关系
首先、如果是运行在internet上的系统,并且如果是个涉及到利益性的系统,不可避免的会遭受各种攻击(我们公司的很多系统从OS到DB到webapp就实时有收到攻击和破解),所以尽可能保证安全性将不再是架构师和安全部门唯一应该考虑的事,所有的开发、运维都应该有相应的安全意识。在文本中,将普及下java的安全体系。
java安全体系包括四个部分:JCA、JCE、JSSE、JAAS。
JCA,包括了一个提供者架构以及的数字签名、消息摘要、认证、加密、密钥生成与管理、安全随机数产生等的一系列API,它本身不负责算法的具体实现,任何第三方都可以提供具体的实现并在运行时加载,如下:

这些接口使得开发者可以方便的将安全集成到应用程序中。JDK中的其他加密通信库很多使用了JCA提供者架构,包括JSSE,SASL,JGSS等。JCA提供的核心类和接口包括如下:
- the
ProviderandSecurityclasses, - the
SecureRandom,MessageDigest,Signature,Cipher,Mac,KeyFactory,SecretKeyFactory,KeyPairGenerator,KeyGenerator,KeyAgreement,AlgorithmParameters,AlgorithmParameterGenerator,KeyStore, andCertificateFactory, engine classes, - the
Keyinterfaces and classes
详细可见http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html
JSSE,简单地说,JSSE是SSL和TLS的java版本框架和实现,提供了数据加密,服务器认证,客户端认证,消息完整性特性,可支持HTTP、telnet、FTP和TCPIP。通过抽象底层的安全算法和握手机制,JSSE最小化了开发SSL应用的复杂性。JSSE提供的加密特性包括:

JSSE的主要类和接口在javax.net和javax.net.ssl中,详细可参考http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html。关于SSL的详细说明,可参考http://www.cnblogs.com/zhjh256/p/6287679.html
JAAS,应该来说,在实际中,JAAS的使用频率并没有另外三个的高,如果需要详细了解,可参考https://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/JAASRefGuide.html。
JCE,和JCA、JSSE不同,JCE不包含在标准的JDK安装包中,需要从http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html独立下载。
在java加解密中,除了jdk自带的外,另外两个主要的加解密算法的提供者为bouncy castle和apache common codec,它们提供了额外的算法以及在JDK基础上提高了易用性。
java根证书仓库,单独的TLS库是没有什么用的,所以无论是JVM厂商、浏览器厂商、OS厂商通常都会在各自的发行包中包含已经通过认证的根证书列表,在java中体现在truststore中,也就是TrustManagerFactory。
最后,Keytool。因为java不在单独的文件里面存储证书和私钥,而是打包在专有的keystore中,所以就java而言,keytool也算是关键的一部分。
java安全体系之JCA、JCE、JAAS、JSSE及其关系的更多相关文章
- Java技术体系图
Java程序员高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变 参数.可变返回类型.增强循环.静态导入 核心编程 ...
- Java 技术体系图
Java 程序员 高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变 参数.可变返回类型.增强循环.静态导入 核心编程 IO.多线程.实体类. 集合类.正则表达式. XML 和属性文件 图形编 ...
- JAVA技术体系发展路线
JAVA技术体系 1.1 Java程序员 ·高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变参数.可变返回类型.增强循环.静态导入 ·核心编程 IO.多线程.实体类.集合类.正则表达式.XM ...
- Java知识体系
Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...
- JAVA基础知识之IO——Java IO体系及常用类
Java IO体系 个人觉得可以用"字节流操作类和字符流操作类组成了Java IO体系"来高度概括Java IO体系. 借用几张网络图片来说明(图片来自 http://blog.c ...
- Java知识体系纲要
最近一段时间,把Java主要涉及到的大概念都大致学习了一遍,为了让自己能够更好地形成对Java知识体系的整体把握,先把学过的知识点添加到自己画的思维导图上. 整个Java知识体系的划分,我自己主要将它 ...
- Java 异常体系(美团面试)
Java把异常作为一种类,当做对象来处理.所有异常类的基类是Throwable类,两大子类分别是Error和Exception. 系统错误由Java虚拟机抛出,用Error类表示.Error类描述的是 ...
- java 日志体系目录
java 日志体系目录 1.1 java 日志体系(一)log4j1.log4j2.logback.jul.jcl.slf4j 1.2 java 日志体系(二)jcl 和 slf4j 2.1 java ...
- java 日志体系(四)log4j 源码分析
java 日志体系(四)log4j 源码分析 logback.log4j2.jul 都是在 log4j 的基础上扩展的,其实现的逻辑都差不多,下面以 log4j 为例剖析一下日志框架的基本组件. 一. ...
随机推荐
- 扩展KMP算法小记
参考来自<拓展kmp算法总结>:http://blog.csdn.net/dyx404514/article/details/41831947 扩展KMP解决的问题: 定义母串S和子串T, ...
- HDU 1083 - Courses - [匈牙利算法模板题]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1083 Time Limit: 20000/10000 MS (Java/Others) M ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises)
A. Fraction 题目链接:http://codeforces.com/contest/854/problem/A 题目意思:给出一个数n,求两个数a+b=n,且a/b不可约分,如果存在多组满足 ...
- hadoop(角色)各个组件配置信息
1)namenode: core-site.xml文件中决定: <property> <name>fs.def ...
- 对爱奇艺PC Web主站来说,良好的SEO能够帮助其获得更多的搜索流量,因而页面上一些非常重要的内容仍然需要依靠服务端进行渲染,由于另外开发一套基于Node的SSR后台成本较高,而乐趣(基于java和velocity模板引擎)平台作为渲染系统已经十分成熟且运行稳定,在充分试验后,我们决定在Uniqy中使用服务端同步与客户端浏览器异步二次渲染相结合的方式,结合Vue2.0提供的 slot插槽机制,很
https://mp.weixin.qq.com/s/eB20BoqzENO_oNk8eDg4Eg 干货|爱奇艺PC Web新框架实践 原创: 前端研发团队 爱奇艺技术产品团队 昨天
- JS中"属性"的用法
JS的属性和C#有相似之处 ! 使用get和set来进行属性的获取和设置 var obj={ a:"1", get age(){ return obj.a; }, set age ...
- LightOj 1265 - Island of Survival(概率)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1265 题目大意:有一个生存游戏,里面t只老虎,d只鹿,还有一个人,每天都要有两个生物碰 ...
- Catch---hdu3478(染色法判断是否含有奇环)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3478 题意:有n个路口,m条街,一小偷某一时刻从路口 s 开始逃跑,下一时刻都跑沿着街跑到另一路口,问 ...
- ubuntu 下关闭apache服务自动启动
最近在自己的ubuntu安装了apache服务器,每次开机的时候通过: ps -A 命令发现apache服务总是自动启动,如下: 本来自己的电脑内存就小,现在也不用这个服务,所以想让apa ...
- JDK 伪共享解决方案
关于AtomicReference AtomicReference是由JAVA5引入的,用于对一个对象引用进行原子操作,我们可以看到AtomicReference的实现是用CAS技术对引用进行指令级别 ...