数字证书: 由CA(大家都信赖的第三方机构)派发,内容包括:
(1).Common Name(证书所有人姓名,简称CN,其实就是证书的名字)
(2).Version(版本,现在一般是V3了)
(3).Issuer(发证机关)
(4).Validity(有效日期)
(5).Subject(证书信息,你会发现它和Issuer里面的内容是一样的)
(6).Subject's Public Key Info(证书所有人的公钥)
(7).Extension(扩展信息)
(8).Certificate Signature Algorithm(公钥加密算法)
(9).证书的数字签名(生成步骤是: 先将证书内容hash,再对hash结果用CA的私钥和证书中的加密算法加密,得到的就是数字签名)
验证证书是否为真的方法(这个验证是为了保证证书的内容真的是CA所写,而不是伪造的,比如说证书的内容上写了允许xx使用xx公司的xx功能):
将证书里的数字签名使用CA的公钥解密得到A,同时对证书内容进行hash得到B,比对A和B是否一致,如果一致,则认为证书是CA颁发的,即真的,
所以说数字签名的作用是用来验证证书是否为真(证书为真即代表里面的内容都是真的,包括证书所有人公钥等)
验证证书持有人是否为本人的方法(为了避免真的证书被人盗用,所以也需要这个验证):
验证方使用证书中的公钥加密一段信息发给 证书持有人,如果证书持有人是本人,那他肯定有证书中公钥对应的私钥,那他就肯定能解密这段信息,
只要把解密的信息再发给验证方,即可证明自己是本人,反之,则认为不是本人
通过以上2个验证,即可以保证发过来的证书是真的,并且持有人也是本人,
-------------------------------------------------------------------------
ssl: 是一种间于传输层(比如TCP/IP)和应用层(比如HTTP)的协议. 它通过"握手协议"和"传输协议"来解决传输安全的问题.
sasl: 是作用在认证层上,是一种身份认证框架,sasl验证架构决定服务器本身如何存储客户端的身份证书以及如何核验客户端提供的密码。
如果客户端能成功通过验证,服务器端就能确定用户的身份, 并借此决定用户具有怎样的权限。
sasl的常见具体实现有plain、kerberos等, 就好比slf4j是框架,log4j是具体实现
如果要将Kerberos与SASL一起使用,则将需要另一种间接级别:GSSAPI(最常与Kerberos一起使用,但也可以允许其他机制)。
SSL和SASL区别:
1. SASL用于认证,SSL主要用于对传输的数据进行加密
2. SASL允许选择不同的机制来对客户端进行身份验证,如可以选择使用GSSAPI,Kerberos,NTLM等,而SSL被绑定为基于证书进行身份验证。
JAAS: 是用于处理身份验证和授权的通用Java框架