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 为例剖析一下日志框架的基本组件. 一. ...
随机推荐
- POJ-1179 Polygon (动态规划)
Polygon Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5293 Accepted: 2238 Description P ...
- hdu1540 Tunnel Warfare【线段树】
During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast a ...
- Gym-101375C MaratonIME eats japanese food 初始化struct技巧
题意:两种操作:A ,R 分别有三个参数,表示放或者移走(x,y)处半径为r的盘子.5000次操作,每次操作判断是否可行. 题解:两种情况不行:1.相交2.放到桌子外面.5000的数据直接模拟,删除操 ...
- Oracle备份恢复之rman备份oracle数据库
备份需求和rman备份 oracle数据库的备份相关问答: 1)备份时数据库处于何种状态? 备份时数据库处于OPEN状态,这样数据库可以正常工作. 2)备份的数据备份在什么地方? 备份在本地磁盘. 3 ...
- garbage collection - 垃圾收集 生命周期 跟踪内存使用
Professional.JavaScript.for.Web.Developers.3rd.Edition.Jan.2012 JavaScript is a garbage-collected la ...
- 洛谷P3806 点分治1 & POJ1741 Tree & CF161D Distance in Tree
正解:点分治 解题报告: 传送门1! 传送门2! 传送门3! 点分治板子有点多,,,分开写题解的话就显得很空旷,不写又不太好毕竟初学还是要多写下题解便于理解 于是灵巧发挥压行选手习惯,开始压题解(bu ...
- 【PyQt5-Qt Designer】QComboBox(下拉列表框) 使用模板
import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * ###### ...
- C#基础笔记(第十一天)
1.复习字符串(1)字符串的不可变性(2)字符串的方法:1)Split() 分割 把字符串中不想要的内容分割掉 返回一个字符串类型的数组 可以添加StringSplitOption.RemoveEmp ...
- SpringBoot打成的jar包发布,shell关闭之后一直在服务器运行
1:可以编写shell脚本, 切换到执行的jar包目录,然后使用nohup 让改命令在服务器一直运行 #!/bin/bash cd /srv/ftp/public nohup java -jar l ...
- 自定义WordPress文件上传路径
自WordPress 3.5版本开始,隐藏了后台媒体设置页面的“默认上传路径和文件的完整URL地址”选项,可以通过下面的代码将该选项调出来. 将下面的代码添加到当前主题functions.php文件中 ...