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 为例剖析一下日志框架的基本组件. 一. ...
随机推荐
- Centos清除IP
要把配置好的ip清除掉,可以使用以下命令: ip addr flush dev eth0 如果系统中没有ip这个命令,可以使用更简单的: ifconfig eth0 0.0.0.0 可以用于PPTP拨 ...
- java中List的toArray方法
把List转换成某种类型的数组,就拿String类型来做例子吧,有以下两种方式: //方法1,使用不带参数的toArray方法 String[] arr1=new String[list.size() ...
- CodeForce 832A Sasha and Sticks
A. Sasha and Sticks time limit per test2 seconds memory limit per test256 megabytes inputstandard in ...
- MongoDB-3.4安装文档
1.建立目录 2.将解压文件cp到步骤1建立目录下 mongodb-win32-x86_64-enterprise-windows-64-3.4.1.zip 3.配置环境变量 4.启动mongodb服 ...
- iOS - UITableView 编辑(cell的插入, 删除, 移动)
UITableView Cell的插入/删除 核心API Class : UITableView Delegate : UITableViewDataSource, UITableViewDelega ...
- 转:Java中字符串split() 的使用方法.
原文地址:https://blog.csdn.net/qq_27093465/article/details/54910323 挺有意思的一个问题 先看下面的方法,事先预测一下,经过split方法,按 ...
- redis 数据迁移
最近有个项目因为要搬迁服务器的原因,去找了服务器公司的运维,需要收费,于是果断决定自己实现这个功能.现在百度上已经一大把redis数据库迁移的教程,大部分是利用主从复制或者利用redis的RDB备份之 ...
- lua 获取指定目录下指定后缀文件名
lfs库是很好的选择,可惜不会编译,无奈只能自己写个简单的lua库.代码如下: #include <io.h> #include <stdio.h> #include &quo ...
- django源码笔记-【2】(转)
add by zhj: 在原文的基础上有修改 原文:http://www.cnblogs.com/gaott/archive/2012/02/28/2371238.html 上一期完理解了WSGI处理 ...
- 8 jmeter之集合点
集合点:集合点用以同步虚拟用户,以便恰好在同一时刻执行任务.在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户 ...