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 为例剖析一下日志框架的基本组件. 一. ...
随机推荐
- ibatitsnet 因为会Dao.config 配置数据版本太低导致的问题
ProjectReview.Test.SqlMapTest.TestSqlMap:IBatisNet.Common.Exceptions.ConfigurationException : - The ...
- 注意:darknet安装
参考:https://github.com/AlexeyAB/darknet # 一.安装 ## linux下安装 - 在darknet目录下执行make ## windows下安装 1. 安装vs2 ...
- LoadRunner-参数化(添加参数值)
录制完脚本后,想要对脚本重复使用需要对某些值设定为参数,如accounts和password. 1.选中需要参数化的accounts值,点击右键->选择Replace with a parame ...
- Python开发【模块】:Weakref
Weak references 前言: weakref模块允许python开发者创建弱引用对象. 再接下来中,术语referent代表被弱引用所引用的对象. 一个弱引用对于对象是不能够保持对象存活的: ...
- django源码笔记-【2】(转)
add by zhj: 在原文的基础上有修改 原文:http://www.cnblogs.com/gaott/archive/2012/02/28/2371238.html 上一期完理解了WSGI处理 ...
- React-生命周期的相关介绍
1.mounting/组件插入相关 (1)componentWillMount 模板插入前 (2)render 模板插入 (3)componentDidMount 模板插入后 2.Updating/ ...
- JavaScript如何实现拖放功能
1.在学习ExtJs时,对其拖放功能感到很陌生,然后找了个拖放功能实现. 转载地址 2.拖拽的基本原理就是根据鼠标的移动来移动被拖拽的元素.鼠标的移动也就是x.y坐标的变化:元素的移动就是style. ...
- tcp3次握手,https加密,ca认证
参考: https://baijiahao.baidu.com/s?id=1570143475599137&wfr=spider&for=pc
- (3.3)mysql基础深入——mysql启动深入分析
基础:(2.1)学习笔记之mysql基本操作(启动与关闭) 0.mysql启动的 3种方式 (1)mysql.server (2)mysqld_safe (3)mysqld 1.启动分析 [1.1]概 ...
- 测试人员需要了解的sql知识(提高篇)
上一篇写了一些基础的sql知识,这里再深挖一些常用的 ------------------------------------------------------------------骄傲的分割线- ...